可変個引数をそれで置き換えるのはきつくないか。
こんな感じじゃないと。

#ifdef _UNICODE
typedef wchar_t TCHAR;
#define _vstprintf vswprintf
#else
typedef char TCHAR;
#define _vstprintf vsprintf
#endif

int _stprintf_s(const TCHAR* buf, size_t /* ignore */, const TCHAR* format, ...) {
 va_list args;
 va_start(args, format);
 int ret = _vstprintf(buf, format, args);
 va_end(args);
 return ret;
}