Added device type constants and used them in device enumeration
[wine.git] / win32 / advapi.c
blob49c93b7f706641f3a98f6900c911297e3d375228
1 /*
2 * Win32 advapi functions
4 * Copyright 1995 Sven Verdoolaege
5 */
7 #include <unistd.h>
8 #include <time.h>
9 #include "windows.h"
10 #include "winerror.h"
11 #include "shell.h"
12 #include "heap.h"
13 #include "debug.h"
15 /***********************************************************************
16 * StartServiceCtrlDispatcherA [ADVAPI32.196]
18 BOOL32 WINAPI StartServiceCtrlDispatcher32A(LPSERVICE_TABLE_ENTRY32A servent)
20 FIXME(advapi,"(%p '%s'): STUB.\n",servent,servent->lpServiceName);
21 return TRUE;
24 /***********************************************************************
25 * StartServiceCtrlDispatcherW [ADVAPI32.197]
27 BOOL32 WINAPI StartServiceCtrlDispatcher32W(LPSERVICE_TABLE_ENTRY32W servent)
29 char buffer[200];
31 lstrcpynWtoA(buffer,servent->lpServiceName,200);
32 FIXME(advapi,"(%p '%s'): STUB.\n",servent,buffer);
33 return TRUE;
37 /******************************************************************************
38 * OpenProcessToken [ADVAPI32.109]
39 * Opens the access token associated with a process
41 * PARAMS
42 * ProcessHandle [I] Handle to process
43 * DesiredAccess [I] Desired access to process
44 * TokenHandle [O] Pointer to handle of open access token
46 * RETURNS STD
48 BOOL32 WINAPI OpenProcessToken( HANDLE32 ProcessHandle, DWORD DesiredAccess,
49 HANDLE32 *TokenHandle )
51 FIXME(advapi,"(%08x,%08lx,%p): stub\n",ProcessHandle,DesiredAccess,
52 TokenHandle);
53 return TRUE;
57 /***********************************************************************
58 * OpenThreadToken [ADVAPI32.114]
60 BOOL32 WINAPI OpenThreadToken( HANDLE32 thread,DWORD desiredaccess,
61 BOOL32 openasself,HANDLE32 *thandle )
63 FIXME(advapi,"(%08x,%08lx,%d,%p): stub!\n",
64 thread,desiredaccess,openasself,thandle);
65 return TRUE;
69 /******************************************************************************
70 * LookupPrivilegeValue32A [ADVAPI32.92]
72 BOOL32 WINAPI LookupPrivilegeValue32A( LPCSTR lpSystemName,
73 LPCSTR lpName, LPVOID lpLuid)
75 LPWSTR lpSystemNameW = HEAP_strdupAtoW(GetProcessHeap(), 0, lpSystemName);
76 LPWSTR lpNameW = HEAP_strdupAtoW(GetProcessHeap(), 0, lpName);
77 BOOL32 ret = LookupPrivilegeValue32W( lpSystemNameW, lpNameW, lpLuid);
78 HeapFree(GetProcessHeap(), 0, lpNameW);
79 HeapFree(GetProcessHeap(), 0, lpSystemNameW);
80 return ret;
84 /******************************************************************************
85 * LookupPrivilegeValue32W [ADVAPI32.93]
86 * Retrieves LUID used on a system to represent the privilege name.
88 * NOTES
89 * lpLuid should be PLUID
91 * PARAMS
92 * lpSystemName [I] Address of string specifying the system
93 * lpName [I] Address of string specifying the privilege
94 * lpLuid [I] Address of locally unique identifier
96 * RETURNS STD
98 BOOL32 WINAPI LookupPrivilegeValue32W( LPCWSTR lpSystemName,
99 LPCWSTR lpName, LPVOID lpLuid )
101 FIXME(advapi,"(%s,%s,%p): stub\n",debugstr_w(lpSystemName),
102 debugstr_w(lpName), lpLuid);
103 return TRUE;
107 /***********************************************************************
108 * AdjustTokenPrivileges [ADVAPI32.10]
110 BOOL32 WINAPI AdjustTokenPrivileges(HANDLE32 TokenHandle,BOOL32 DisableAllPrivileges,
111 LPVOID NewState,DWORD BufferLength,LPVOID PreviousState,
112 LPDWORD ReturnLength )
114 return TRUE;
117 /***********************************************************************
118 * GetTokenInformation [ADVAPI32.66]
120 BOOL32 WINAPI GetTokenInformation(
121 HANDLE32 token,TOKEN_INFORMATION_CLASS tokeninfoclass,LPVOID tokeninfo,
122 DWORD tokeninfolength,LPDWORD retlen
124 FIXME(advapi,"(%08x,%d,%p,%ld,%p): stub\n",
125 token,tokeninfoclass,tokeninfo,tokeninfolength,retlen);
126 return TRUE;
130 /******************************************************************************
131 * OpenSCManager32A [ADVAPI32.110]
133 HANDLE32 WINAPI OpenSCManager32A( LPCSTR lpMachineName, LPCSTR lpDatabaseName,
134 DWORD dwDesiredAccess )
136 LPWSTR lpMachineNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpMachineName);
137 LPWSTR lpDatabaseNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpDatabaseName);
138 DWORD ret = OpenSCManager32W(lpMachineNameW,lpDatabaseNameW,
139 dwDesiredAccess);
140 HeapFree(GetProcessHeap(),0,lpDatabaseNameW);
141 HeapFree(GetProcessHeap(),0,lpMachineNameW);
142 return ret;
146 /******************************************************************************
147 * OpenSCManager32W [ADVAPI32.111]
148 * Establishes a connection to the service control manager and opens database
150 * NOTES
151 * This should return a SC_HANDLE
153 * PARAMS
154 * lpMachineName [I] Pointer to machine name string
155 * lpDatabaseName [I] Pointer to database name string
156 * dwDesiredAccess [I] Type of access
158 * RETURNS
159 * Success: Handle to service control manager database
160 * Failure: NULL
162 HANDLE32 WINAPI OpenSCManager32W( LPCWSTR lpMachineName, LPCWSTR lpDatabaseName,
163 DWORD dwDesiredAccess )
165 FIXME(advapi,"(%s,%s,0x%08lx): stub\n", debugstr_w(lpMachineName),
166 debugstr_w(lpDatabaseName), dwDesiredAccess);
167 return 1;
171 BOOL32 WINAPI AllocateLocallyUniqueId(LPLUID lpluid) {
172 lpluid->LowPart = time(NULL);
173 lpluid->HighPart = 0;
174 return TRUE;
178 /******************************************************************************
179 * ControlService [ADVAPI32.23]
180 * Sends a control code to a Win32-based service.
182 * NOTES
183 * hService should be SC_HANDLE
185 * RETURNS STD
187 BOOL32 WINAPI ControlService( HANDLE32 hService, DWORD dwControl,
188 LPSERVICE_STATUS lpServiceStatus )
190 FIXME(advapi, "(%d,%ld,%p): stub\n",hService,dwControl,lpServiceStatus);
191 return TRUE;
195 /******************************************************************************
196 * CloseServiceHandle [ADVAPI32.22]
197 * Close handle to service or service control manager
199 * PARAMS
200 * hSCObject [I] Handle to service or service control manager database
202 * NOTES
203 * hSCObject should be SC_HANDLE
205 * RETURNS STD
207 BOOL32 WINAPI CloseServiceHandle( HANDLE32 hSCObject )
209 FIXME(advapi, "(%d): stub\n", hSCObject);
210 return TRUE;
214 /******************************************************************************
215 * GetFileSecurityA [32.45]
216 * Obtains Specified information about the security of a file or directory
217 * The information obtained is constrained by the callers acces rights and
218 * priviliges
221 BOOL32 WINAPI GetFileSecurity32A( LPCSTR lpFileName,
222 SECURITY_INFORMATION RequestedInformation,
223 LPSECURITY_DESCRIPTOR pSecurityDescriptor,
224 DWORD nLength,
225 LPDWORD lpnLengthNeeded)
227 FIXME(advapi, "(%s) : stub\n", debugstr_a(lpFileName));
228 return TRUE;
231 /******************************************************************************
232 * GetFileSecurityiW [32.46]
233 * Obtains Specified information about the security of a file or directory
234 * The information obtained is constrained by the callers acces rights and
235 * priviliges
238 BOOL32 WINAPI GetFileSecurity32W( LPCWSTR lpFileName,
239 SECURITY_INFORMATION RequestedInformation,
240 LPSECURITY_DESCRIPTOR pSecurityDescriptor,
241 DWORD nLength,
242 LPDWORD lpnLengthNeeded)
244 FIXME(advapi, "(%s) : stub\n", debugstr_w(lpFileName) );
245 return TRUE;
248 /******************************************************************************
249 * SetFileSecurityA [32.182]
250 * Sets the security of a file or directory
253 BOOL32 WINAPI SetFileSecurity32A( LPCSTR lpFileName,
254 SECURITY_INFORMATION RequestedInformation,
255 LPSECURITY_DESCRIPTOR pSecurityDescriptor)
257 FIXME(advapi, "(%s) : stub\n", debugstr_a(lpFileName));
258 return TRUE;
261 /******************************************************************************
262 * SetFileSecurityW [32.183]
263 * Sets the security of a file or directory
266 BOOL32 WINAPI SetFileSecurity32W( LPCWSTR lpFileName,
267 SECURITY_INFORMATION RequestedInformation,
268 LPSECURITY_DESCRIPTOR pSecurityDescriptor)
270 FIXME(advapi, "(%s) : stub\n", debugstr_w(lpFileName) );
271 return TRUE;
274 /******************************************************************************
275 * OpenService32A [ADVAPI32.112]
277 HANDLE32 WINAPI OpenService32A( HANDLE32 hSCManager, LPCSTR lpServiceName,
278 DWORD dwDesiredAccess )
280 LPWSTR lpServiceNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpServiceName);
281 DWORD ret = OpenService32W( hSCManager, lpServiceNameW, dwDesiredAccess);
282 HeapFree(GetProcessHeap(),0,lpServiceNameW);
283 return ret;
287 /******************************************************************************
288 * OpenService32W [ADVAPI32.113]
289 * Opens a handle to an existing service
291 * NOTES
292 * The return value should be SC_HANDLE
293 * hSCManager should be SC_HANDLE
295 * RETURNS
296 * Success: Handle to the service
297 * Failure: NULL
299 HANDLE32 WINAPI OpenService32W( HANDLE32 hSCManager, LPCWSTR lpServiceName,
300 DWORD dwDesiredAccess )
302 FIXME(advapi, "(%d,%p,%ld): stub\n",hSCManager, lpServiceName,
303 dwDesiredAccess);
304 return 1;
308 /******************************************************************************
309 * CreateServiceA [ADVAPI32.28]
311 DWORD WINAPI CreateServiceA( DWORD hSCManager, LPCSTR lpServiceName,
312 LPCSTR lpDisplayName, DWORD dwDesiredAccess,
313 DWORD dwServiceType, DWORD dwStartType,
314 DWORD dwErrorControl, LPCSTR lpBinaryPathName,
315 LPCSTR lpLoadOrderGroup, LPDWORD lpdwTagId,
316 LPCSTR lpDependencies, LPCSTR lpServiceStartName,
317 LPCSTR lpPassword )
319 FIXME(advapi, "(%ld,%s,%s,...): stub\n",
320 hSCManager, debugstr_a(lpServiceName), debugstr_a(lpDisplayName));
321 return 1;
325 /******************************************************************************
326 * DeleteService [ADVAPI32.31]
328 * PARAMS
329 * hService [I] Handle to service
331 * RETURNS STD
333 * NOTES
334 * hService should be SC_HANDLE
336 BOOL32 WINAPI DeleteService( HANDLE32 hService )
338 FIXME(advapi, "(%d): stub\n",hService);
339 return TRUE;
343 /******************************************************************************
344 * StartService32A [ADVAPI32.195]
346 * NOTES
347 * How do we convert lpServiceArgVectors to use the 32W version?
349 BOOL32 WINAPI StartService32A( HANDLE32 hService, DWORD dwNumServiceArgs,
350 LPCSTR *lpServiceArgVectors )
352 FIXME(advapi, "(%d,%ld,%p): stub\n",hService,dwNumServiceArgs,lpServiceArgVectors);
353 return TRUE;
357 /******************************************************************************
358 * StartService32W [ADVAPI32.198]
359 * Starts a service
361 * PARAMS
362 * hService [I] Handle of service
363 * dwNumServiceArgs [I] Number of arguments
364 * lpServiceArgVectors [I] Address of array of argument string pointers
366 * RETURNS STD
368 * NOTES
369 * hService should be SC_HANDLE
371 BOOL32 WINAPI StartService32W( HANDLE32 hService, DWORD dwNumServiceArgs,
372 LPCWSTR *lpServiceArgVectors )
374 FIXME(advapi, "(%d,%ld,%p): stub\n",hService,dwNumServiceArgs,
375 lpServiceArgVectors);
376 return TRUE;
380 /******************************************************************************
381 * DeregisterEventSource [ADVAPI32.32]
382 * Closes a handle to the specified event log
384 * PARAMS
385 * hEventLog [I] Handle to event log
387 * RETURNS STD
389 BOOL32 WINAPI DeregisterEventSource( HANDLE32 hEventLog )
391 FIXME(advapi, "(%d): stub\n",hEventLog);
392 return TRUE;
396 /******************************************************************************
397 * RegisterEventSource32A [ADVAPI32.174]
399 HANDLE32 WINAPI RegisterEventSource32A( LPCSTR lpUNCServerName,
400 LPCSTR lpSourceName )
402 LPWSTR lpUNCServerNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpUNCServerName);
403 LPWSTR lpSourceNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpSourceName);
404 HANDLE32 ret = RegisterEventSource32W(lpUNCServerNameW,lpSourceNameW);
405 HeapFree(GetProcessHeap(),0,lpSourceNameW);
406 HeapFree(GetProcessHeap(),0,lpUNCServerNameW);
407 return ret;
411 /******************************************************************************
412 * RegisterEventSource32W [ADVAPI32.175]
413 * Returns a registered handle to an event log
415 * PARAMS
416 * lpUNCServerName [I] Server name for source
417 * lpSourceName [I] Source name for registered handle
419 * RETURNS
420 * Success: Handle
421 * Failure: NULL
423 HANDLE32 WINAPI RegisterEventSource32W( LPCWSTR lpUNCServerName,
424 LPCWSTR lpSourceName )
426 FIXME(advapi, "(%s,%s): stub\n", debugstr_w(lpUNCServerName),
427 debugstr_w(lpSourceName));
428 return 1;
431 /******************************************************************************
432 * QueryServiceStatus [ADVAPI32]
434 BOOL32 WINAPI QueryServiceStatus(/*SC_HANDLE*/HANDLE32 hService,/*LPSERVICE_STATUS*/LPVOID lpservicestatus) {
435 FIXME(advapi,"(%d,%p),stub!\n",hService,lpservicestatus);
436 return TRUE;
439 /******************************************************************************
440 * IsValidSecurityDescriptor [ADVAPI32]
442 BOOL32 WINAPI IsValidSecurityDescriptor(LPSECURITY_DESCRIPTOR lpsecdesc) {
443 FIXME(advapi,"(%p),stub!\n",lpsecdesc);
444 return TRUE;
447 /******************************************************************************
448 * MakeSelfRelativeSD [ADVAPI32]
450 BOOL32 WINAPI MakeSelfRelativeSD(
451 LPSECURITY_DESCRIPTOR lpabssecdesc,
452 LPSECURITY_DESCRIPTOR lpselfsecdesc,LPDWORD lpbuflen
454 FIXME(advapi,"(%p,%p,%p),stub!\n",lpabssecdesc,lpselfsecdesc,lpbuflen);
455 return TRUE;
458 /******************************************************************************
459 * QueryWindows31FilesMigration [ADVAPI32]
461 BOOL32 WINAPI QueryWindows31FilesMigration(DWORD x1) {
462 FIXME(advapi,"(%ld),stub!\n",x1);
463 return TRUE;
466 /******************************************************************************
467 * SynchronizeWindows31FilesAndWindowsNTRegistry [ADVAPI32]
469 BOOL32 WINAPI SynchronizeWindows31FilesAndWindowsNTRegistry(DWORD x1,DWORD x2,DWORD x3,DWORD x4) {
470 FIXME(advapi,"(0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4);
471 return TRUE;
474 /******************************************************************************
475 * LsaOpenPolicy [ADVAPI32]
477 BOOL32 WINAPI LsaOpenPolicy(DWORD x1,DWORD x2,DWORD x3,DWORD x4) {
478 FIXME(advapi,"(0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4);
479 return 0xc0000000; /* generic error */
482 /******************************************************************************
483 * NotifyBootConfigStatus [ADVAPI32]
485 BOOL32 WINAPI NotifyBootConfigStatus(DWORD x1) {
486 FIXME(advapi,"(0x%08lx),stub!\n",x1);
487 return 1;
490 /******************************************************************************
491 * OpenEventLogA [ADVAPI32]
493 HANDLE32 WINAPI OpenEventLog32A(LPCSTR uncname,LPCSTR source) {
494 FIXME(advapi,"(%s,%s),stub!\n",uncname,source);
495 return 0xcafe4242;