1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
#include "./trace.h"
#include <strsafe.h>
#ifdef _DEBUG
#ifdef __cplusplus
extern "C" {
#endif /*__cplusplus*/
void DebugPrintfW(LPCWSTR format, ...)
{
va_list argList;
wchar_t *pstr(NULL);
void *buffer;
size_t allocated(0), remaining(0);
int attempt(0);
va_start(argList, format);
do
{
attempt++;
if(attempt)
{
allocated += (512 * attempt);
buffer = realloc(pstr, allocated * sizeof(wchar_t));
if (NULL == buffer)
break;
pstr = (wchar_t*)buffer;
}
}
while (STRSAFE_E_INSUFFICIENT_BUFFER == StringCchVPrintfExW(pstr, allocated, NULL, &remaining,
STRSAFE_NULL_ON_FAILURE, format, argList));
OutputDebugStringW(pstr);
if (NULL != pstr)
free(pstr);
va_end(argList);
}
void DebugPrintfA(LPCSTR format, ...)
{
va_list argList;
char *pstr(NULL);
void *buffer;
size_t allocated(0), remaining(0);
int attempt(0);
va_start(argList, format);
do
{
attempt++;
if(attempt)
{
allocated += (512 * attempt);
buffer = realloc(pstr, allocated * sizeof(char));
if (NULL == buffer)
break;
pstr = (char*)buffer;
}
}
while (STRSAFE_E_INSUFFICIENT_BUFFER == StringCchVPrintfExA(pstr, allocated, NULL, &remaining,
STRSAFE_NULL_ON_FAILURE, format, argList));
OutputDebugStringA(pstr);
if (NULL != pstr)
free(pstr);
va_end(argList);
}
#ifdef __cplusplus
}
#endif /*__cplusplus*/
#endif /*_DEBUG*/
|