58{
59#ifdef __REACTOS__
60 skip(
"test_provider_init() can't be built until ReactOS has implementations for Perf* functions.\n");
61#else
62 static GUID test_set_guid = {0xdeadbeef, 0x0002, 0x0003, {0x0f, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00 ,0x0a}};
63 static GUID test_set_guid2 = {0xdeadbeef, 0x0003, 0x0003, {0x0f, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00 ,0x0a}};
64 static GUID test_guid = {0xdeadbeef, 0x0001, 0x0002, {0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00 ,0x0a}};
65 static struct
66 {
69 }
70 pc_template =
71 {
72 {{0}},
73 {
78 },
79 };
80
87
91 ok(prov == (
HANDLE)0xdeadbeef,
"Got unexpected prov %p.\n", prov);
92
96 ok(prov == (
HANDLE)0xdeadbeef,
"Got unexpected prov %p.\n", prov);
97
100 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
101 ok(prov != (
HANDLE)0xdeadbeef,
"Provider handle is not set.\n");
102
103 prov2 = prov;
105 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
106 ok(prov2 != prov,
"Got the same provider handle.\n");
107
109 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
110
111 if (0)
112 {
113
115 }
116
117
121 ok(!bret,
"Handle does not point to the data.\n");
122
123 pc_template.counterset.CounterSetGuid = test_set_guid;
124 pc_template.counterset.ProviderGuid = test_guid;
125 pc_template.counterset.NumCounters = 0;
129
130 pc_template.counterset.CounterSetGuid = test_set_guid;
131 pc_template.counterset.ProviderGuid = test_guid;
132 pc_template.counterset.NumCounters = 2;
135 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
136
137 pc_template.counterset.CounterSetGuid = test_set_guid2;
138
139 pc_template.counterset.ProviderGuid = test_set_guid;
140 pc_template.counterset.NumCounters = 1;
143 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
144
147
152
157
162
167 ok(
instance->InstanceId == 1,
"Got unexpected InstanceId %lu.\n",
instance->InstanceId);
168 ok(
instance->InstanceNameSize == 6,
"Got unexpected InstanceNameSize %lu.\n",
instance->InstanceNameSize);
171
173 "Got unexpected InstanceNameOffset %lu.\n",
instance->InstanceNameOffset);
175 "Got unexpected instance name %s.\n",
177 size = ((
sizeof(*instance) +
sizeof(
UINT64) * 2 +
instance->InstanceNameSize) + 7) & ~7;
179
181 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
183 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
184
187
188 ok(*(
void **)(
instance + 1) == &counter1,
"Got unexpected counter value %p.\n",
191 "Got unexpected counter value %p.\n", *(
void **)(
instance + 1));
192
194 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
195
197 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
198
199 memset( &prov_context, 0,
sizeof(prov_context) );
200 prov = (
HANDLE)0xdeadbeef;
203 ok(prov == (
HANDLE)0xdeadbeef,
"Got unexpected prov %p.\n", prov);
204
205 prov_context.
ContextSize =
sizeof(prov_context) + 1;
207 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
208 ok(prov != (
HANDLE)0xdeadbeef,
"Provider handle is not set.\n");
209
211 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
212#endif
213}
COMPILER_DEPENDENT_UINT64 UINT64
static HINSTANCE instance
#define GetCurrentProcess()
#define ERROR_INVALID_HANDLE
BOOL NTAPI IsBadWritePtr(IN LPVOID lp, IN UINT_PTR ucb)
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
ULONG WINAPI PerfStopProvider(HANDLE handle)
ULONG WINAPI PerfDeleteInstance(HANDLE provider, PERF_COUNTERSET_INSTANCE *block)
PERF_COUNTERSET_INSTANCE WINAPI * PerfCreateInstance(HANDLE handle, const GUID *guid, const WCHAR *name, ULONG id)
ULONG WINAPI PerfStartProvider(GUID *guid, PERFLIBREQUEST callback, HANDLE *provider)
ULONG WINAPI PerfSetCounterRefValue(HANDLE provider, PERF_COUNTERSET_INSTANCE *instance, ULONG counterid, void *address)
ULONG WINAPI PerfSetCounterSetInfo(HANDLE handle, PERF_COUNTERSET_INFO *template, ULONG size)
ULONG WINAPI PerfStartProviderEx(GUID *guid, PERF_PROVIDER_CONTEXT *context, HANDLE *provider)
#define ERROR_ALREADY_EXISTS
static ULONG WINAPI test_provider_callback(ULONG code, void *buffer, ULONG size)
struct _PERF_COUNTER_INFO PERF_COUNTER_INFO
#define PERF_COUNTERSET_SINGLE_INSTANCE
#define PERF_ATTRIB_BY_REFERENCE
#define IsEqualGUID(rguid1, rguid2)
DWORD WINAPI GetLastError(void)
#define PERF_DETAIL_NOVICE
#define PERF_COUNTER_COUNTER
#define DUPLICATE_SAME_ACCESS