diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c index 5e2a2972639..72b5a4bb702 100644 --- a/dlls/ntdll/rtl.c +++ b/dlls/ntdll/rtl.c @@ -814,3 +814,17 @@ DWORD WINAPI RtlIntegerToChar(DWORD x1,DWORD x2,DWORD x3,DWORD x4) { FIXME(ntdll,"(0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4); return 0; } +/****************************************************************************** + * RtlSystemTimeToLocalTime [NTDLL] + */ +DWORD WINAPI RtlSystemTimeToLocalTime(DWORD x1,DWORD x2) { + FIXME(ntdll,"(0x%08lx,0x%08lx),stub!\n",x1,x2); + return 0; +} +/****************************************************************************** + * RtlTimeToTimeFields [NTDLL] + */ +DWORD WINAPI RtlTimeToTimeFields(DWORD x1,DWORD x2) { + FIXME(ntdll,"(0x%08lx,0x%08lx),stub!\n",x1,x2); + return 0; +} diff --git a/relay32/advapi32.spec b/relay32/advapi32.spec index e9a9dedcd40..188f0545ea4 100644 --- a/relay32/advapi32.spec +++ b/relay32/advapi32.spec @@ -177,8 +177,8 @@ type win32 0173 stdcall RegUnLoadKeyW(long wstr) RegUnLoadKey32W 0174 stdcall RegisterEventSourceA(ptr ptr) RegisterEventSource32A 0175 stdcall RegisterEventSourceW(ptr ptr) RegisterEventSource32W -0176 stub RegisterServiceCtrlHandlerA -0177 stub RegisterServiceCtrlHandlerW +0176 stdcall RegisterServiceCtrlHandlerA (ptr ptr) RegisterServiceCtrlHandlerA +0177 stdcall RegisterServiceCtrlHandlerW (ptr ptr) RegisterServiceCtrlHandlerW 0178 stub ReportEventA 0179 stub ReportEventW 0180 stub RevertToSelf @@ -193,7 +193,7 @@ type win32 0189 stub SetSecurityDescriptorSacl 0190 stub SetServiceBits 0191 stub SetServiceObjectSecurity -0192 stub SetServiceStatus +0192 stdcall SetServiceStatus(long long)SetServiceStatus 0193 stub SetThreadToken 0194 stub SetTokenInformation 0195 stdcall StartServiceA(long long ptr) StartService32A diff --git a/relay32/ntdll.spec b/relay32/ntdll.spec index 9477dd412ee..71be22dd831 100644 --- a/relay32/ntdll.spec +++ b/relay32/ntdll.spec @@ -500,12 +500,12 @@ type win32 497 stdcall RtlSubAuthoritySid(ptr long) RtlSubAuthoritySid 498 stub RtlSubtreePredecessor 499 stub RtlSubtreeSuccessor -500 stub RtlSystemTimeToLocalTime +500 stdcall RtlSystemTimeToLocalTime (long long) RtlSystemTimeToLocalTime 501 stub RtlTimeFieldsToTime 502 stdcall RtlTimeToElapsedTimeFields(long long) RtlTimeToElapsedTimeFields 503 stdcall RtlTimeToSecondsSince1970(ptr ptr) RtlTimeToSecondsSince1970 504 stdcall RtlTimeToSecondsSince1980(ptr ptr) RtlTimeToSecondsSince1980 -505 stub RtlTimeToTimeFields +505 stdcall RtlTimeToTimeFields (long long) RtlTimeToTimeFields 506 stub RtlUnicodeStringToAnsiSize 507 stdcall RtlUnicodeStringToAnsiString(ptr ptr long) RtlUnicodeStringToAnsiString 508 stub RtlUnicodeStringToCountedOemString diff --git a/win32/advapi.c b/win32/advapi.c index 49c93b7f706..a0529e49cdd 100644 --- a/win32/advapi.c +++ b/win32/advapi.c @@ -16,8 +16,12 @@ * StartServiceCtrlDispatcherA [ADVAPI32.196] */ BOOL32 WINAPI StartServiceCtrlDispatcher32A(LPSERVICE_TABLE_ENTRY32A servent) -{ - FIXME(advapi,"(%p '%s'): STUB.\n",servent,servent->lpServiceName); +{ LPSERVICE_TABLE_ENTRY32A ptr = servent; + + while (ptr->lpServiceName) + { FIXME(advapi,"%s at %p\n", ptr->lpServiceName, ptr); + ptr++; + } return TRUE; } @@ -25,15 +29,48 @@ BOOL32 WINAPI StartServiceCtrlDispatcher32A(LPSERVICE_TABLE_ENTRY32A servent) * StartServiceCtrlDispatcherW [ADVAPI32.197] */ BOOL32 WINAPI StartServiceCtrlDispatcher32W(LPSERVICE_TABLE_ENTRY32W servent) -{ - char buffer[200]; - - lstrcpynWtoA(buffer,servent->lpServiceName,200); - FIXME(advapi,"(%p '%s'): STUB.\n",servent,buffer); +{ LPSERVICE_TABLE_ENTRY32W ptr = servent; + LPSERVICE_MAIN_FUNCTION32W fpMain; + + while (ptr->lpServiceName) + { FIXME(advapi,"%s at %p): STUB.\n", debugstr_w(ptr->lpServiceName),ptr); + fpMain = ptr->lpServiceProc; + fpMain(0,NULL); /* try to start the service */ + ptr++; + } return TRUE; } - +typedef DWORD SERVICE_STATUS_HANDLE; +typedef VOID (WINAPI *LPHANDLER_FUNCTION)( DWORD dwControl); + /*********************************************************************** + * RegisterServiceCtrlHandlerA [ADVAPI32.176] + */ +SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA (LPSTR lpServiceName, LPHANDLER_FUNCTION lpfHandler) +{ FIXME(advapi,"%s %p\n", lpServiceName, lpfHandler); + return 0xcacacafe; +} + /*********************************************************************** + * RegisterServiceCtrlHandlerW [ADVAPI32.177] + */ +SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW (LPWSTR lpServiceName, LPHANDLER_FUNCTION lpfHandler) +{ FIXME(advapi,"%s %p\n", debugstr_w(lpServiceName), lpfHandler); + return 0xcacacafe; +} + /*********************************************************************** + * SetServiceStatus [ADVAPI32.192] + */ +BOOL32 WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE hService, LPSERVICE_STATUS lpStatus) +{ FIXME(advapi,"%lx %p\n",hService, lpStatus); + TRACE(advapi,"\tType:%lx\n",lpStatus->dwServiceType); + TRACE(advapi,"\tState:%lx\n",lpStatus->dwCurrentState); + TRACE(advapi,"\tControlAccepted:%lx\n",lpStatus->dwControlsAccepted); + TRACE(advapi,"\tExitCode:%lx\n",lpStatus->dwWin32ExitCode); + TRACE(advapi,"\tServiceExitCode:%lx\n",lpStatus->dwServiceSpecificExitCode); + TRACE(advapi,"\tCheckPoint:%lx\n",lpStatus->dwCheckPoint); + TRACE(advapi,"\tWaitHint:%lx\n",lpStatus->dwWaitHint); + return TRUE; +} /****************************************************************************** * OpenProcessToken [ADVAPI32.109] * Opens the access token associated with a process