43#define GET_FUNCTION(name) p##name = (void *)GetProcAddress(hadvapi, #name)
53 ok(0,
"Provider callback called.\n");
60 skip(
"test_provider_init() can't be built until ReactOS has implementations for Perf* functions.\n");
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}};
91 ok(prov == (
HANDLE)0xdeadbeef,
"Got unexpected prov %p.\n", prov);
96 ok(prov == (
HANDLE)0xdeadbeef,
"Got unexpected prov %p.\n", prov);
100 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
101 ok(prov != (
HANDLE)0xdeadbeef,
"Provider handle is not set.\n");
105 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
106 ok(prov2 != prov,
"Got the same provider handle.\n");
109 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
121 ok(!bret,
"Handle does not point to the data.\n");
123 pc_template.counterset.CounterSetGuid = test_set_guid;
124 pc_template.counterset.ProviderGuid = test_guid;
125 pc_template.counterset.NumCounters = 0;
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);
137 pc_template.counterset.CounterSetGuid = test_set_guid2;
139 pc_template.counterset.ProviderGuid = test_set_guid;
140 pc_template.counterset.NumCounters = 1;
143 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
167 ok(
instance->InstanceId == 1,
"Got unexpected InstanceId %lu.\n",
instance->InstanceId);
168 ok(
instance->InstanceNameSize == 6,
"Got unexpected InstanceNameSize %lu.\n",
instance->InstanceNameSize);
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;
181 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
183 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
188 ok(*(
void **)(
instance + 1) == &counter1,
"Got unexpected counter value %p.\n",
191 "Got unexpected counter value %p.\n", *(
void **)(
instance + 1));
194 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
197 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
199 memset( &prov_context, 0,
sizeof(prov_context) );
200 prov = (
HANDLE)0xdeadbeef;
203 ok(prov == (
HANDLE)0xdeadbeef,
"Got unexpected prov %p.\n", prov);
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");
211 ok(!
ret,
"Got unexpected ret %lu.\n",
ret);
215DEFINE_GUID(TestCounterGUID, 0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33);
219 return (
t / 10000) * 10000;
232 if (!pPerfOpenQueryHandle)
234 win_skip(
"PerfOpenQueryHandle not found.\n");
246 counter_id->CounterSetGuid = TestCounterGUID;
250 ret = pPerfAddCounters(
query, counter_id,
sizeof(*counter_id));
253 counter_id->Size =
sizeof(*counter_id);
254 ret = pPerfAddCounters(
query, counter_id, 8);
256 ret = pPerfAddCounters(
query, counter_id,
sizeof(*counter_id));
266 ok(
size ==
sizeof(dh),
"got size %lu.\n",
size);
268 ret = pPerfQueryCounterData(
query, &dh,
sizeof(dh),
NULL);
276 ret = pPerfQueryCounterData(
query, &dh,
sizeof(dh), &
size);
281 ok(
size ==
sizeof(dh),
"got size %lu.\n",
size);
286 "got PerfTimeStamp %I64u, qpc1 %I64u, qpc2 %I64u.\n",
289 "got PerfTime100NSec %I64u, nttime1 %I64u, nttime2 %I64u.\n",
292 "got systime %I64u, nttime1 %I64u, nttime2 %I64u, %d.\n",
COMPILER_DEPENDENT_UINT64 UINT64
#define ERROR_NOT_ENOUGH_MEMORY
static HINSTANCE instance
#define ERROR_INVALID_PARAMETER
#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)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
BOOL WINAPI QueryPerformanceFrequency(OUT PLARGE_INTEGER lpFrequency)
BOOL WINAPI QueryPerformanceCounter(OUT PLARGE_INTEGER lpPerformanceCount)
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
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
NTSTATUS NTAPI NtQuerySystemTime(OUT PLARGE_INTEGER SystemTime)
static void test_perf_counters(void)
void test_provider_init(void)
HANDLE PERF_COUNTER_IDENTIFIER DWORD
static ULONG64 trunc_nttime_ms(ULONG64 t)
PERF_DATA_HEADER DWORD *static void init_functions(void)
static ULONG WINAPI test_provider_callback(ULONG code, void *buffer, ULONG size)
#define GET_FUNCTION(name)
struct _PERF_COUNTER_INFO PERF_COUNTER_INFO
ULONG WINAPI PerfAddCounters(HANDLE, PERF_COUNTER_IDENTIFIER *, DWORD)
ULONG WINAPI PerfOpenQueryHandle(const WCHAR *, HANDLE *)
#define PERF_COUNTERSET_SINGLE_INSTANCE
ULONG WINAPI PerfQueryCounterData(HANDLE, PERF_DATA_HEADER *, DWORD, DWORD *)
#define PERF_ATTRIB_BY_REFERENCE
struct _PERF_COUNTER_IDENTIFIER PERF_COUNTER_IDENTIFIER
ULONG WINAPI PerfCloseQueryHandle(HANDLE)
#define PERF_WILDCARD_COUNTER
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
DWORD WINAPI GetLastError(void)
#define ERROR_WMI_GUID_NOT_FOUND
#define PERF_DETAIL_NOVICE
#define PERF_COUNTER_COUNTER
#define DUPLICATE_SAME_ACCESS