10 #define TESTING_SERVICEW L"Spooler" 11 #define TESTING_SERVICEA "Spooler" 103 DWORD dwRequiredSize = 0;
118 ok(dwRequiredSize != 0,
"dwRequiredSize is zero, expected non-zero\n");
119 if (dwRequiredSize == 0)
121 skip(
"Required size is null; cannot proceed with QueryConfig2W --> %lu test\n",
dwInfoLevel);
129 skip(
"Cannot allocate %lu bytes of memory\n", dwRequiredSize);
140 ok(bError,
"bError = %u, expected TRUE\n", bError);
143 skip(
"QueryServiceConfig2W returned an error; cannot proceed with QueryConfig2W --> %lu test\n",
dwInfoLevel);
152 ok(lRet ==
ERROR_SUCCESS,
"RegOpenKeyExW failed with 0x%08lx\n", lRet);
155 skip(
"No regkey; cannot proceed with QueryConfig2W --> %lu test\n",
dwInfoLevel);
169 ok(dwRet ==
ERROR_SUCCESS,
"RegReadStringW returned 0x%08lx\n", dwRet);
170 ok(lpszDescription !=
NULL,
"lpszDescription is null, expected non-null\n");
178 ok(iRet == 0,
"Retrieved descriptions are different !\n");
202 ok(lRet ==
ERROR_SUCCESS,
"RegQueryValueExW returned 0x%08lx\n", lRet);
203 ok(dwType ==
REG_BINARY,
"dwType = %lu, expected REG_BINARY\n", dwType);
204 ok(dwRequiredSize != 0,
"dwRequiredSize is zero, expected non-zero\n");
207 if (lpFailureActions2 ==
NULL)
209 skip(
"Cannot allocate %lu bytes of memory\n", dwRequiredSize);
217 (
LPBYTE)lpFailureActions2,
219 ok(lRet ==
ERROR_SUCCESS,
"RegQueryValueExW returned 0x%08lx\n", lRet);
220 ok(dwRequiredSize != 0,
"dwRequiredSize is zero, expected non-zero\n");
227 ok(lpFailureActions1->
dwResetPeriod == lpFailureActions2->dwResetPeriod,
"lpFailureActions1->dwResetPeriod != lpFailureActions2->dwResetPeriod\n");
228 ok(lpFailureActions1->
cActions == lpFailureActions2->cActions,
"lpFailureActions1->cActions != lpFailureActions2->cActions\n");
231 if (lpFailureActions1->
cActions == lpFailureActions2->cActions)
233 lpFailureActions2->lpsaActions = (lpFailureActions2->cActions > 0 ? (
LPSC_ACTION)(lpFailureActions2 + 1) :
NULL);
235 if (lpFailureActions1->
cActions > 0 &&
240 ok(lpFailureActions1->
lpsaActions[
i].
Type == lpFailureActions2->lpsaActions[
i].Type ,
"lpFailureActions1->lpsaActions[%lu].Type != lpFailureActions2->lpsaActions[%lu].Type\n" ,
i,
i);
241 ok(lpFailureActions1->
lpsaActions[
i].
Delay == lpFailureActions2->lpsaActions[
i].Delay,
"lpFailureActions1->lpsaActions[%lu].Delay != lpFailureActions2->lpsaActions[%lu].Delay\n",
i,
i);
249 if (lpFailureActions1->
lpRebootMsg && lpRebootMessage)
254 ok(iRet == 0,
"Retrieved reboot messages are different !\n");
257 if (lpFailureActions1->
lpCommand && lpFailureCommand)
262 ok(iRet == 0,
"Retrieved commands are different !\n");
269 if (lpFailureCommand)
295 DWORD dwRequiredSize = 0;
310 ok(dwRequiredSize != 0,
"dwRequiredSize is zero, expected non-zero\n");
311 if (dwRequiredSize == 0)
313 skip(
"Required size is null; cannot proceed with QueryConfig2A --> %lu test\n",
dwInfoLevel);
321 skip(
"Cannot allocate %lu bytes of memory\n", dwRequiredSize);
332 ok(bError,
"bError = %u, expected TRUE\n", bError);
335 skip(
"QueryServiceConfig2A returned an error; cannot proceed with QueryConfig2A --> %lu test\n",
dwInfoLevel);
344 ok(lRet ==
ERROR_SUCCESS,
"RegOpenKeyExA failed with 0x%08lx\n", lRet);
347 skip(
"No regkey; cannot proceed with QueryConfig2A --> %lu test\n",
dwInfoLevel);
361 ok(dwRet ==
ERROR_SUCCESS,
"RegReadStringA returned 0x%08lx\n", dwRet);
362 ok(lpszDescription !=
NULL,
"lpszDescription is null, expected non-null\n");
370 ok(iRet == 0,
"Retrieved descriptions are different !\n");
394 ok(lRet ==
ERROR_SUCCESS,
"RegQueryValueExA returned 0x%08lx\n", lRet);
395 ok(dwType ==
REG_BINARY,
"dwType = %lu, expected REG_BINARY\n", dwType);
396 ok(dwRequiredSize != 0,
"dwRequiredSize is zero, expected non-zero\n");
399 if (lpFailureActions2 ==
NULL)
401 skip(
"Cannot allocate %lu bytes of memory\n", dwRequiredSize);
409 (
LPBYTE)lpFailureActions2,
411 ok(lRet ==
ERROR_SUCCESS,
"RegQueryValueExA returned 0x%08lx\n", lRet);
412 ok(dwRequiredSize != 0,
"dwRequiredSize is zero, expected non-zero\n");
419 ok(lpFailureActions1->
dwResetPeriod == lpFailureActions2->dwResetPeriod,
"lpFailureActions1->dwResetPeriod != lpFailureActions2->dwResetPeriod\n");
420 ok(lpFailureActions1->
cActions == lpFailureActions2->cActions,
"lpFailureActions1->cActions != lpFailureActions2->cActions\n");
423 if (lpFailureActions1->
cActions == lpFailureActions2->cActions)
425 lpFailureActions2->lpsaActions = (lpFailureActions2->cActions > 0 ? (
LPSC_ACTION)(lpFailureActions2 + 1) :
NULL);
427 if (lpFailureActions1->
cActions > 0 &&
432 ok(lpFailureActions1->
lpsaActions[
i].
Type == lpFailureActions2->lpsaActions[
i].Type ,
"lpFailureActions1->lpsaActions[%lu].Type != lpFailureActions2->lpsaActions[%lu].Type\n" ,
i,
i);
433 ok(lpFailureActions1->
lpsaActions[
i].
Delay == lpFailureActions2->lpsaActions[
i].Delay,
"lpFailureActions1->lpsaActions[%lu].Delay != lpFailureActions2->lpsaActions[%lu].Delay\n",
i,
i);
441 if (lpFailureActions1->
lpRebootMsg && lpRebootMessage)
446 ok(iRet == 0,
"Retrieved reboot messages are different !\n");
449 if (lpFailureActions1->
lpCommand && lpFailureCommand)
454 ok(iRet == 0,
"Retrieved commands are different !\n");
461 if (lpFailureCommand)
484 SC_HANDLE hScm =
NULL;
485 SC_HANDLE hService =
NULL;
492 skip(
"No service control manager; cannot proceed with QueryServiceConfig2W test\n");
500 ok(hService !=
NULL,
"Failed to open service handle, error=0x%08lx\n",
GetLastError());
503 skip(
"Service not found; cannot proceed with QueryServiceConfig2W test\n");
525 SC_HANDLE hScm =
NULL;
526 SC_HANDLE hService =
NULL;
533 skip(
"No service control manager; cannot proceed with QueryServiceConfig2A test\n");
541 ok(hService !=
NULL,
"Failed to open service handle, error=0x%08lx\n",
GetLastError());
544 skip(
"Service not found; cannot proceed with QueryServiceConfig2A test\n");
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
struct _SERVICE_DESCRIPTIONA * LPSERVICE_DESCRIPTIONA
#define SC_MANAGER_CONNECT
static DWORD RegReadStringW(HKEY hKey, LPWSTR lpValueName, LPWSTR *lpValue)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
#define ERROR_NOT_ENOUGH_MEMORY
DWORD WINAPI GetLastError(VOID)
#define SERVICE_CONFIG_DESCRIPTION
static int QueryConfig2A(SC_HANDLE hService, LPCSTR serviceName, DWORD dwInfoLevel)
SC_HANDLE WINAPI OpenSCManagerA(LPCSTR lpMachineName, LPCSTR lpDatabaseName, DWORD dwDesiredAccess)
static int QueryConfig2W(SC_HANDLE hService, LPCWSTR serviceName, DWORD dwInfoLevel)
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
SC_HANDLE WINAPI OpenServiceW(SC_HANDLE hSCManager, LPCWSTR lpServiceName, DWORD dwDesiredAccess)
START_TEST(QueryServiceConfig2)
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
#define QueryServiceConfig2
BOOL WINAPI QueryServiceConfig2A(SC_HANDLE hService, DWORD dwInfoLevel, LPBYTE lpBuffer, DWORD cbBufSize, LPDWORD pcbBytesNeeded)
STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat,...)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
struct _SERVICE_DESCRIPTIONW * LPSERVICE_DESCRIPTIONW
STRSAFEAPI StringCbPrintfA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszFormat,...)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define SERVICE_CONFIG_FAILURE_ACTIONS
SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, DWORD dwDesiredAccess)
BOOL WINAPI QueryServiceConfig2W(SC_HANDLE hService, DWORD dwInfoLevel, LPBYTE lpBuffer, DWORD cbBufSize, LPDWORD pcbBytesNeeded)
static void Test_QueryServiceConfig2A(void)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
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
struct _SERVICE_FAILURE_ACTIONSW * LPSERVICE_FAILURE_ACTIONSW
SC_HANDLE WINAPI OpenServiceA(SC_HANDLE hSCManager, LPCSTR lpServiceName, DWORD dwDesiredAccess)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
int strcmp(const char *String1, const char *String2)
char * cleanup(char *str)
#define SERVICE_QUERY_CONFIG
static void Test_QueryServiceConfig2W(void)
struct _SC_ACTION * LPSC_ACTION
#define HeapFree(x, y, z)
struct _SERVICE_FAILURE_ACTIONSA * LPSERVICE_FAILURE_ACTIONSA
#define RegCloseKey(hKey)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static DWORD RegReadStringA(HKEY hKey, LPSTR lpValueName, LPSTR *lpValue)
#define HKEY_LOCAL_MACHINE
#define ERROR_INSUFFICIENT_BUFFER