ReactOS 0.4.17-dev-966-gf06eace
pdh.h File Reference
#include <windows.h>
#include <winperf.h>
Include dependency graph for pdh.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _PDH_FMT_COUNTERVALUE
 
struct  _PDH_RAW_COUNTER
 
struct  _PDH_COUNTER_PATH_ELEMENTS_A
 
struct  _PDH_COUNTER_PATH_ELEMENTS_W
 
struct  _PDH_DATA_ITEM_PATH_ELEMENTS_A
 
struct  _PDH_DATA_ITEM_PATH_ELEMENTS_W
 
struct  _PDH_COUNTER_INFO_A
 
struct  _PDH_COUNTER_INFO_W
 

Macros

#define PDH_CVERSION_WIN40   0x0400
 
#define PDH_CVERSION_WIN50   0x0500
 
#define PDH_VERSION   0x0503
 
#define PDH_MAX_SCALE   7
 
#define PDH_MIN_SCALE   (-7)
 
#define PDH_MAX_COUNTER_NAME   1024
 
#define PDH_FMT_LONG   0x00000100
 
#define PDH_FMT_DOUBLE   0x00000200
 
#define PDH_FMT_LARGE   0x00000400
 
#define PDH_FMT_NOSCALE   0x00001000
 
#define PDH_FMT_1000   0x00002000
 
#define PDH_FMT_NOCAP100   0x00008000
 
#define DATA_SOURCE_REGISTRY   0x00000001
 
#define DATA_SOURCE_LOGFILE   0x00000002
 
#define DATA_SOURCE_WBEM   0x00000004
 
#define PdhAddCounter   WINELIB_NAME_AW(PdhAddCounter)
 
#define PdhAddEnglishCounter   WINELIB_NAME_AW(PdhAddEnglishCounter)
 
#define PdhEnumObjectItems   WINELIB_NAME_AW(PdhEnumObjectItems)
 
#define PdhGetCounterInfo   WINELIB_NAME_AW(PdhGetCounterInfo)
 
#define PdhLookupPerfIndexByName   WINELIB_NAME_AW(PdhLookupPerfIndexByName)
 
#define PdhLookupPerfNameByIndex   WINELIB_NAME_AW(PdhLookupPerfNameByIndex)
 
#define PdhMakeCounterPath   WINELIB_NAME_AW(PdhMakeCounterPath)
 
#define PdhOpenQuery   WINELIB_NAME_AW(PdhOpenQuery)
 
#define PdhValidatePath   WINELIB_NAME_AW(PdhValidatePath)
 
#define PdhValidatePathEx   WINELIB_NAME_AW(PdhValidatePathEx)
 

Typedefs

typedef LONG PDH_STATUS
 
typedef HANDLE PDH_HQUERY
 
typedef HANDLE PDH_HCOUNTER
 
typedef HANDLE PDH_HLOG
 
typedef struct _PDH_FMT_COUNTERVALUE PDH_FMT_COUNTERVALUE
 
typedef struct _PDH_FMT_COUNTERVALUE * PPDH_FMT_COUNTERVALUE
 
typedef struct _PDH_RAW_COUNTER PDH_RAW_COUNTER
 
typedef struct _PDH_RAW_COUNTER * PPDH_RAW_COUNTER
 
typedef struct _PDH_COUNTER_PATH_ELEMENTS_A PDH_COUNTER_PATH_ELEMENTS_A
 
typedef struct _PDH_COUNTER_PATH_ELEMENTS_A * PPDH_COUNTER_PATH_ELEMENTS_A
 
typedef struct _PDH_COUNTER_PATH_ELEMENTS_W PDH_COUNTER_PATH_ELEMENTS_W
 
typedef struct _PDH_COUNTER_PATH_ELEMENTS_W * PPDH_COUNTER_PATH_ELEMENTS_W
 
typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_A PDH_DATA_ITEM_PATH_ELEMENTS_A
 
typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_A * PPDH_DATA_ITEM_PATH_ELEMENTS_A
 
typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_W PDH_DATA_ITEM_PATH_ELEMENTS_W
 
typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_W * PPDH_DATA_ITEM_PATH_ELEMENTS_W
 
typedef struct _PDH_COUNTER_INFO_A PDH_COUNTER_INFO_A
 
typedef struct _PDH_COUNTER_INFO_A * PPDH_COUNTER_INFO_A
 
typedef struct _PDH_COUNTER_INFO_W PDH_COUNTER_INFO_W
 
typedef struct _PDH_COUNTER_INFO_W * PPDH_COUNTER_INFO_W
 

Functions

PDH_STATUS WINAPI PdhAddCounterA (PDH_HQUERY, LPCSTR, DWORD_PTR, PDH_HCOUNTER *)
 
PDH_STATUS WINAPI PdhAddCounterW (PDH_HQUERY, LPCWSTR, DWORD_PTR, PDH_HCOUNTER *)
 
PDH_STATUS WINAPI PdhAddEnglishCounterA (PDH_HQUERY, LPCSTR, DWORD_PTR, PDH_HCOUNTER *)
 
PDH_STATUS WINAPI PdhAddEnglishCounterW (PDH_HQUERY, LPCWSTR, DWORD_PTR, PDH_HCOUNTER *)
 
PDH_STATUS WINAPI PdhCloseQuery (PDH_HQUERY)
 
PDH_STATUS WINAPI PdhCollectQueryData (PDH_HQUERY)
 
PDH_STATUS WINAPI PdhCollectQueryDataEx (PDH_HQUERY, DWORD, HANDLE)
 
PDH_STATUS WINAPI PdhCollectQueryDataWithTime (PDH_HQUERY, LONGLONG *)
 
PDH_STATUS WINAPI PdhEnumObjectItemsA (LPCSTR, LPCSTR, LPCSTR, LPSTR, LPDWORD, LPSTR, LPDWORD, DWORD, DWORD)
 
PDH_STATUS WINAPI PdhEnumObjectItemsW (LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, LPDWORD, LPWSTR, LPDWORD, DWORD, DWORD)
 
PDH_STATUS WINAPI PdhGetCounterInfoA (PDH_HCOUNTER, BOOLEAN, LPDWORD, PPDH_COUNTER_INFO_A)
 
PDH_STATUS WINAPI PdhGetCounterInfoW (PDH_HCOUNTER, BOOLEAN, LPDWORD, PPDH_COUNTER_INFO_W)
 
PDH_STATUS WINAPI PdhGetCounterTimeBase (PDH_HCOUNTER, LONGLONG *)
 
PDH_STATUS WINAPI PdhGetDllVersion (LPDWORD)
 
PDH_STATUS WINAPI PdhGetFormattedCounterValue (PDH_HCOUNTER, DWORD, LPDWORD, PPDH_FMT_COUNTERVALUE)
 
PDH_STATUS WINAPI PdhGetRawCounterValue (PDH_HCOUNTER, LPDWORD, PPDH_RAW_COUNTER)
 
PDH_STATUS WINAPI PdhLookupPerfIndexByNameA (LPCSTR, LPCSTR, LPDWORD)
 
PDH_STATUS WINAPI PdhLookupPerfIndexByNameW (LPCWSTR, LPCWSTR, LPDWORD)
 
PDH_STATUS WINAPI PdhLookupPerfNameByIndexA (LPCSTR, DWORD, LPSTR, LPDWORD)
 
PDH_STATUS WINAPI PdhLookupPerfNameByIndexW (LPCWSTR, DWORD, LPWSTR, LPDWORD)
 
PDH_STATUS WINAPI PdhMakeCounterPathA (PDH_COUNTER_PATH_ELEMENTS_A *, LPSTR, LPDWORD, DWORD)
 
PDH_STATUS WINAPI PdhMakeCounterPathW (PDH_COUNTER_PATH_ELEMENTS_W *, LPWSTR, LPDWORD, DWORD)
 
PDH_STATUS WINAPI PdhOpenQueryA (LPCSTR, DWORD_PTR, PDH_HQUERY *)
 
PDH_STATUS WINAPI PdhOpenQueryW (LPCWSTR, DWORD_PTR, PDH_HQUERY *)
 
PDH_STATUS WINAPI PdhRemoveCounter (PDH_HCOUNTER)
 
PDH_STATUS WINAPI PdhSetCounterScaleFactor (PDH_HCOUNTER, LONG)
 
PDH_STATUS WINAPI PdhSetDefaultRealTimeDataSource (DWORD)
 
PDH_STATUS WINAPI PdhValidatePathA (LPCSTR)
 
PDH_STATUS WINAPI PdhValidatePathW (LPCWSTR)
 
PDH_STATUS WINAPI PdhValidatePathExA (PDH_HLOG, LPCSTR)
 
PDH_STATUS WINAPI PdhValidatePathExW (PDH_HLOG, LPCWSTR)
 

Macro Definition Documentation

◆ DATA_SOURCE_LOGFILE

#define DATA_SOURCE_LOGFILE   0x00000002

Definition at line 57 of file pdh.h.

◆ DATA_SOURCE_REGISTRY

#define DATA_SOURCE_REGISTRY   0x00000001

Definition at line 56 of file pdh.h.

◆ DATA_SOURCE_WBEM

#define DATA_SOURCE_WBEM   0x00000004

Definition at line 58 of file pdh.h.

◆ PDH_CVERSION_WIN40

#define PDH_CVERSION_WIN40   0x0400

Definition at line 40 of file pdh.h.

◆ PDH_CVERSION_WIN50

#define PDH_CVERSION_WIN50   0x0500

Definition at line 41 of file pdh.h.

◆ PDH_FMT_1000

#define PDH_FMT_1000   0x00002000

Definition at line 53 of file pdh.h.

◆ PDH_FMT_DOUBLE

#define PDH_FMT_DOUBLE   0x00000200

Definition at line 50 of file pdh.h.

◆ PDH_FMT_LARGE

#define PDH_FMT_LARGE   0x00000400

Definition at line 51 of file pdh.h.

◆ PDH_FMT_LONG

#define PDH_FMT_LONG   0x00000100

Definition at line 49 of file pdh.h.

◆ PDH_FMT_NOCAP100

#define PDH_FMT_NOCAP100   0x00008000

Definition at line 54 of file pdh.h.

◆ PDH_FMT_NOSCALE

#define PDH_FMT_NOSCALE   0x00001000

Definition at line 52 of file pdh.h.

◆ PDH_MAX_COUNTER_NAME

#define PDH_MAX_COUNTER_NAME   1024

Definition at line 47 of file pdh.h.

◆ PDH_MAX_SCALE

#define PDH_MAX_SCALE   7

Definition at line 44 of file pdh.h.

◆ PDH_MIN_SCALE

#define PDH_MIN_SCALE   (-7)

Definition at line 45 of file pdh.h.

◆ PDH_VERSION

#define PDH_VERSION   0x0503

Definition at line 42 of file pdh.h.

◆ PdhAddCounter

#define PdhAddCounter   WINELIB_NAME_AW(PdhAddCounter)

Definition at line 178 of file pdh.h.

◆ PdhAddEnglishCounter

#define PdhAddEnglishCounter   WINELIB_NAME_AW(PdhAddEnglishCounter)

Definition at line 181 of file pdh.h.

◆ PdhEnumObjectItems

#define PdhEnumObjectItems   WINELIB_NAME_AW(PdhEnumObjectItems)

Definition at line 188 of file pdh.h.

◆ PdhGetCounterInfo

#define PdhGetCounterInfo   WINELIB_NAME_AW(PdhGetCounterInfo)

Definition at line 191 of file pdh.h.

◆ PdhLookupPerfIndexByName

#define PdhLookupPerfIndexByName   WINELIB_NAME_AW(PdhLookupPerfIndexByName)

Definition at line 198 of file pdh.h.

◆ PdhLookupPerfNameByIndex

#define PdhLookupPerfNameByIndex   WINELIB_NAME_AW(PdhLookupPerfNameByIndex)

Definition at line 201 of file pdh.h.

◆ PdhMakeCounterPath

#define PdhMakeCounterPath   WINELIB_NAME_AW(PdhMakeCounterPath)

Definition at line 204 of file pdh.h.

◆ PdhOpenQuery

#define PdhOpenQuery   WINELIB_NAME_AW(PdhOpenQuery)

Definition at line 207 of file pdh.h.

◆ PdhValidatePath

#define PdhValidatePath   WINELIB_NAME_AW(PdhValidatePath)

Definition at line 213 of file pdh.h.

◆ PdhValidatePathEx

#define PdhValidatePathEx   WINELIB_NAME_AW(PdhValidatePathEx)

Definition at line 216 of file pdh.h.

Typedef Documentation

◆ PDH_COUNTER_INFO_A

◆ PDH_COUNTER_INFO_W

◆ PDH_COUNTER_PATH_ELEMENTS_A

◆ PDH_COUNTER_PATH_ELEMENTS_W

◆ PDH_DATA_ITEM_PATH_ELEMENTS_A

◆ PDH_DATA_ITEM_PATH_ELEMENTS_W

◆ PDH_FMT_COUNTERVALUE

◆ PDH_HCOUNTER

Definition at line 37 of file pdh.h.

◆ PDH_HLOG

typedef HANDLE PDH_HLOG

Definition at line 38 of file pdh.h.

◆ PDH_HQUERY

typedef HANDLE PDH_HQUERY

Definition at line 36 of file pdh.h.

◆ PDH_RAW_COUNTER

◆ PDH_STATUS

static PDH_STATUS

Definition at line 35 of file pdh.h.

◆ PPDH_COUNTER_INFO_A

◆ PPDH_COUNTER_INFO_W

◆ PPDH_COUNTER_PATH_ELEMENTS_A

◆ PPDH_COUNTER_PATH_ELEMENTS_W

◆ PPDH_DATA_ITEM_PATH_ELEMENTS_A

◆ PPDH_DATA_ITEM_PATH_ELEMENTS_W

◆ PPDH_FMT_COUNTERVALUE

◆ PPDH_RAW_COUNTER

Function Documentation

◆ PdhAddCounterA()

PDH_STATUS WINAPI PdhAddCounterA ( PDH_HQUERY  query,
LPCSTR  path,
DWORD_PTR  userdata,
PDH_HCOUNTER *  counter 
)

Definition at line 205 of file pdh_main.c.

207{
209 WCHAR *pathW;
210
211 TRACE("%p %s %Ix %p\n", query, debugstr_a(path), userdata, counter);
212
213 if (!path) return PDH_INVALID_ARGUMENT;
214
215 if (!(pathW = pdh_strdup_aw( path )))
217
218 ret = PdhAddCounterW( query, pathW, userdata, counter );
219
220 free( pathW );
221 return ret;
222}
#define free
Definition: debug_ros.c:5
return ret
Definition: mutex.c:147
#define debugstr_a
Definition: kernel32.h:31
static const WCHAR pathW[]
Definition: path.c:2368
LONG PDH_STATUS
Definition: pdh.h:35
static WCHAR * pdh_strdup_aw(const char *src)
Definition: pdh_main.c:52
PDH_STATUS WINAPI PdhAddCounterW(PDH_HQUERY hquery, LPCWSTR path, DWORD_PTR userdata, PDH_HCOUNTER *hcounter)
Definition: pdh_main.c:227
#define PDH_MEMORY_ALLOCATION_FAILURE
Definition: pdhmsg.h:44
#define PDH_INVALID_ARGUMENT
Definition: pdhmsg.h:46
short WCHAR
Definition: pedump.c:58
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by PdhAddEnglishCounterA(), test_PdhAddCounterA(), test_PdhCollectQueryDataEx(), test_PdhCollectQueryDataWithTime(), test_PdhGetCounterInfoA(), test_PdhGetCounterTimeBase(), test_PdhGetFormattedCounterValue(), test_PdhGetRawCounterValue(), test_PdhSetCounterScaleFactor(), and test_PdhVbGetDoubleCounterValue().

◆ PdhAddCounterW()

PDH_STATUS WINAPI PdhAddCounterW ( PDH_HQUERY  hquery,
LPCWSTR  path,
DWORD_PTR  userdata,
PDH_HCOUNTER *  hcounter 
)

Definition at line 227 of file pdh_main.c.

229{
230 struct query *query = hquery;
231 struct counter *counter;
232 unsigned int i;
233
234 TRACE("%p %s %Ix %p\n", hquery, debugstr_w(path), userdata, hcounter);
235
236 if (!path || !hcounter) return PDH_INVALID_ARGUMENT;
237
239 if (!query || query->magic != PDH_MAGIC_QUERY)
240 {
242 return PDH_INVALID_HANDLE;
243 }
244
245 *hcounter = NULL;
246 for (i = 0; i < ARRAY_SIZE(counter_sources); i++)
247 {
249 {
250 if ((counter = create_counter()))
251 {
253 counter->collect = counter_sources[i].collect;
254 counter->type = counter_sources[i].type;
256 counter->base = counter_sources[i].base;
258 counter->user = userdata;
259
261 *hcounter = counter;
262
264 return ERROR_SUCCESS;
265 }
268 }
269 }
272}
#define ARRAY_SIZE(A)
Definition: main.h:20
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
Definition: list.h:83
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define debugstr_w
Definition: kernel32.h:32
static BOOL pdh_match_path(LPCWSTR fullpath, LPCWSTR path)
Definition: pdh_main.c:188
static struct counter * create_counter(void)
Definition: pdh_main.c:90
#define PDH_MAGIC_QUERY
Definition: pdh_main.c:110
static CRITICAL_SECTION pdh_handle_cs
Definition: pdh_main.c:42
static const struct source counter_sources[]
Definition: pdh_main.c:173
#define PDH_INVALID_HANDLE
Definition: pdhmsg.h:45
#define PDH_CSTATUS_NO_COUNTER
Definition: pdhmsg.h:42
DWORD type
Definition: pdh_main.c:75
struct list entry
Definition: pdh_main.c:73
DWORD_PTR user
Definition: pdh_main.c:79
LONG defaultscale
Definition: pdh_main.c:78
DWORD_PTR queryuser
Definition: pdh_main.c:80
LONGLONG base
Definition: pdh_main.c:81
WCHAR * path
Definition: pdh_main.c:74
struct list counters
Definition: pdh_main.c:120
DWORD_PTR user
Definition: pdh_main.c:115
DWORD magic
Definition: pdh_main.c:114
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by PdhAddCounterA(), PdhAddEnglishCounterW(), test_PdhAddCounterW(), and test_PdhGetCounterInfoW().

◆ PdhAddEnglishCounterA()

PDH_STATUS WINAPI PdhAddEnglishCounterA ( PDH_HQUERY  query,
LPCSTR  path,
DWORD_PTR  userdata,
PDH_HCOUNTER *  counter 
)

Definition at line 277 of file pdh_main.c.

279{
280 TRACE("%p %s %Ix %p\n", query, debugstr_a(path), userdata, counter);
281
282 if (!counter) return PDH_INVALID_ARGUMENT;
283 if (!query) return PDH_INVALID_HANDLE;
284 return PdhAddCounterA( query, path, userdata, counter );
285}
PDH_STATUS WINAPI PdhAddCounterA(PDH_HQUERY query, LPCSTR path, DWORD_PTR userdata, PDH_HCOUNTER *counter)
Definition: pdh_main.c:205

Referenced by init_function_ptrs().

◆ PdhAddEnglishCounterW()

PDH_STATUS WINAPI PdhAddEnglishCounterW ( PDH_HQUERY  query,
LPCWSTR  path,
DWORD_PTR  userdata,
PDH_HCOUNTER *  counter 
)

Definition at line 290 of file pdh_main.c.

292{
293 TRACE("%p %s %Ix %p\n", query, debugstr_w(path), userdata, counter);
294
295 if (!counter) return PDH_INVALID_ARGUMENT;
296 if (!query) return PDH_INVALID_HANDLE;
297 return PdhAddCounterW( query, path, userdata, counter );
298}

Referenced by init_function_ptrs().

◆ PdhCloseQuery()

PDH_STATUS WINAPI PdhCloseQuery ( PDH_HQUERY  handle)

Definition at line 362 of file pdh_main.c.

363{
364 struct query *query = handle;
365 struct list *item, *next;
366
367 TRACE("%p\n", handle);
368
370 if (!query || query->magic != PDH_MAGIC_QUERY)
371 {
373 return PDH_INVALID_HANDLE;
374 }
375
376 if (query->thread)
377 {
379 SetEvent( query->stop );
381
383
386 {
388 return ERROR_SUCCESS;
389 }
392 query->thread = NULL;
393 }
394
396 {
397 struct counter *counter = LIST_ENTRY( item, struct counter, entry );
398
401 }
402
404
406 return ERROR_SUCCESS;
407}
static void list_remove(struct list_entry *entry)
Definition: list.h:90
static HANDLE thread
Definition: service.c:33
Definition: list.h:39
#define CloseHandle
Definition: compat.h:739
#define INFINITE
Definition: serial.h:102
uint32_t entry
Definition: isohybrid.c:63
static void destroy_query(struct query *query)
Definition: pdh_main.c:136
static void destroy_counter(struct counter *counter)
Definition: pdh_main.c:102
static unsigned __int64 next
Definition: rand_nt.c:6
#define LIST_FOR_EACH_SAFE(cursor, cursor2, list)
Definition: list.h:230
HANDLE thread
Definition: pdh_main.c:116
HANDLE stop
Definition: pdh_main.c:119
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:669
#define LIST_ENTRY(type)
Definition: queue.h:175

Referenced by test_PdhAddCounterA(), test_PdhAddCounterW(), test_PdhAddEnglishCounterA(), test_PdhAddEnglishCounterW(), test_PdhCollectQueryDataEx(), test_PdhCollectQueryDataWithTime(), test_PdhGetCounterInfoA(), test_PdhGetCounterInfoW(), test_PdhGetCounterTimeBase(), test_PdhGetFormattedCounterValue(), test_PdhGetRawCounterValue(), test_PdhOpenQueryA(), test_PdhOpenQueryW(), test_PdhSetCounterScaleFactor(), and test_PdhVbGetDoubleCounterValue().

◆ PdhCollectQueryData()

PDH_STATUS WINAPI PdhCollectQueryData ( PDH_HQUERY  handle)

Definition at line 429 of file pdh_main.c.

430{
431 struct query *query = handle;
432
433 TRACE("%p\n", handle);
434
436 if (!query || query->magic != PDH_MAGIC_QUERY)
437 {
439 return PDH_INVALID_HANDLE;
440 }
441
442 if (list_empty( &query->counters ))
443 {
445 return PDH_NO_DATA;
446 }
447
449
451 return ERROR_SUCCESS;
452}
static int list_empty(struct list_entry *head)
Definition: list.h:58
static void collect_query_data(struct query *query)
Definition: pdh_main.c:410
#define PDH_NO_DATA
Definition: pdhmsg.h:31

Referenced by test_PdhAddCounterA(), test_PdhAddCounterW(), test_PdhAddEnglishCounterA(), test_PdhAddEnglishCounterW(), test_PdhCollectQueryDataEx(), test_PdhCollectQueryDataWithTime(), test_PdhGetFormattedCounterValue(), test_PdhGetRawCounterValue(), and test_PdhVbGetDoubleCounterValue().

◆ PdhCollectQueryDataEx()

PDH_STATUS WINAPI PdhCollectQueryDataEx ( PDH_HQUERY  handle,
DWORD  interval,
HANDLE  event 
)

Definition at line 485 of file pdh_main.c.

486{
488 struct query *query = handle;
489
490 TRACE("%p %ld %p\n", handle, interval, event);
491
493 if (!query || query->magic != PDH_MAGIC_QUERY)
494 {
496 return PDH_INVALID_HANDLE;
497 }
498 if (list_empty( &query->counters ))
499 {
501 return PDH_NO_DATA;
502 }
503 if (query->thread)
504 {
506 SetEvent( query->stop );
508
510
513 {
515 return PDH_INVALID_HANDLE;
516 }
518 query->thread = NULL;
519 }
520 else if (!(query->stop = CreateEventW( NULL, FALSE, FALSE, NULL )))
521 {
522 ret = GetLastError();
524 return ret;
525 }
526 query->wait = event;
527 query->interval = interval * 1000;
529 {
530 ret = GetLastError();
532
534 return ret;
535 }
536
538 return ERROR_SUCCESS;
539}
#define FALSE
Definition: types.h:117
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
static DWORD CALLBACK collect_query_thread(void *arg)
Definition: pdh_main.c:454
Definition: filter.c:185
HANDLE wait
Definition: pdh_main.c:118
DWORD interval
Definition: pdh_main.c:117
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:587
DWORD WINAPI GetLastError(void)
Definition: except.c:1042

Referenced by test_PdhCollectQueryDataEx().

◆ PdhCollectQueryDataWithTime()

PDH_STATUS WINAPI PdhCollectQueryDataWithTime ( PDH_HQUERY  handle,
LONGLONG *  timestamp 
)

Definition at line 544 of file pdh_main.c.

545{
546 struct query *query = handle;
547 struct counter *counter;
548 struct list *item;
549
550 TRACE("%p %p\n", handle, timestamp);
551
552 if (!timestamp) return PDH_INVALID_ARGUMENT;
553
555 if (!query || query->magic != PDH_MAGIC_QUERY)
556 {
558 return PDH_INVALID_HANDLE;
559 }
560 if (list_empty( &query->counters ))
561 {
563 return PDH_NO_DATA;
564 }
565
567
569 counter = LIST_ENTRY( item, struct counter, entry );
570
572
574 return ERROR_SUCCESS;
575}
DWORD dwHighDateTime
Definition: mapidefs.h:66
DWORD dwLowDateTime
Definition: mapidefs.h:65
FILETIME stamp
Definition: pdh_main.c:82
Definition: list.h:15
int64_t LONGLONG
Definition: typedefs.h:68

Referenced by init_function_ptrs().

◆ PdhEnumObjectItemsA()

PDH_STATUS WINAPI PdhEnumObjectItemsA ( LPCSTR  szDataSource,
LPCSTR  szMachineName,
LPCSTR  szObjectName,
LPSTR  mszCounterList,
LPDWORD  pcchCounterListLength,
LPSTR  mszInstanceList,
LPDWORD  pcchInstanceListLength,
DWORD  dwDetailLevel,
DWORD  dwFlags 
)

Definition at line 1218 of file pdh_main.c.

1221{
1222 FIXME("%s, %s, %s, %p, %p, %p, %p, %ld, 0x%lx: stub\n", debugstr_a(szDataSource), debugstr_a(szMachineName),
1223 debugstr_a(szObjectName), mszCounterList, pcchCounterListLength, mszInstanceList,
1224 pcchInstanceListLength, dwDetailLevel, dwFlags);
1225
1226 return PDH_NOT_IMPLEMENTED;
1227}
#define FIXME(fmt,...)
Definition: precomp.h:53
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
#define PDH_NOT_IMPLEMENTED
Definition: pdhmsg.h:68

◆ PdhEnumObjectItemsW()

PDH_STATUS WINAPI PdhEnumObjectItemsW ( LPCWSTR  szDataSource,
LPCWSTR  szMachineName,
LPCWSTR  szObjectName,
LPWSTR  mszCounterList,
LPDWORD  pcchCounterListLength,
LPWSTR  mszInstanceList,
LPDWORD  pcchInstanceListLength,
DWORD  dwDetailLevel,
DWORD  dwFlags 
)

Definition at line 1232 of file pdh_main.c.

1235{
1236 FIXME("%s, %s, %s, %p, %p, %p, %p, %ld, 0x%lx: stub\n", debugstr_w(szDataSource), debugstr_w(szMachineName),
1237 debugstr_w(szObjectName), mszCounterList, pcchCounterListLength, mszInstanceList,
1238 pcchInstanceListLength, dwDetailLevel, dwFlags);
1239
1240 return PDH_NOT_IMPLEMENTED;
1241}

◆ PdhGetCounterInfoA()

PDH_STATUS WINAPI PdhGetCounterInfoA ( PDH_HCOUNTER  handle,
BOOLEAN  text,
LPDWORD  size,
PPDH_COUNTER_INFO_A  info 
)

Definition at line 616 of file pdh_main.c.

617{
618 struct counter *counter = handle;
619
620 TRACE("%p %d %p %p\n", handle, text, size, info);
621
624 {
626 return PDH_INVALID_HANDLE;
627 }
628 if (!size)
629 {
632 }
633 if (*size < sizeof(PDH_COUNTER_INFO_A))
634 {
635 *size = sizeof(PDH_COUNTER_INFO_A);
637 return PDH_MORE_DATA;
638 }
639
640 memset( info, 0, sizeof(PDH_COUNTER_INFO_A) );
641
642 info->dwType = counter->type;
643 info->CStatus = counter->status;
644 info->lScale = counter->scale;
645 info->lDefaultScale = counter->defaultscale;
646 info->dwUserData = counter->user;
647 info->dwQueryUserData = counter->queryuser;
648
649 *size = sizeof(PDH_COUNTER_INFO_A);
650
652 return ERROR_SUCCESS;
653}
const WCHAR * text
Definition: package.c:1826
GLsizeiptr size
Definition: glext.h:5919
struct _PDH_COUNTER_INFO_A PDH_COUNTER_INFO_A
#define PDH_MAGIC_COUNTER
Definition: pdh_main.c:88
#define PDH_MORE_DATA
Definition: pdhmsg.h:28
#define memset(x, y, z)
Definition: compat.h:39
DWORD magic
Definition: pdh_main.c:72
DWORD status
Definition: pdh_main.c:76
LONG scale
Definition: pdh_main.c:77

Referenced by test_PdhGetCounterInfoA().

◆ PdhGetCounterInfoW()

PDH_STATUS WINAPI PdhGetCounterInfoW ( PDH_HCOUNTER  handle,
BOOLEAN  text,
LPDWORD  size,
PPDH_COUNTER_INFO_W  info 
)

Definition at line 658 of file pdh_main.c.

659{
660 struct counter *counter = handle;
661
662 TRACE("%p %d %p %p\n", handle, text, size, info);
663
666 {
668 return PDH_INVALID_HANDLE;
669 }
670 if (!size)
671 {
674 }
675 if (*size < sizeof(PDH_COUNTER_INFO_W))
676 {
677 *size = sizeof(PDH_COUNTER_INFO_W);
679 return PDH_MORE_DATA;
680 }
681
682 memset( info, 0, sizeof(PDH_COUNTER_INFO_W) );
683
684 info->dwType = counter->type;
685 info->CStatus = counter->status;
686 info->lScale = counter->scale;
687 info->lDefaultScale = counter->defaultscale;
688 info->dwUserData = counter->user;
689 info->dwQueryUserData = counter->queryuser;
690
691 *size = sizeof(PDH_COUNTER_INFO_W);
692
694 return ERROR_SUCCESS;
695}
struct _PDH_COUNTER_INFO_W PDH_COUNTER_INFO_W

Referenced by test_PdhGetCounterInfoW().

◆ PdhGetCounterTimeBase()

PDH_STATUS WINAPI PdhGetCounterTimeBase ( PDH_HCOUNTER  handle,
LONGLONG *  base 
)

Definition at line 700 of file pdh_main.c.

701{
702 struct counter *counter = handle;
703
704 TRACE("%p %p\n", handle, base);
705
706 if (!base) return PDH_INVALID_ARGUMENT;
707
710 {
712 return PDH_INVALID_HANDLE;
713 }
714
715 *base = counter->base;
716
718 return ERROR_SUCCESS;
719}

Referenced by test_PdhGetCounterTimeBase().

◆ PdhGetDllVersion()

PDH_STATUS WINAPI PdhGetDllVersion ( LPDWORD  version)

Definition at line 724 of file pdh_main.c.

725{
726 if (!version)
728
730
731 return ERROR_SUCCESS;
732}
static const WCHAR version[]
Definition: asmname.c:66
#define PDH_VERSION
Definition: pdh.h:42

Referenced by test_PdhGetDllVersion().

◆ PdhGetFormattedCounterValue()

PDH_STATUS WINAPI PdhGetFormattedCounterValue ( PDH_HCOUNTER  handle,
DWORD  format,
LPDWORD  type,
PPDH_FMT_COUNTERVALUE  value 
)

Definition at line 737 of file pdh_main.c.

739{
741 struct counter *counter = handle;
742
743 TRACE("%p %lx %p %p\n", handle, format, type, value);
744
745 if (!value) return PDH_INVALID_ARGUMENT;
746
749 {
751 return PDH_INVALID_HANDLE;
752 }
753 if (counter->status)
754 {
756 return PDH_INVALID_DATA;
757 }
759 {
760 value->CStatus = ERROR_SUCCESS;
761 if (type) *type = counter->type;
762 }
763
765 return ret;
766}
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
static PDH_STATUS format_value(struct counter *counter, DWORD format, union value *raw1, union value *raw2, PDH_FMT_COUNTERVALUE *value)
Definition: pdh_main.c:301
#define PDH_INVALID_DATA
Definition: pdhmsg.h:55
union value two
Definition: pdh_main.c:85
union value one
Definition: pdh_main.c:84
Definition: pdh_main.c:64

Referenced by PdhVbGetDoubleCounterValue(), test_PdhCollectQueryDataEx(), test_PdhGetFormattedCounterValue(), and test_PdhVbGetDoubleCounterValue().

◆ PdhGetRawCounterValue()

PDH_STATUS WINAPI PdhGetRawCounterValue ( PDH_HCOUNTER  handle,
LPDWORD  type,
PPDH_RAW_COUNTER  value 
)

Definition at line 771 of file pdh_main.c.

773{
774 struct counter *counter = handle;
775
776 TRACE("%p %p %p\n", handle, type, value);
777
778 if (!value) return PDH_INVALID_ARGUMENT;
779
782 {
784 return PDH_INVALID_HANDLE;
785 }
786
787 value->CStatus = counter->status;
788 value->TimeStamp.dwLowDateTime = counter->stamp.dwLowDateTime;
789 value->TimeStamp.dwHighDateTime = counter->stamp.dwHighDateTime;
790 value->FirstValue = counter->one.largevalue;
791 value->SecondValue = counter->two.largevalue;
792 value->MultiCount = 1; /* FIXME */
793
794 if (type) *type = counter->type;
795
797 return ERROR_SUCCESS;
798}
LONGLONG largevalue
Definition: pdh_main.c:67

Referenced by test_PdhGetRawCounterValue().

◆ PdhLookupPerfIndexByNameA()

PDH_STATUS WINAPI PdhLookupPerfIndexByNameA ( LPCSTR  machine,
LPCSTR  name,
LPDWORD  index 
)

Definition at line 803 of file pdh_main.c.

804{
807 WCHAR *nameW;
808
809 TRACE("%s %s %p\n", debugstr_a(machine), debugstr_a(name), index);
810
811 if (!name) return PDH_INVALID_ARGUMENT;
812
814
815 if (!(nameW = pdh_strdup_aw( name )))
817
819
820 free( nameW );
821 free( machineW );
822 return ret;
823}
static const WCHAR nameW[]
Definition: main.c:49
GLuint index
Definition: glext.h:6031
static const WCHAR machineW[]
Definition: profile.c:105
static const char machine[]
Definition: profile.c:104
PDH_STATUS WINAPI PdhLookupPerfIndexByNameW(LPCWSTR machine, LPCWSTR name, LPDWORD index)
Definition: pdh_main.c:828
Definition: name.c:39

Referenced by test_PdhLookupPerfIndexByNameA().

◆ PdhLookupPerfIndexByNameW()

PDH_STATUS WINAPI PdhLookupPerfIndexByNameW ( LPCWSTR  machine,
LPCWSTR  name,
LPDWORD  index 
)

Definition at line 828 of file pdh_main.c.

829{
830 unsigned int i;
831
832 TRACE("%s %s %p\n", debugstr_w(machine), debugstr_w(name), index);
833
834 if (!name || !index) return PDH_INVALID_ARGUMENT;
835
836 if (machine)
837 {
838 FIXME("remote machine not supported\n");
840 }
841 for (i = 0; i < ARRAY_SIZE(counter_sources); i++)
842 {
844 {
845 *index = counter_sources[i].index;
846 return ERROR_SUCCESS;
847 }
848 }
850}
#define PDH_STRING_NOT_FOUND
Definition: pdhmsg.h:69
#define PDH_CSTATUS_NO_MACHINE
Definition: pdhmsg.h:26

Referenced by PdhLookupPerfIndexByNameA(), and test_PdhLookupPerfIndexByNameW().

◆ PdhLookupPerfNameByIndexA()

PDH_STATUS WINAPI PdhLookupPerfNameByIndexA ( LPCSTR  machine,
DWORD  index,
LPSTR  buffer,
LPDWORD  size 
)

Definition at line 855 of file pdh_main.c.

856{
860 DWORD sizeW = ARRAY_SIZE(bufferW);
861
862 TRACE("%s %ld %p %p\n", debugstr_a(machine), index, buffer, size);
863
864 if (!buffer || !size) return PDH_INVALID_ARGUMENT;
865
867
868 if (!(ret = PdhLookupPerfNameByIndexW( machineW, index, bufferW, &sizeW )))
869 {
870 int required = WideCharToMultiByte( CP_ACP, 0, bufferW, -1, NULL, 0, NULL, NULL );
871
872 if (*size < required) ret = PDH_MORE_DATA;
873 else WideCharToMultiByte( CP_ACP, 0, bufferW, -1, buffer, required, NULL, NULL );
874 *size = required;
875 }
876 free( machineW );
877 return ret;
878}
BOOL required
Definition: adapter_vk.c:1885
#define CP_ACP
Definition: compat.h:109
#define WideCharToMultiByte
Definition: compat.h:111
static const WCHAR sizeW[]
Definition: editor.c:79
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint buffer
Definition: glext.h:5915
#define PDH_MAX_COUNTER_NAME
Definition: pdh.h:47
PDH_STATUS WINAPI PdhLookupPerfNameByIndexW(LPCWSTR machine, DWORD index, LPWSTR buffer, LPDWORD size)
Definition: pdh_main.c:883

Referenced by test_PdhLookupPerfNameByIndexA().

◆ PdhLookupPerfNameByIndexW()

PDH_STATUS WINAPI PdhLookupPerfNameByIndexW ( LPCWSTR  machine,
DWORD  index,
LPWSTR  buffer,
LPDWORD  size 
)

Definition at line 883 of file pdh_main.c.

884{
886 unsigned int i;
887
888 TRACE("%s %ld %p %p\n", debugstr_w(machine), index, buffer, size);
889
890 if (machine)
891 {
892 FIXME("remote machine not supported\n");
894 }
895
896 if (!buffer || !size) return PDH_INVALID_ARGUMENT;
897 if (!index) return ERROR_SUCCESS;
898
899 for (i = 0; i < ARRAY_SIZE(counter_sources); i++)
900 {
902 {
903 WCHAR *p = wcsrchr( counter_sources[i].path, '\\' ) + 1;
904 unsigned int required = lstrlenW( p ) + 1;
905
906 if (*size < required) ret = PDH_MORE_DATA;
907 else
908 {
909 lstrcpyW( buffer, p );
911 }
912 *size = required;
913 return ret;
914 }
915 }
917}
#define wcsrchr
Definition: compat.h:16
#define lstrcpyW
Definition: compat.h:749
#define lstrlenW
Definition: compat.h:750
GLfloat GLfloat p
Definition: glext.h:8902

Referenced by PdhLookupPerfNameByIndexA(), and test_PdhLookupPerfNameByIndexW().

◆ PdhMakeCounterPathA()

PDH_STATUS WINAPI PdhMakeCounterPathA ( PDH_COUNTER_PATH_ELEMENTS_A *  e,
LPSTR  buffer,
LPDWORD  buflen,
DWORD  flags 
)

Definition at line 1119 of file pdh_main.c.

1121{
1124 WCHAR *bufferW;
1125 DWORD buflenW;
1126
1127 TRACE("%p %p %p 0x%08lx\n", e, buffer, buflen, flags);
1128
1129 if (!e || !buflen) return PDH_INVALID_ARGUMENT;
1130
1131 memset( &eW, 0, sizeof(eW) );
1132 if (e->szMachineName && !(eW.szMachineName = pdh_strdup_aw( e->szMachineName ))) goto done;
1133 if (e->szObjectName && !(eW.szObjectName = pdh_strdup_aw( e->szObjectName ))) goto done;
1134 if (e->szInstanceName && !(eW.szInstanceName = pdh_strdup_aw( e->szInstanceName ))) goto done;
1135 if (e->szParentInstance && !(eW.szParentInstance = pdh_strdup_aw( e->szParentInstance ))) goto done;
1136 if (e->szCounterName && !(eW.szCounterName = pdh_strdup_aw( e->szCounterName ))) goto done;
1137 eW.dwInstanceIndex = e->dwInstanceIndex;
1138
1139 buflenW = 0;
1140 ret = PdhMakeCounterPathW( &eW, NULL, &buflenW, flags );
1141 if (ret == PDH_MORE_DATA)
1142 {
1143 if ((bufferW = malloc( buflenW * sizeof(WCHAR) )))
1144 {
1145 if (!(ret = PdhMakeCounterPathW( &eW, bufferW, &buflenW, flags )))
1146 {
1147 int len = WideCharToMultiByte(CP_ACP, 0, bufferW, -1, NULL, 0, NULL, NULL);
1148 if (*buflen >= len) WideCharToMultiByte(CP_ACP, 0, bufferW, -1, buffer, *buflen, NULL, NULL);
1149 else ret = PDH_MORE_DATA;
1150 *buflen = len;
1151 }
1152 free( bufferW );
1153 }
1154 else
1156 }
1157
1158done:
1159 free( eW.szMachineName );
1160 free( eW.szObjectName );
1161 free( eW.szInstanceName );
1162 free( eW.szParentInstance );
1163 free( eW.szCounterName );
1164 return ret;
1165}
#define malloc
Definition: debug_ros.c:4
GLbitfield flags
Definition: glext.h:7161
GLenum GLsizei len
Definition: glext.h:6722
#define e
Definition: ke_i.h:82
PDH_STATUS WINAPI PdhMakeCounterPathW(PDH_COUNTER_PATH_ELEMENTS_W *e, LPWSTR buffer, LPDWORD buflen, DWORD flags)
Definition: pdh_main.c:1170

Referenced by test_PdhMakeCounterPathA().

◆ PdhMakeCounterPathW()

PDH_STATUS WINAPI PdhMakeCounterPathW ( PDH_COUNTER_PATH_ELEMENTS_W *  e,
LPWSTR  buffer,
LPDWORD  buflen,
DWORD  flags 
)

Definition at line 1170 of file pdh_main.c.

1172{
1175 DWORD len;
1176
1177 TRACE("%p %p %p 0x%08lx\n", e, buffer, buflen, flags);
1178
1179 if (flags) FIXME("unimplemented flags 0x%08lx\n", flags);
1180
1181 if (!e || !e->szCounterName || !e->szObjectName || !buflen)
1182 return PDH_INVALID_ARGUMENT;
1183
1184 path[0] = 0;
1185 if (e->szMachineName)
1186 {
1187 lstrcatW(path, L"\\\\");
1188 lstrcatW(path, e->szMachineName);
1189 }
1190 lstrcatW(path, L"\\");
1191 lstrcatW(path, e->szObjectName);
1192 if (e->szInstanceName)
1193 {
1194 lstrcatW(path, L"(");
1195 if (e->szParentInstance)
1196 {
1197 lstrcatW(path, e->szParentInstance);
1198 lstrcatW(path, L"/");
1199 }
1200 lstrcatW(path, e->szInstanceName);
1201 swprintf(instance, ARRAY_SIZE(instance), L"#%u", e->dwInstanceIndex);
1203 lstrcatW(path, L")");
1204 }
1205 lstrcatW(path, L"\\");
1206 lstrcatW(path, e->szCounterName);
1207
1208 len = lstrlenW(path) + 1;
1209 if (*buflen >= len) lstrcpyW(buffer, path);
1210 else ret = PDH_MORE_DATA;
1211 *buflen = len;
1212 return ret;
1213}
static HINSTANCE instance
Definition: main.c:35
#define swprintf
Definition: precomp.h:40
#define L(x)
Definition: resources.c:13
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274

Referenced by PdhMakeCounterPathA().

◆ PdhOpenQueryA()

PDH_STATUS WINAPI PdhOpenQueryA ( LPCSTR  source,
DWORD_PTR  userdata,
PDH_HQUERY *  query 
)

Definition at line 922 of file pdh_main.c.

923{
925 WCHAR *sourceW = NULL;
926
927 TRACE("%s %Ix %p\n", debugstr_a(source), userdata, query);
928
929 if (source && !(sourceW = pdh_strdup_aw( source ))) return PDH_MEMORY_ALLOCATION_FAILURE;
930
931 ret = PdhOpenQueryW( sourceW, userdata, query );
932 free( sourceW );
933
934 return ret;
935}
PDH_STATUS WINAPI PdhOpenQueryW(LPCWSTR source, DWORD_PTR userdata, PDH_HQUERY *handle)
Definition: pdh_main.c:940

Referenced by test_PdhAddCounterA(), test_PdhAddEnglishCounterA(), test_PdhCollectQueryDataEx(), test_PdhCollectQueryDataWithTime(), test_PdhGetCounterInfoA(), test_PdhGetCounterTimeBase(), test_PdhGetFormattedCounterValue(), test_PdhGetRawCounterValue(), test_PdhOpenQueryA(), test_PdhSetCounterScaleFactor(), and test_PdhVbGetDoubleCounterValue().

◆ PdhOpenQueryW()

PDH_STATUS WINAPI PdhOpenQueryW ( LPCWSTR  source,
DWORD_PTR  userdata,
PDH_HQUERY *  handle 
)

Definition at line 940 of file pdh_main.c.

941{
942 struct query *query;
943
944 TRACE("%s %Ix %p\n", debugstr_w(source), userdata, handle);
945
946 if (!handle) return PDH_INVALID_ARGUMENT;
947
948 if (source)
949 {
950 FIXME("log file data source not supported\n");
952 }
953 if ((query = create_query()))
954 {
955 query->user = userdata;
956 *handle = query;
957
958 return ERROR_SUCCESS;
959 }
961}
static struct query * create_query(void)
Definition: pdh_main.c:123

Referenced by PdhOpenQueryA(), test_PdhAddCounterW(), test_PdhAddEnglishCounterW(), test_PdhGetCounterInfoW(), and test_PdhOpenQueryW().

◆ PdhRemoveCounter()

PDH_STATUS WINAPI PdhRemoveCounter ( PDH_HCOUNTER  handle)

◆ PdhSetCounterScaleFactor()

PDH_STATUS WINAPI PdhSetCounterScaleFactor ( PDH_HCOUNTER  handle,
LONG  factor 
)

Definition at line 989 of file pdh_main.c.

990{
991 struct counter *counter = handle;
992
993 TRACE("%p\n", handle);
994
997 {
999 return PDH_INVALID_HANDLE;
1000 }
1001 if (factor < PDH_MIN_SCALE || factor > PDH_MAX_SCALE)
1002 {
1004 return PDH_INVALID_ARGUMENT;
1005 }
1006
1007 counter->scale = factor;
1008
1010 return ERROR_SUCCESS;
1011}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint factor
Definition: glfuncs.h:178
#define PDH_MAX_SCALE
Definition: pdh.h:44

Referenced by test_PdhGetCounterInfoA(), test_PdhGetCounterInfoW(), test_PdhGetFormattedCounterValue(), and test_PdhSetCounterScaleFactor().

◆ PdhSetDefaultRealTimeDataSource()

PDH_STATUS WINAPI PdhSetDefaultRealTimeDataSource ( DWORD  source)

Definition at line 1246 of file pdh_main.c.

1247{
1248 FIXME("%lu\n", source);
1249 return ERROR_SUCCESS;
1250}

◆ PdhValidatePathA()

PDH_STATUS WINAPI PdhValidatePathA ( LPCSTR  path)

Definition at line 1016 of file pdh_main.c.

1017{
1019 WCHAR *pathW;
1020
1021 TRACE("%s\n", debugstr_a(path));
1022
1023 if (!path) return PDH_INVALID_ARGUMENT;
1025
1027
1028 free( pathW );
1029 return ret;
1030}
PDH_STATUS WINAPI PdhValidatePathW(LPCWSTR path)
Definition: pdh_main.c:1042

Referenced by PdhValidatePathExA(), and test_PdhValidatePathA().

◆ PdhValidatePathExA()

PDH_STATUS WINAPI PdhValidatePathExA ( PDH_HLOG  source,
LPCSTR  path 
)

Definition at line 1089 of file pdh_main.c.

1090{
1091 TRACE("%p %s\n", source, debugstr_a(path));
1092
1093 if (source)
1094 {
1095 FIXME("log file data source not supported\n");
1096 return ERROR_SUCCESS;
1097 }
1098 return PdhValidatePathA( path );
1099}
PDH_STATUS WINAPI PdhValidatePathA(LPCSTR path)
Definition: pdh_main.c:1016

Referenced by init_function_ptrs().

◆ PdhValidatePathExW()

PDH_STATUS WINAPI PdhValidatePathExW ( PDH_HLOG  source,
LPCWSTR  path 
)

Definition at line 1104 of file pdh_main.c.

1105{
1106 TRACE("%p %s\n", source, debugstr_w(path));
1107
1108 if (source)
1109 {
1110 FIXME("log file data source not supported\n");
1111 return ERROR_SUCCESS;
1112 }
1113 return PdhValidatePathW( path );
1114}

Referenced by init_function_ptrs().

◆ PdhValidatePathW()

PDH_STATUS WINAPI PdhValidatePathW ( LPCWSTR  path)

Definition at line 1042 of file pdh_main.c.

1043{
1045 unsigned int i;
1046
1047 TRACE("%s\n", debugstr_w(path));
1048
1049 if ((ret = validate_path( path ))) return ret;
1050
1051 for (i = 0; i < ARRAY_SIZE(counter_sources); i++)
1053
1055}
static PDH_STATUS validate_path(LPCWSTR path)
Definition: pdh_main.c:1032

Referenced by PdhValidatePathA(), PdhValidatePathExW(), and test_PdhValidatePathW().