Commit 504e7c2f authored by Hans Leidekker's avatar Hans Leidekker Committed by Alexandre Julliard

pdh: Implement PdhValidatePath{, Ex}{A, W}.

parent 9ad3807c
......@@ -137,10 +137,10 @@
@ stub PdhUpdateLogA
@ stub PdhUpdateLogFileCatalog
@ stub PdhUpdateLogW
@ stub PdhValidatePathA
@ stub PdhValidatePathExA
@ stub PdhValidatePathExW
@ stub PdhValidatePathW
@ stdcall PdhValidatePathA(str)
@ stdcall PdhValidatePathExA(ptr str)
@ stdcall PdhValidatePathExW(ptr wstr)
@ stdcall PdhValidatePathW(wstr)
@ stub PdhVbAddCounter
@ stub PdhVbCreateCounterPathList
@ stub PdhVbGetCounterPathElements
......
......@@ -700,3 +700,77 @@ PDH_STATUS WINAPI PdhSetCounterScaleFactor( PDH_HCOUNTER handle, LONG factor )
counter->scale = factor;
return ERROR_SUCCESS;
}
/***********************************************************************
* PdhValidatePathA (PDH.@)
*/
PDH_STATUS WINAPI PdhValidatePathA( LPCSTR path )
{
PDH_STATUS ret;
WCHAR *pathW;
TRACE("%s\n", debugstr_a(path));
if (!path) return PDH_INVALID_ARGUMENT;
if (!(pathW = pdh_strdup_aw( path ))) return PDH_MEMORY_ALLOCATION_FAILURE;
ret = PdhValidatePathW( pathW );
pdh_free( pathW );
return ret;
}
static PDH_STATUS validate_path( LPCWSTR path )
{
if (!path || !*path) return PDH_INVALID_ARGUMENT;
if (*path++ != '\\' || !strchrW( path, '\\' )) return PDH_CSTATUS_BAD_COUNTERNAME;
return ERROR_SUCCESS;
}
/***********************************************************************
* PdhValidatePathW (PDH.@)
*/
PDH_STATUS WINAPI PdhValidatePathW( LPCWSTR path )
{
PDH_STATUS ret;
unsigned int i;
TRACE("%s\n", debugstr_w(path));
if ((ret = validate_path( path ))) return ret;
for (i = 0; i < sizeof(counter_sources) / sizeof(counter_sources[0]); i++)
if (pdh_match_path( counter_sources[i].path, path )) return ERROR_SUCCESS;
return PDH_CSTATUS_NO_COUNTER;
}
/***********************************************************************
* PdhValidatePathExA (PDH.@)
*/
PDH_STATUS WINAPI PdhValidatePathExA( PDH_HLOG source, LPCSTR path )
{
TRACE("%p %s\n", source, debugstr_a(path));
if (source)
{
FIXME("log file data source not supported\n");
return ERROR_SUCCESS;
}
return PdhValidatePathA( path );
}
/***********************************************************************
* PdhValidatePathExW (PDH.@)
*/
PDH_STATUS WINAPI PdhValidatePathExW( PDH_HLOG source, LPCWSTR path )
{
TRACE("%p %s\n", source, debugstr_w(path));
if (source)
{
FIXME("log file data source not supported\n");
return ERROR_SUCCESS;
}
return PdhValidatePathW( path );
}
......@@ -35,6 +35,7 @@ extern "C" {
typedef LONG PDH_STATUS;
typedef HANDLE PDH_HQUERY;
typedef HANDLE PDH_HCOUNTER;
typedef HANDLE PDH_HLOG;
#define PDH_MAX_SCALE 7
#define PDH_MIN_SCALE (-7)
......@@ -190,6 +191,12 @@ PDH_STATUS WINAPI PdhOpenQueryW(LPCWSTR, DWORD_PTR, PDH_HQUERY *);
#define PdhOpenQuery WINELIB_NAME_AW(PdhOpenQuery)
PDH_STATUS WINAPI PdhRemoveCounter(PDH_HCOUNTER);
PDH_STATUS WINAPI PdhSetCounterScaleFactor(PDH_HCOUNTER, LONG);
PDH_STATUS WINAPI PdhValidatePathA(LPCSTR);
PDH_STATUS WINAPI PdhValidatePathW(LPCWSTR);
#define PdhValidatePath WINELIB_NAME_AW(PdhValidatePath)
PDH_STATUS WINAPI PdhValidatePathExA(PDH_HLOG, LPCSTR);
PDH_STATUS WINAPI PdhValidatePathExW(PDH_HLOG, LPCWSTR);
#define PdhValidatePathEx WINELIB_NAME_AW(PdhValidatePathEx)
#ifdef __cplusplus
}
......
......@@ -30,6 +30,7 @@
#define PDH_MEMORY_ALLOCATION_FAILURE 0xc0000bbb
#define PDH_INVALID_HANDLE 0xc0000bbc
#define PDH_INVALID_ARGUMENT 0xc0000bbd
#define PDH_CSTATUS_BAD_COUNTERNAME 0xc0000bc0
#define PDH_INSUFFICIENT_BUFFER 0xc0000bc2
#define PDH_INVALID_DATA 0xc0000bc6
#define PDH_STRING_NOT_FOUND 0xc0000bd4
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment