2 * Win32 advapi functions
4 * Copyright 1995 Sven Verdoolaege
16 /***********************************************************************
17 * StartServiceCtrlDispatcherA [ADVAPI32.196]
19 BOOL32 WINAPI
StartServiceCtrlDispatcher32A(LPSERVICE_TABLE_ENTRY32A servent
)
21 FIXME(advapi
,"(%p '%s'): STUB.\n",servent
,servent
->lpServiceName
);
25 /***********************************************************************
26 * StartServiceCtrlDispatcherW [ADVAPI32.197]
28 BOOL32 WINAPI
StartServiceCtrlDispatcher32W(LPSERVICE_TABLE_ENTRY32W servent
)
32 lstrcpynWtoA(buffer
,servent
->lpServiceName
,200);
33 FIXME(advapi
,"(%p '%s'): STUB.\n",servent
,buffer
);
38 /******************************************************************************
39 * OpenProcessToken [ADVAPI32.109]
40 * Opens the access token associated with a process
43 * ProcessHandle [I] Handle to process
44 * DesiredAccess [I] Desired access to process
45 * TokenHandle [O] Pointer to handle of open access token
49 BOOL32 WINAPI
OpenProcessToken( HANDLE32 ProcessHandle
, DWORD DesiredAccess
,
50 HANDLE32
*TokenHandle
)
52 FIXME(advapi
,"(%08x,%08lx,%p): stub\n",ProcessHandle
,DesiredAccess
,
58 /***********************************************************************
59 * OpenThreadToken [ADVAPI32.114]
61 BOOL32 WINAPI
OpenThreadToken( HANDLE32 thread
,DWORD desiredaccess
,
62 BOOL32 openasself
,HANDLE32
*thandle
)
64 FIXME(advapi
,"(%08x,%08lx,%d,%p): stub!\n",
65 thread
,desiredaccess
,openasself
,thandle
);
70 /******************************************************************************
71 * LookupPrivilegeValue32A [ADVAPI32.92]
73 BOOL32 WINAPI
LookupPrivilegeValue32A( LPCSTR lpSystemName
,
74 LPCSTR lpName
, LPVOID lpLuid
)
76 LPWSTR lpSystemNameW
= HEAP_strdupAtoW(GetProcessHeap(), 0, lpSystemName
);
77 LPWSTR lpNameW
= HEAP_strdupAtoW(GetProcessHeap(), 0, lpName
);
78 BOOL32 ret
= LookupPrivilegeValue32W( lpSystemNameW
, lpNameW
, lpLuid
);
79 HeapFree(GetProcessHeap(), 0, lpNameW
);
80 HeapFree(GetProcessHeap(), 0, lpSystemNameW
);
85 /******************************************************************************
86 * LookupPrivilegeValue32W [ADVAPI32.93]
87 * Retrieves LUID used on a system to represent the privilege name.
90 * lpLuid should be PLUID
93 * lpSystemName [I] Address of string specifying the system
94 * lpName [I] Address of string specifying the privilege
95 * lpLuid [I] Address of locally unique identifier
99 BOOL32 WINAPI
LookupPrivilegeValue32W( LPCWSTR lpSystemName
,
100 LPCWSTR lpName
, LPVOID lpLuid
)
102 FIXME(advapi
,"(%s,%s,%p): stub\n",debugstr_w(lpSystemName
),
103 debugstr_w(lpName
), lpLuid
);
108 /***********************************************************************
109 * AdjustTokenPrivileges [ADVAPI32.10]
111 BOOL32 WINAPI
AdjustTokenPrivileges(HANDLE32 TokenHandle
,BOOL32 DisableAllPrivileges
,
112 LPVOID NewState
,DWORD BufferLength
,LPVOID PreviousState
,
113 LPDWORD ReturnLength
)
118 /***********************************************************************
119 * GetTokenInformation [ADVAPI32.66]
121 BOOL32 WINAPI
GetTokenInformation(
122 HANDLE32 token
,/*TOKEN_INFORMATION_CLASS*/ DWORD tokeninfoclass
,LPVOID tokeninfo
,
123 DWORD tokeninfolength
,LPDWORD retlen
125 FIXME(advapi
,"(%08x,%ld,%p,%ld,%p): stub\n",
126 token
,tokeninfoclass
,tokeninfo
,tokeninfolength
,retlen
);
131 /******************************************************************************
132 * OpenSCManager32A [ADVAPI32.110]
134 HANDLE32 WINAPI
OpenSCManager32A( LPCSTR lpMachineName
, LPCSTR lpDatabaseName
,
135 DWORD dwDesiredAccess
)
137 LPWSTR lpMachineNameW
= HEAP_strdupAtoW(GetProcessHeap(),0,lpMachineName
);
138 LPWSTR lpDatabaseNameW
= HEAP_strdupAtoW(GetProcessHeap(),0,lpDatabaseName
);
139 DWORD ret
= OpenSCManager32W(lpMachineNameW
,lpDatabaseNameW
,
141 HeapFree(GetProcessHeap(),0,lpDatabaseNameW
);
142 HeapFree(GetProcessHeap(),0,lpMachineNameW
);
147 /******************************************************************************
148 * OpenSCManager32W [ADVAPI32.111]
149 * Establishes a connection to the service control manager and opens database
152 * This should return a SC_HANDLE
155 * lpMachineName [I] Pointer to machine name string
156 * lpDatabaseName [I] Pointer to database name string
157 * dwDesiredAccess [I] Type of access
160 * Success: Handle to service control manager database
163 HANDLE32 WINAPI
OpenSCManager32W( LPCWSTR lpMachineName
, LPCWSTR lpDatabaseName
,
164 DWORD dwDesiredAccess
)
166 FIXME(advapi
,"(%s,%s,%08lx): stub\n", debugstr_w(lpMachineName
),
167 debugstr_w(lpDatabaseName
), dwDesiredAccess
);
172 BOOL32 WINAPI
AllocateLocallyUniqueId(LPLUID lpluid
) {
173 lpluid
->LowPart
= time(NULL
);
174 lpluid
->HighPart
= 0;
179 /******************************************************************************
180 * ControlService [ADVAPI32.23]
181 * Sends a control code to a Win32-based service.
184 * hService should be SC_HANDLE
188 BOOL32 WINAPI
ControlService( HANDLE32 hService
, DWORD dwControl
,
189 LPSERVICE_STATUS lpServiceStatus
)
191 FIXME(advapi
, "(%d,%ld,%p): stub\n",hService
,dwControl
,lpServiceStatus
);
196 /******************************************************************************
197 * CloseServiceHandle [ADVAPI32.22]
198 * Close handle to service or service control manager
201 * hSCObject [I] Handle to service or service control manager database
204 * hSCObject should be SC_HANDLE
208 BOOL32 WINAPI
CloseServiceHandle( HANDLE32 hSCObject
)
210 FIXME(advapi
, "(%d): stub\n", hSCObject
);
215 /******************************************************************************
216 * OpenService32A [ADVAPI32.112]
218 HANDLE32 WINAPI
OpenService32A( HANDLE32 hSCManager
, LPCSTR lpServiceName
,
219 DWORD dwDesiredAccess
)
221 LPWSTR lpServiceNameW
= HEAP_strdupAtoW(GetProcessHeap(),0,lpServiceName
);
222 DWORD ret
= OpenService32W( hSCManager
, lpServiceNameW
, dwDesiredAccess
);
223 HeapFree(GetProcessHeap(),0,lpServiceNameW
);
228 /******************************************************************************
229 * OpenService32W [ADVAPI32.113]
230 * Opens a handle to an existing service
233 * The return value should be SC_HANDLE
234 * hSCManager should be SC_HANDLE
237 * Success: Handle to the service
240 HANDLE32 WINAPI
OpenService32W( HANDLE32 hSCManager
, LPCWSTR lpServiceName
,
241 DWORD dwDesiredAccess
)
243 FIXME(advapi
, "(%d,%p,%ld): stub\n",hSCManager
, lpServiceName
,
249 /******************************************************************************
250 * CreateServiceA [ADVAPI32.28]
252 DWORD WINAPI
CreateServiceA( DWORD hSCManager
, LPCSTR lpServiceName
,
253 LPCSTR lpDisplayName
, DWORD dwDesiredAccess
,
254 DWORD dwServiceType
, DWORD dwStartType
,
255 DWORD dwErrorControl
, LPCSTR lpBinaryPathName
,
256 LPCSTR lpLoadOrderGroup
, LPDWORD lpdwTagId
,
257 LPCSTR lpDependencies
, LPCSTR lpServiceStartName
,
260 FIXME(advapi
, "(%ld,%s,%s,...): stub\n",
261 hSCManager
, debugstr_a(lpServiceName
), debugstr_a(lpDisplayName
));
266 /******************************************************************************
267 * DeleteService [ADVAPI32.31]
270 * hService [I] Handle to service
275 * hService should be SC_HANDLE
277 BOOL32 WINAPI
DeleteService( HANDLE32 hService
)
279 FIXME(advapi
, "(%d): stub\n",hService
);
284 /******************************************************************************
285 * StartService32A [ADVAPI32.195]
288 * How do we convert lpServiceArgVectors to use the 32W version?
290 BOOL32 WINAPI
StartService32A( HANDLE32 hService
, DWORD dwNumServiceArgs
,
291 LPCSTR
*lpServiceArgVectors
)
293 FIXME(advapi
, "(%d,%ld,%p): stub\n",hService
,dwNumServiceArgs
,lpServiceArgVectors
);
298 /******************************************************************************
299 * StartService32W [ADVAPI32.198]
303 * hService [I] Handle of service
304 * dwNumServiceArgs [I] Number of arguments
305 * lpServiceArgVectors [I] Address of array of argument string pointers
310 * hService should be SC_HANDLE
312 BOOL32 WINAPI
StartService32W( HANDLE32 hService
, DWORD dwNumServiceArgs
,
313 LPCWSTR
*lpServiceArgVectors
)
315 FIXME(advapi
, "(%d,%ld,%p): stub\n",hService
,dwNumServiceArgs
,
316 lpServiceArgVectors
);
321 /******************************************************************************
322 * DeregisterEventSource [ADVAPI32.32]
323 * Closes a handle to the specified event log
326 * hEventLog [I] Handle to event log
330 BOOL32 WINAPI
DeregisterEventSource( HANDLE32 hEventLog
)
332 FIXME(advapi
, "(%d): stub\n",hEventLog
);
337 /******************************************************************************
338 * RegisterEventSource32A [ADVAPI32.174]
340 HANDLE32 WINAPI
RegisterEventSource32A( LPCSTR lpUNCServerName
,
341 LPCSTR lpSourceName
)
343 LPWSTR lpUNCServerNameW
= HEAP_strdupAtoW(GetProcessHeap(),0,lpUNCServerName
);
344 LPWSTR lpSourceNameW
= HEAP_strdupAtoW(GetProcessHeap(),0,lpSourceName
);
345 HANDLE32 ret
= RegisterEventSource32W(lpUNCServerNameW
,lpSourceNameW
);
346 HeapFree(GetProcessHeap(),0,lpSourceNameW
);
347 HeapFree(GetProcessHeap(),0,lpUNCServerNameW
);
352 /******************************************************************************
353 * RegisterEventSource32W [ADVAPI32.175]
354 * Returns a registered handle to an event log
357 * lpUNCServerName [I] Server name for source
358 * lpSourceName [I] Source name for registered handle
364 HANDLE32 WINAPI
RegisterEventSource32W( LPCWSTR lpUNCServerName
,
365 LPCWSTR lpSourceName
)
367 FIXME(advapi
, "(%s,%s): stub\n", debugstr_w(lpUNCServerName
),
368 debugstr_w(lpSourceName
));