Moved ADVAPI32 files to dlls/advapi32.
Added stubs for eventlog functions.
diff --git a/Makefile.in b/Makefile.in
index f7f34af..4a07ba4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -28,6 +28,7 @@
tools/wrc \
controls \
console \
+ dlls/advapi32 \
dlls/comctl32 \
dlls/imagehlp \
dlls/msacm \
@@ -93,6 +94,7 @@
LIBOBJS = \
controls/controls.o \
console/console.o \
+ dlls/advapi32/advapi32.o \
dlls/comctl32/comctl32.o \
dlls/imagehlp/imagehlp.o \
dlls/msacm/msacm.o \
diff --git a/configure b/configure
index 6500fea..644a7ef 100755
--- a/configure
+++ b/configure
@@ -3905,6 +3905,7 @@
controls/Makefile
debugger/Makefile
dlls/Makefile
+dlls/advapi32/Makefile
dlls/comctl32/Makefile
dlls/imagehlp/Makefile
dlls/msacm/Makefile
@@ -4058,6 +4059,7 @@
controls/Makefile
debugger/Makefile
dlls/Makefile
+dlls/advapi32/Makefile
dlls/comctl32/Makefile
dlls/imagehlp/Makefile
dlls/msacm/Makefile
diff --git a/configure.in b/configure.in
index c9e5e0b..fe9ee49 100644
--- a/configure.in
+++ b/configure.in
@@ -557,6 +557,7 @@
controls/Makefile
debugger/Makefile
dlls/Makefile
+dlls/advapi32/Makefile
dlls/comctl32/Makefile
dlls/imagehlp/Makefile
dlls/msacm/Makefile
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 88192d4..281206e 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -1,4 +1,5 @@
SUBDIRS = \
+ advapi32 \
comctl32 \
imagehlp \
msacm \
diff --git a/dlls/advapi32/.cvsignore b/dlls/advapi32/.cvsignore
new file mode 100644
index 0000000..f3c7a7c
--- /dev/null
+++ b/dlls/advapi32/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/dlls/advapi32/Makefile.in b/dlls/advapi32/Makefile.in
new file mode 100644
index 0000000..eea206c
--- /dev/null
+++ b/dlls/advapi32/Makefile.in
@@ -0,0 +1,21 @@
+DEFS = @DLLFLAGS@ -D__WINE__
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR = @srcdir@
+VPATH = @srcdir@
+MODULE = advapi32
+
+C_SRCS = \
+ advapi.c \
+ eventlog.c \
+ security.c \
+ service.c
+
+all: check_wrc $(MODULE).o
+
+@MAKE_RULES@
+
+$(RC_SRCS:.rc=.s): $(WRC)
+
+### Dependencies:
+
diff --git a/dlls/advapi32/advapi.c b/dlls/advapi32/advapi.c
new file mode 100644
index 0000000..483fee3
--- /dev/null
+++ b/dlls/advapi32/advapi.c
@@ -0,0 +1,49 @@
+/*
+ * Win32 advapi functions
+ *
+ * Copyright 1995 Sven Verdoolaege
+ */
+
+#include "windows.h"
+#include "winerror.h"
+#include "debug.h"
+#include "heap.h"
+
+#include <unistd.h>
+
+/***********************************************************************
+ * GetUserNameA [ADVAPI32.67]
+ */
+BOOL32 WINAPI GetUserName32A(LPSTR lpszName, LPDWORD lpSize)
+{
+ size_t len;
+ char *name;
+
+ name=getlogin();
+#if 0
+ /* FIXME: should use getpwuid() here */
+ if (!name) name=cuserid(NULL);
+#endif
+ len = name ? strlen(name) : 0;
+ if (!len || !lpSize || len > *lpSize) {
+ if (lpszName) *lpszName = 0;
+ return 0;
+ }
+ *lpSize=len;
+ strcpy(lpszName, name);
+ return 1;
+}
+
+/***********************************************************************
+ * GetUserNameW [ADVAPI32.68]
+ */
+BOOL32 WINAPI GetUserName32W(LPWSTR lpszName, LPDWORD lpSize)
+{
+ LPSTR name = (LPSTR)HeapAlloc( GetProcessHeap(), 0, *lpSize );
+ DWORD size = *lpSize;
+ BOOL32 res = GetUserName32A(name,lpSize);
+
+ lstrcpynAtoW(lpszName,name,size);
+ HeapFree( GetProcessHeap(), 0, name );
+ return res;
+}
diff --git a/dlls/advapi32/eventlog.c b/dlls/advapi32/eventlog.c
new file mode 100644
index 0000000..26876e8
--- /dev/null
+++ b/dlls/advapi32/eventlog.c
@@ -0,0 +1,204 @@
+/*
+ * Win32 advapi functions
+ *
+ * Copyright 1995 Sven Verdoolaege, 1998 Juergen Schmied
+ */
+
+#include "windows.h"
+#include "winerror.h"
+#include "debug.h"
+#include "heap.h"
+
+/******************************************************************************
+ * BackupEventLog32A [ADVAPI32.15]
+ */
+BOOL32 WINAPI BackupEventLog32A( HANDLE32 hEventLog, LPCSTR lpBackupFileName )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+/******************************************************************************
+ * BackupEventLog32W [ADVAPI32.16]
+ */
+BOOL32 WINAPI BackupEventLog32W( HANDLE32 hEventLog, LPCWSTR lpBackupFileName )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * ClearEventLog32A [ADVAPI32.19]
+ */
+BOOL32 WINAPI ClearEventLog32A ( HANDLE32 hEventLog, LPCSTR lpBackupFileName )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * ClearEventLog32W [ADVAPI32.20]
+ */
+BOOL32 WINAPI ClearEventLog32W ( HANDLE32 hEventLog, LPCWSTR lpBackupFileName )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * CloseEventLog32 [ADVAPI32.21]
+ */
+BOOL32 WINAPI CloseEventLog32 ( HANDLE32 hEventLog )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * DeregisterEventSource32 [ADVAPI32.32]
+ * Closes a handle to the specified event log
+ *
+ * PARAMS
+ * hEventLog [I] Handle to event log
+ *
+ * RETURNS STD
+ */
+BOOL32 WINAPI DeregisterEventSource32( HANDLE32 hEventLog )
+{
+ FIXME(advapi, "(%d): stub\n",hEventLog);
+ return TRUE;
+}
+
+/******************************************************************************
+ * GetNumberOfEventLogRecords32 [ADVAPI32.49]
+ */
+BOOL32 WINAPI GetNumberOfEventLogRecords32( HANDLE32 hEventLog, PDWORD NumberOfRecords )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * GetOldestEventLogRecord [ADVAPI32.50]
+ */
+BOOL32 WINAPI GetOldestEventLogRecord32( HANDLE32 hEventLog, PDWORD OldestRecord )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * NotifyChangeEventLog32 [ADVAPI32.98]
+ */
+BOOL32 WINAPI NotifyChangeEventLog32( HANDLE32 hEventLog, HANDLE32 hEvent )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * OpenBackupEventLog32A [ADVAPI32.105]
+ */
+HANDLE32 WINAPI OpenBackupEventLog32A( LPCSTR lpUNCServerName, LPCSTR lpFileName )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * OpenBackupEventLog32W [ADVAPI32.106]
+ */
+HANDLE32 WINAPI OpenBackupEventLog32W( LPCWSTR lpUNCServerName, LPCWSTR lpFileName )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * OpenEventLogA [ADVAPI32.107]
+ */
+HANDLE32 WINAPI OpenEventLog32A(LPCSTR uncname,LPCSTR source)
+{
+ FIXME(advapi,"(%s,%s),stub!\n",uncname,source);
+ return 0xcafe4242;
+}
+
+/******************************************************************************
+ * OpenEventLog32W [ADVAPI32.108]
+ */
+HANDLE32 WINAPI OpenEventLog32W(LPCWSTR uncname,LPCWSTR source)
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * ReadEventLog32A [ADVAPI32.124]
+ */
+BOOL32 WINAPI ReadEventLog32A( HANDLE32 hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset,
+ LPVOID lpBuffer, DWORD nNumberOfBytesToRead, DWORD *pnBytesRead, DWORD *pnMinNumberOfBytesNeeded )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * ReadEventLog32W [ADVAPI32.125]
+ */
+BOOL32 WINAPI ReadEventLog32W( HANDLE32 hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset,
+ LPVOID lpBuffer, DWORD nNumberOfBytesToRead, DWORD *pnBytesRead, DWORD *pnMinNumberOfBytesNeeded )
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * RegisterEventSource32A [ADVAPI32.174]
+ */
+HANDLE32 WINAPI RegisterEventSource32A( LPCSTR lpUNCServerName, LPCSTR lpSourceName )
+{
+ LPWSTR lpUNCServerNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpUNCServerName);
+ LPWSTR lpSourceNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpSourceName);
+ HANDLE32 ret = RegisterEventSource32W(lpUNCServerNameW,lpSourceNameW);
+ HeapFree(GetProcessHeap(),0,lpSourceNameW);
+ HeapFree(GetProcessHeap(),0,lpUNCServerNameW);
+ return ret;
+}
+
+/******************************************************************************
+ * RegisterEventSource32W [ADVAPI32.175]
+ * Returns a registered handle to an event log
+ *
+ * PARAMS
+ * lpUNCServerName [I] Server name for source
+ * lpSourceName [I] Source name for registered handle
+ *
+ * RETURNS
+ * Success: Handle
+ * Failure: NULL
+ */
+HANDLE32 WINAPI RegisterEventSource32W( LPCWSTR lpUNCServerName, LPCWSTR lpSourceName )
+{
+ FIXME(advapi, "(%s,%s): stub\n", debugstr_w(lpUNCServerName),
+ debugstr_w(lpSourceName));
+ return 1;
+}
+
+/******************************************************************************
+ * ReportEvent32A [ADVAPI32.]
+ */
+BOOL32 WINAPI ReportEvent32A ( HANDLE32 hEventLog, WORD wType, WORD wCategory, DWORD dwEventID,
+ PSID lpUserSid, WORD wNumStrings, DWORD dwDataSize, LPCSTR *lpStrings, LPVOID lpRawData)
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
+
+/******************************************************************************
+ * ReportEvent32W [ADVAPI32.]
+ */
+BOOL32 WINAPI ReportEvent32W ( HANDLE32 hEventLog, WORD wType, WORD wCategory, DWORD dwEventID,
+ PSID lpUserSid, WORD wNumStrings, DWORD dwDataSize, LPCWSTR *lpStrings, LPVOID lpRawData)
+{
+ FIXME(advapi,"stub\n");
+ return TRUE;
+}
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
new file mode 100644
index 0000000..6916ed3
--- /dev/null
+++ b/dlls/advapi32/security.c
@@ -0,0 +1,427 @@
+#include "windows.h"
+#include "winerror.h"
+#include "debug.h"
+#include "heap.h"
+#include "ntdll.h"
+
+BOOL32 WINAPI IsValidSid (LPSID pSid);
+BOOL32 WINAPI EqualSid (LPSID pSid1, LPSID pSid2);
+BOOL32 WINAPI EqualPrefixSid (LPSID pSid1, LPSID pSid2);
+DWORD WINAPI GetSidLengthRequired (BYTE nSubAuthorityCount);
+BOOL32 WINAPI AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, LPSID *pSid);
+VOID* WINAPI FreeSid(LPSID pSid);
+BOOL32 WINAPI InitializeSid (LPSID pSid, LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount);
+LPSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(LPSID pSid);
+DWORD* WINAPI GetSidSubAuthority(LPSID pSid, DWORD nSubAuthority);
+BYTE* WINAPI GetSidSubAuthorityCount(LPSID pSid);
+DWORD WINAPI GetLengthSid(LPSID pSid);
+BOOL32 WINAPI CopySid(DWORD nDestinationSidLength, LPSID pDestinationSid, LPSID pSourceSid);
+
+/******************************************************************************
+ * OpenProcessToken [ADVAPI32.109]
+ * Opens the access token associated with a process
+ *
+ * PARAMS
+ * ProcessHandle [I] Handle to process
+ * DesiredAccess [I] Desired access to process
+ * TokenHandle [O] Pointer to handle of open access token
+ *
+ * RETURNS STD
+ */
+BOOL32 WINAPI OpenProcessToken( HANDLE32 ProcessHandle, DWORD DesiredAccess,
+ HANDLE32 *TokenHandle )
+{
+ FIXME(advapi,"(%08x,%08lx,%p): stub\n",ProcessHandle,DesiredAccess,
+ TokenHandle);
+ return TRUE;
+}
+
+
+/***********************************************************************
+ * OpenThreadToken [ADVAPI32.114]
+ */
+BOOL32 WINAPI OpenThreadToken( HANDLE32 thread,DWORD desiredaccess,
+ BOOL32 openasself,HANDLE32 *thandle )
+{
+ FIXME(advapi,"(%08x,%08lx,%d,%p): stub!\n",
+ thread,desiredaccess,openasself,thandle);
+ return TRUE;
+}
+
+
+/******************************************************************************
+ * LookupPrivilegeValue32A [ADVAPI32.92]
+ */
+BOOL32 WINAPI LookupPrivilegeValue32A( LPCSTR lpSystemName,
+ LPCSTR lpName, LPVOID lpLuid)
+{
+ LPWSTR lpSystemNameW = HEAP_strdupAtoW(GetProcessHeap(), 0, lpSystemName);
+ LPWSTR lpNameW = HEAP_strdupAtoW(GetProcessHeap(), 0, lpName);
+ BOOL32 ret = LookupPrivilegeValue32W( lpSystemNameW, lpNameW, lpLuid);
+ HeapFree(GetProcessHeap(), 0, lpNameW);
+ HeapFree(GetProcessHeap(), 0, lpSystemNameW);
+ return ret;
+}
+
+
+/******************************************************************************
+ * LookupPrivilegeValue32W [ADVAPI32.93]
+ * Retrieves LUID used on a system to represent the privilege name.
+ *
+ * NOTES
+ * lpLuid should be PLUID
+ *
+ * PARAMS
+ * lpSystemName [I] Address of string specifying the system
+ * lpName [I] Address of string specifying the privilege
+ * lpLuid [I] Address of locally unique identifier
+ *
+ * RETURNS STD
+ */
+BOOL32 WINAPI LookupPrivilegeValue32W( LPCWSTR lpSystemName,
+ LPCWSTR lpName, LPVOID lpLuid )
+{
+ FIXME(advapi,"(%s,%s,%p): stub\n",debugstr_w(lpSystemName),
+ debugstr_w(lpName), lpLuid);
+ return TRUE;
+}
+/******************************************************************************
+ * GetFileSecurityA [ADVAPI32.45]
+ * Obtains Specified information about the security of a file or directory
+ * The information obtained is constrained by the callers acces rights and
+ * priviliges
+ */
+
+BOOL32 WINAPI GetFileSecurity32A( LPCSTR lpFileName,
+ SECURITY_INFORMATION RequestedInformation,
+ LPSECURITY_DESCRIPTOR pSecurityDescriptor,
+ DWORD nLength,
+ LPDWORD lpnLengthNeeded)
+{
+ FIXME(advapi, "(%s) : stub\n", debugstr_a(lpFileName));
+ return TRUE;
+}
+
+/******************************************************************************
+ * GetFileSecurityiW [ADVAPI32.46]
+ * Obtains Specified information about the security of a file or directory
+ * The information obtained is constrained by the callers acces rights and
+ * priviliges
+ */
+
+BOOL32 WINAPI GetFileSecurity32W( LPCWSTR lpFileName,
+ SECURITY_INFORMATION RequestedInformation,
+ LPSECURITY_DESCRIPTOR pSecurityDescriptor,
+ DWORD nLength,
+ LPDWORD lpnLengthNeeded)
+{
+ FIXME(advapi, "(%s) : stub\n", debugstr_w(lpFileName) );
+ return TRUE;
+}
+
+
+/***********************************************************************
+ * AdjustTokenPrivileges [ADVAPI32.10]
+ */
+BOOL32 WINAPI AdjustTokenPrivileges(HANDLE32 TokenHandle,BOOL32 DisableAllPrivileges,
+ LPVOID NewState,DWORD BufferLength,LPVOID PreviousState,
+ LPDWORD ReturnLength )
+{
+ return TRUE;
+}
+
+/***********************************************************************
+ * CopySid [ADVAPI.24]
+ */
+BOOL32 WINAPI CopySid (DWORD nDestinationSidLength, LPSID pDestinationSid,
+ LPSID pSourceSid)
+{
+
+ if (!IsValidSid(pSourceSid))
+ return FALSE;
+
+ if (nDestinationSidLength < GetLengthSid(pSourceSid))
+ return FALSE;
+
+ memcpy(pDestinationSid, pSourceSid, GetLengthSid(pSourceSid));
+
+ return TRUE;
+}
+
+/***********************************************************************
+ * IsValidSid (ADVAPI.80)
+ */
+BOOL32 WINAPI IsValidSid (LPSID pSid) {
+ if (!pSid || pSid->Revision != SID_REVISION)
+ return FALSE;
+
+ return TRUE;
+}
+
+/***********************************************************************
+ * EqualSid (ADVAPI.40)
+ */
+BOOL32 WINAPI EqualSid (LPSID pSid1, LPSID pSid2) {
+ if (!IsValidSid(pSid1) || !IsValidSid(pSid2))
+ return FALSE;
+
+ if (*GetSidSubAuthorityCount(pSid1) != *GetSidSubAuthorityCount(pSid2))
+ return FALSE;
+
+ if (memcmp(pSid1, pSid2, GetLengthSid(pSid1)) != 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+/***********************************************************************
+ * EqualPrefixSid (ADVAPI.39)
+ */
+BOOL32 WINAPI EqualPrefixSid (LPSID pSid1, LPSID pSid2) {
+ if (!IsValidSid(pSid1) || !IsValidSid(pSid2))
+ return FALSE;
+
+ if (*GetSidSubAuthorityCount(pSid1) != *GetSidSubAuthorityCount(pSid2))
+ return FALSE;
+
+ if (memcmp(pSid1, pSid2, GetSidLengthRequired(pSid1->SubAuthorityCount - 1))
+ != 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+/***********************************************************************
+ * GetSidLengthRequired (ADVAPI.63)
+ */
+DWORD WINAPI GetSidLengthRequired (BYTE nSubAuthorityCount) {
+ return sizeof (SID) + (nSubAuthorityCount - 1) * sizeof (DWORD);
+}
+
+/***********************************************************************
+ * GetTokenInformation [ADVAPI32.66]
+ */
+BOOL32 WINAPI GetTokenInformation(
+ HANDLE32 token,/*TOKEN_INFORMATION_CLASS*/ DWORD tokeninfoclass,LPVOID tokeninfo,
+ DWORD tokeninfolength,LPDWORD retlen
+) {
+ FIXME(advapi,"(%08x,%ld,%p,%ld,%p): stub\n",
+ token,tokeninfoclass,tokeninfo,tokeninfolength,retlen);
+ return TRUE;
+}
+
+/***********************************************************************
+ * AllocateAndInitializeSid (ADVAPI.11)
+ */
+BOOL32 WINAPI AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
+ BYTE nSubAuthorityCount,
+ DWORD nSubAuthority0, DWORD nSubAuthority1,
+ DWORD nSubAuthority2, DWORD nSubAuthority3,
+ DWORD nSubAuthority4, DWORD nSubAuthority5,
+ DWORD nSubAuthority6, DWORD nSubAuthority7,
+ LPSID *pSid) {
+
+ if (!(*pSid = HeapAlloc( GetProcessHeap(), 0,
+ GetSidLengthRequired(nSubAuthorityCount))))
+ return FALSE;
+ (*pSid)->Revision = SID_REVISION;
+ if (pIdentifierAuthority)
+ memcpy(&(*pSid)->IdentifierAuthority, pIdentifierAuthority,
+ sizeof (SID_IDENTIFIER_AUTHORITY));
+ *GetSidSubAuthorityCount(*pSid) = nSubAuthorityCount;
+
+ if (nSubAuthorityCount > 0)
+ *GetSidSubAuthority(*pSid, 0) = nSubAuthority0;
+ if (nSubAuthorityCount > 1)
+ *GetSidSubAuthority(*pSid, 1) = nSubAuthority1;
+ if (nSubAuthorityCount > 2)
+ *GetSidSubAuthority(*pSid, 2) = nSubAuthority2;
+ if (nSubAuthorityCount > 3)
+ *GetSidSubAuthority(*pSid, 3) = nSubAuthority3;
+ if (nSubAuthorityCount > 4)
+ *GetSidSubAuthority(*pSid, 4) = nSubAuthority4;
+ if (nSubAuthorityCount > 5)
+ *GetSidSubAuthority(*pSid, 5) = nSubAuthority5;
+ if (nSubAuthorityCount > 6)
+ *GetSidSubAuthority(*pSid, 6) = nSubAuthority6;
+ if (nSubAuthorityCount > 7)
+ *GetSidSubAuthority(*pSid, 7) = nSubAuthority7;
+
+ return TRUE;
+}
+
+/***********************************************************************
+ * FreeSid (ADVAPI.42)
+ */
+VOID* WINAPI FreeSid(LPSID pSid)
+{
+ HeapFree( GetProcessHeap(), 0, pSid );
+ return NULL;
+}
+
+/***********************************************************************
+ * InitializeSecurityDescriptor (ADVAPI.73)
+ */
+BOOL32 WINAPI InitializeSecurityDescriptor( SECURITY_DESCRIPTOR *pDescr,
+ DWORD revision )
+{
+ FIXME(security, "(%p,%#lx): stub\n", pDescr, revision);
+ return TRUE;
+}
+
+
+/***********************************************************************
+ * InitializeSid (ADVAPI.74)
+ */
+BOOL32 WINAPI InitializeSid (LPSID pSid, LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
+ BYTE nSubAuthorityCount)
+{
+ int i;
+
+ pSid->Revision = SID_REVISION;
+ if (pIdentifierAuthority)
+ memcpy(&pSid->IdentifierAuthority, pIdentifierAuthority,
+ sizeof (SID_IDENTIFIER_AUTHORITY));
+ *GetSidSubAuthorityCount(pSid) = nSubAuthorityCount;
+
+ for (i = 0; i < nSubAuthorityCount; i++)
+ *GetSidSubAuthority(pSid, i) = 0;
+
+ return TRUE;
+}
+
+/***********************************************************************
+ * GetSidIdentifierAuthority (ADVAPI.62)
+ */
+LPSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority (LPSID pSid)
+{
+ return &pSid->IdentifierAuthority;
+}
+
+/***********************************************************************
+ * GetSidSubAuthority (ADVAPI.64)
+ */
+DWORD * WINAPI GetSidSubAuthority (LPSID pSid, DWORD nSubAuthority)
+{
+ return &pSid->SubAuthority[nSubAuthority];
+}
+
+/***********************************************************************
+ * GetSidSubAuthorityCount [ADVAPI.65]
+ */
+BYTE * WINAPI GetSidSubAuthorityCount (LPSID pSid)
+{
+ return &pSid->SubAuthorityCount;
+}
+
+/***********************************************************************
+ * GetLengthSid [ADVAPI.48]
+ */
+DWORD WINAPI GetLengthSid (LPSID pSid)
+{
+ return GetSidLengthRequired(*GetSidSubAuthorityCount(pSid));
+}
+
+/******************************************************************************
+ * IsValidSecurityDescriptor [ADVAPI32]
+ */
+BOOL32 WINAPI IsValidSecurityDescriptor(LPSECURITY_DESCRIPTOR lpsecdesc) {
+ FIXME(advapi,"(%p),stub!\n",lpsecdesc);
+ return TRUE;
+}
+
+/***********************************************************************
+ * LookupAccountSidA [ADVAPI32.86]
+ */
+BOOL32 WINAPI LookupAccountSid32A(LPCSTR system,PSID sid,
+ LPCSTR account,LPDWORD accountSize,
+ LPCSTR domain, LPDWORD domainSize,
+ PSID_NAME_USE name_use)
+{
+ FIXME(security,"(%s,%p,%p,%p,%p,%p,%p): stub\n",
+ system,sid,account,accountSize,domain,domainSize,name_use);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+/***********************************************************************
+ * LookupAccountSidW [ADVAPI32.86]
+ */
+BOOL32 WINAPI LookupAccountSid32W(LPCWSTR system,PSID sid,
+ LPCWSTR account,LPDWORD accountSize,
+ LPCWSTR domain, LPDWORD domainSize,
+ PSID_NAME_USE name_use)
+{
+ FIXME(security,"(%p,%p,%p,%p,%p,%p,%p): stub\n",
+ system,sid,account,accountSize,domain,domainSize,name_use);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+/******************************************************************************
+ * SetFileSecurityA [ADVAPI32.182]
+ * Sets the security of a file or directory
+ */
+
+BOOL32 WINAPI SetFileSecurity32A( LPCSTR lpFileName,
+ SECURITY_INFORMATION RequestedInformation,
+ LPSECURITY_DESCRIPTOR pSecurityDescriptor)
+{
+ FIXME(advapi, "(%s) : stub\n", debugstr_a(lpFileName));
+ return TRUE;
+}
+
+/******************************************************************************
+ * SetFileSecurityW [ADVAPI32.183]
+ * Sets the security of a file or directory
+ */
+
+BOOL32 WINAPI SetFileSecurity32W( LPCWSTR lpFileName,
+ SECURITY_INFORMATION RequestedInformation,
+ LPSECURITY_DESCRIPTOR pSecurityDescriptor)
+{
+ FIXME(advapi, "(%s) : stub\n", debugstr_w(lpFileName) );
+ return TRUE;
+}
+/******************************************************************************
+ * MakeSelfRelativeSD [ADVAPI32]
+ */
+BOOL32 WINAPI MakeSelfRelativeSD(
+ LPSECURITY_DESCRIPTOR lpabssecdesc,
+ LPSECURITY_DESCRIPTOR lpselfsecdesc,LPDWORD lpbuflen
+) {
+ FIXME(advapi,"(%p,%p,%p),stub!\n",lpabssecdesc,lpselfsecdesc,lpbuflen);
+ return TRUE;
+}
+
+/******************************************************************************
+ * QueryWindows31FilesMigration [ADVAPI32]
+ */
+BOOL32 WINAPI QueryWindows31FilesMigration(DWORD x1) {
+ FIXME(advapi,"(%ld),stub!\n",x1);
+ return TRUE;
+}
+
+/******************************************************************************
+ * SynchronizeWindows31FilesAndWindowsNTRegistry [ADVAPI32]
+ */
+BOOL32 WINAPI SynchronizeWindows31FilesAndWindowsNTRegistry(DWORD x1,DWORD x2,DWORD x3,DWORD x4) {
+ FIXME(advapi,"(0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4);
+ return TRUE;
+}
+
+/******************************************************************************
+ * LsaOpenPolicy [ADVAPI32]
+ */
+BOOL32 WINAPI LsaOpenPolicy(DWORD x1,DWORD x2,DWORD x3,DWORD x4) {
+ FIXME(advapi,"(0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4);
+ return 0xc0000000; /* generic error */
+}
+
+/******************************************************************************
+ * NotifyBootConfigStatus [ADVAPI32]
+ */
+BOOL32 WINAPI NotifyBootConfigStatus(DWORD x1) {
+ FIXME(advapi,"(0x%08lx),stub!\n",x1);
+ return 1;
+}
diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
new file mode 100644
index 0000000..2bf0898
--- /dev/null
+++ b/dlls/advapi32/service.c
@@ -0,0 +1,282 @@
+/*
+ * Win32 advapi functions
+ *
+ * Copyright 1995 Sven Verdoolaege
+ */
+
+#include "windows.h"
+#include "winerror.h"
+#include "debug.h"
+#include "heap.h"
+#include <time.h>
+
+/***********************************************************************
+ * EnumServicesStatus32A [ADVAPI32.37]
+ */
+BOOL32 WINAPI EnumServicesStatus32A( HANDLE32 hSCManager, DWORD dwServiceType,
+ DWORD dwServiceState, LPVOID lpServices,
+ DWORD cbBufSize, LPDWORD pcbBytesNeeded,
+ LPDWORD lpServicesReturned, LPDWORD lpResumeHandle)
+{ FIXME (advapi,"%x type=%lx state=%lx %p %lx %p %p %p\n", hSCManager,
+ dwServiceType, dwServiceState, lpServices, cbBufSize,
+ pcbBytesNeeded, lpServicesReturned, lpResumeHandle);
+ SetLastError (ERROR_ACCESS_DENIED);
+ return 0;
+}
+/***********************************************************************
+ * StartServiceCtrlDispatcherA [ADVAPI32.196]
+ */
+BOOL32 WINAPI StartServiceCtrlDispatcher32A(LPSERVICE_TABLE_ENTRY32A servent)
+{ LPSERVICE_TABLE_ENTRY32A ptr = servent;
+
+ while (ptr->lpServiceName)
+ { FIXME(advapi,"%s at %p\n", ptr->lpServiceName, ptr);
+ ptr++;
+ }
+ return TRUE;
+}
+
+/***********************************************************************
+ * StartServiceCtrlDispatcherW [ADVAPI32.197]
+ */
+BOOL32 WINAPI StartServiceCtrlDispatcher32W(LPSERVICE_TABLE_ENTRY32W servent)
+{ 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;
+}
+
+/******************************************************************************
+ * OpenSCManager32A [ADVAPI32.110]
+ */
+HANDLE32 WINAPI OpenSCManager32A( LPCSTR lpMachineName, LPCSTR lpDatabaseName,
+ DWORD dwDesiredAccess )
+{
+ LPWSTR lpMachineNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpMachineName);
+ LPWSTR lpDatabaseNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpDatabaseName);
+ DWORD ret = OpenSCManager32W(lpMachineNameW,lpDatabaseNameW,
+ dwDesiredAccess);
+ HeapFree(GetProcessHeap(),0,lpDatabaseNameW);
+ HeapFree(GetProcessHeap(),0,lpMachineNameW);
+ return ret;
+}
+
+
+/******************************************************************************
+ * OpenSCManager32W [ADVAPI32.111]
+ * Establishes a connection to the service control manager and opens database
+ *
+ * NOTES
+ * This should return a SC_HANDLE
+ *
+ * PARAMS
+ * lpMachineName [I] Pointer to machine name string
+ * lpDatabaseName [I] Pointer to database name string
+ * dwDesiredAccess [I] Type of access
+ *
+ * RETURNS
+ * Success: Handle to service control manager database
+ * Failure: NULL
+ */
+HANDLE32 WINAPI OpenSCManager32W( LPCWSTR lpMachineName, LPCWSTR lpDatabaseName,
+ DWORD dwDesiredAccess )
+{
+ FIXME(advapi,"(%s,%s,0x%08lx): stub\n", debugstr_w(lpMachineName),
+ debugstr_w(lpDatabaseName), dwDesiredAccess);
+ return 1;
+}
+
+
+BOOL32 WINAPI AllocateLocallyUniqueId(LPLUID lpluid) {
+ lpluid->LowPart = time(NULL);
+ lpluid->HighPart = 0;
+ return TRUE;
+}
+
+
+/******************************************************************************
+ * ControlService [ADVAPI32.23]
+ * Sends a control code to a Win32-based service.
+ *
+ * NOTES
+ * hService should be SC_HANDLE
+ *
+ * RETURNS STD
+ */
+BOOL32 WINAPI ControlService( HANDLE32 hService, DWORD dwControl,
+ LPSERVICE_STATUS lpServiceStatus )
+{
+ FIXME(advapi, "(%d,%ld,%p): stub\n",hService,dwControl,lpServiceStatus);
+ return TRUE;
+}
+
+
+/******************************************************************************
+ * CloseServiceHandle [ADVAPI32.22]
+ * Close handle to service or service control manager
+ *
+ * PARAMS
+ * hSCObject [I] Handle to service or service control manager database
+ *
+ * NOTES
+ * hSCObject should be SC_HANDLE
+ *
+ * RETURNS STD
+ */
+BOOL32 WINAPI CloseServiceHandle( HANDLE32 hSCObject )
+{
+ FIXME(advapi, "(%d): stub\n", hSCObject);
+ return TRUE;
+}
+
+
+/******************************************************************************
+ * OpenService32A [ADVAPI32.112]
+ */
+HANDLE32 WINAPI OpenService32A( HANDLE32 hSCManager, LPCSTR lpServiceName,
+ DWORD dwDesiredAccess )
+{
+ LPWSTR lpServiceNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpServiceName);
+ DWORD ret = OpenService32W( hSCManager, lpServiceNameW, dwDesiredAccess);
+ HeapFree(GetProcessHeap(),0,lpServiceNameW);
+ return ret;
+}
+
+
+/******************************************************************************
+ * OpenService32W [ADVAPI32.113]
+ * Opens a handle to an existing service
+ *
+ * NOTES
+ * The return value should be SC_HANDLE
+ * hSCManager should be SC_HANDLE
+ *
+ * RETURNS
+ * Success: Handle to the service
+ * Failure: NULL
+ */
+HANDLE32 WINAPI OpenService32W( HANDLE32 hSCManager, LPCWSTR lpServiceName,
+ DWORD dwDesiredAccess )
+{
+ FIXME(advapi, "(%d,%p,%ld): stub\n",hSCManager, lpServiceName,
+ dwDesiredAccess);
+ return 1;
+}
+
+
+/******************************************************************************
+ * CreateService32A [ADVAPI32.28]
+ */
+DWORD WINAPI CreateService32A( DWORD hSCManager, LPCSTR lpServiceName,
+ LPCSTR lpDisplayName, DWORD dwDesiredAccess,
+ DWORD dwServiceType, DWORD dwStartType,
+ DWORD dwErrorControl, LPCSTR lpBinaryPathName,
+ LPCSTR lpLoadOrderGroup, LPDWORD lpdwTagId,
+ LPCSTR lpDependencies, LPCSTR lpServiceStartName,
+ LPCSTR lpPassword )
+{
+ FIXME(advapi, "(%ld,%s,%s,...): stub\n",
+ hSCManager, debugstr_a(lpServiceName), debugstr_a(lpDisplayName));
+ return 1;
+}
+
+
+/******************************************************************************
+ * DeleteService [ADVAPI32.31]
+ *
+ * PARAMS
+ * hService [I] Handle to service
+ *
+ * RETURNS STD
+ *
+ * NOTES
+ * hService should be SC_HANDLE
+ */
+BOOL32 WINAPI DeleteService( HANDLE32 hService )
+{
+ FIXME(advapi, "(%d): stub\n",hService);
+ return TRUE;
+}
+
+
+/******************************************************************************
+ * StartService32A [ADVAPI32.195]
+ *
+ * NOTES
+ * How do we convert lpServiceArgVectors to use the 32W version?
+ */
+BOOL32 WINAPI StartService32A( HANDLE32 hService, DWORD dwNumServiceArgs,
+ LPCSTR *lpServiceArgVectors )
+{
+ FIXME(advapi, "(%d,%ld,%p): stub\n",hService,dwNumServiceArgs,lpServiceArgVectors);
+ return TRUE;
+}
+
+
+/******************************************************************************
+ * StartService32W [ADVAPI32.198]
+ * Starts a service
+ *
+ * PARAMS
+ * hService [I] Handle of service
+ * dwNumServiceArgs [I] Number of arguments
+ * lpServiceArgVectors [I] Address of array of argument string pointers
+ *
+ * RETURNS STD
+ *
+ * NOTES
+ * hService should be SC_HANDLE
+ */
+BOOL32 WINAPI StartService32W( HANDLE32 hService, DWORD dwNumServiceArgs,
+ LPCWSTR *lpServiceArgVectors )
+{
+ FIXME(advapi, "(%d,%ld,%p): stub\n",hService,dwNumServiceArgs,
+ lpServiceArgVectors);
+ return TRUE;
+}
+
+/******************************************************************************
+ * QueryServiceStatus [ADVAPI32]
+ */
+BOOL32 WINAPI QueryServiceStatus(/*SC_HANDLE*/HANDLE32 hService,/*LPSERVICE_STATUS*/LPVOID lpservicestatus) {
+ FIXME(advapi,"(%d,%p),stub!\n",hService,lpservicestatus);
+ return TRUE;
+}
+
diff --git a/relay32/advapi32.spec b/relay32/advapi32.spec
index c42e52f..f83c156 100644
--- a/relay32/advapi32.spec
+++ b/relay32/advapi32.spec
@@ -16,13 +16,13 @@
0012 stdcall AllocateLocallyUniqueId(ptr) AllocateLocallyUniqueId
0013 stub AreAllAccessesGranted
0014 stub AreAnyAccessesGranted
-0015 stub BackupEventLogA
-0016 stub BackupEventLogW
+0015 stdcall BackupEventLogA (long str) BackupEventLog32A
+0016 stdcall BackupEventLogW (long wstr) BackupEventLog32W
0017 stub ChangeServiceConfigA
0018 stub ChangeServiceConfigW
-0019 stub ClearEventLogA
-0020 stub ClearEventLogW
-0021 stub CloseEventLog
+0019 stdcall ClearEventLogA (long str) ClearEventLog32A
+0020 stdcall ClearEventLogW (long wstr) ClearEventLog32W
+0021 stdcall CloseEventLog (long) CloseEventLog32
0022 stdcall CloseServiceHandle(long) CloseServiceHandle
0023 stdcall ControlService(long long ptr) ControlService
0024 stdcall CopySid(long ptr ptr) CopySid
@@ -33,7 +33,7 @@
0029 stdcall CreateServiceW (long ptr ptr long long long long ptr ptr ptr ptr ptr ptr) CreateService32A
0030 stub DeleteAce
0031 stdcall DeleteService(long) DeleteService
-0032 stdcall DeregisterEventSource(long) DeregisterEventSource
+0032 stdcall DeregisterEventSource(long) DeregisterEventSource32
0033 stub DestroyPrivateObjectSecurity
0034 stub DuplicateToken
0035 stub EnumDependentServicesA
@@ -50,8 +50,8 @@
0046 stdcall GetFileSecurityW(wstr long ptr long ptr) GetFileSecurity32W
0047 stub GetKernelObjectSecurity
0048 stdcall GetLengthSid(ptr) GetLengthSid
-0049 stub GetNumberOfEventLogRecords
-0050 stub GetOldestEventLogRecord
+0049 stdcall GetNumberOfEventLogRecords (long ptr) GetNumberOfEventLogRecords32
+0050 stdcall GetOldestEventLogRecord (long ptr) GetOldestEventLogRecord32
0051 stub GetPrivateObjectSecurity
0052 stub GetSecurityDescriptorControl
0053 stub GetSecurityDescriptorDacl
@@ -99,17 +99,17 @@
0095 stdcall MakeSelfRelativeSD(ptr ptr ptr) MakeSelfRelativeSD
0096 stub MapGenericMask
0097 stdcall NotifyBootConfigStatus(long) NotifyBootConfigStatus
-0098 stub NotifyChangeEventLog
+0098 stdcall NotifyChangeEventLog (long long) NotifyChangeEventLog32
0099 stub ObjectCloseAuditAlarmA
0100 stub ObjectCloseAuditAlarmW
0101 stub ObjectOpenAuditAlarmA
0102 stub ObjectOpenAuditAlarmW
0103 stub ObjectPrivilegeAuditAlarmA
0104 stub ObjectPrivilegeAuditAlarmW
-0105 stub OpenBackupEventLogA
-0106 stub OpenBackupEventLogW
-0107 stdcall OpenEventLogA(str str) OpenEventLog32A
-0108 stub OpenEventLogW
+0105 stdcall OpenBackupEventLogA (str str) OpenBackupEventLog32A
+0106 stdcall OpenBackupEventLogW (wstr wstr) OpenBackupEventLog32W
+0107 stdcall OpenEventLogA (str str) OpenEventLog32A
+0108 stdcall OpenEventLogW (wstr wstr) OpenEventLog32W
0109 stdcall OpenProcessToken(long long ptr) OpenProcessToken
0110 stdcall OpenSCManagerA(ptr ptr long) OpenSCManager32A
0111 stdcall OpenSCManagerW(ptr ptr long) OpenSCManager32W
@@ -125,8 +125,8 @@
0121 stub QueryServiceLockStatusW
0122 stub QueryServiceObjectSecurity
0123 stdcall QueryServiceStatus(long ptr) QueryServiceStatus
-0124 stub ReadEventLogA
-0125 stub ReadEventLogW
+0124 stdcall ReadEventLogA (long long long ptr long ptr ptr) ReadEventLog32A
+0125 stdcall ReadEventLogW (long long long ptr long ptr ptr) ReadEventLog32W
0126 stdcall RegCloseKey(long) RegCloseKey
0127 stdcall RegConnectRegistryA(str long ptr) RegConnectRegistry32A
0128 stdcall RegConnectRegistryW(wstr long ptr) RegConnectRegistry32W
@@ -179,8 +179,8 @@
0175 stdcall RegisterEventSourceW(ptr ptr) RegisterEventSource32W
0176 stdcall RegisterServiceCtrlHandlerA (ptr ptr) RegisterServiceCtrlHandlerA
0177 stdcall RegisterServiceCtrlHandlerW (ptr ptr) RegisterServiceCtrlHandlerW
-0178 stub ReportEventA
-0179 stub ReportEventW
+0178 stdcall ReportEventA (long long long long ptr long long str ptr) ReportEvent32A
+0179 stdcall ReportEventW (long long long long ptr long long wstr ptr) ReportEvent32W
0180 stub RevertToSelf
0181 stub SetAclInformation
0182 stdcall SetFileSecurityA(str long ptr ) SetFileSecurity32A
diff --git a/win32/Makefile.in b/win32/Makefile.in
index d79c670..ecfc1f2 100644
--- a/win32/Makefile.in
+++ b/win32/Makefile.in
@@ -6,7 +6,6 @@
MODULE = win32
C_SRCS = \
- advapi.c \
code_page.c \
console.c \
device.c \
@@ -18,7 +17,6 @@
newfns.c \
ordinals.c \
process.c \
- security.c \
struct32.c \
thread.c \
time.c
diff --git a/win32/advapi.c b/win32/advapi.c
deleted file mode 100644
index f66f16e..0000000
--- a/win32/advapi.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/*
- * Win32 advapi functions
- *
- * Copyright 1995 Sven Verdoolaege
- */
-
-#include <unistd.h>
-#include <time.h>
-#include "windows.h"
-#include "winerror.h"
-#include "shell.h"
-#include "heap.h"
-#include "debug.h"
-/***********************************************************************
- * EnumServicesStatus32A [ADVAPI32.37]
- */
-BOOL32 WINAPI EnumServicesStatus32A( HANDLE32 hSCManager, DWORD dwServiceType,
- DWORD dwServiceState, LPVOID lpServices,
- DWORD cbBufSize, LPDWORD pcbBytesNeeded,
- LPDWORD lpServicesReturned, LPDWORD lpResumeHandle)
-{ FIXME (advapi,"%x type=%lx state=%lx %p %lx %p %p %p\n", hSCManager,
- dwServiceType, dwServiceState, lpServices, cbBufSize,
- pcbBytesNeeded, lpServicesReturned, lpResumeHandle);
- SetLastError (ERROR_ACCESS_DENIED);
- return 0;
-}
-/***********************************************************************
- * StartServiceCtrlDispatcherA [ADVAPI32.196]
- */
-BOOL32 WINAPI StartServiceCtrlDispatcher32A(LPSERVICE_TABLE_ENTRY32A servent)
-{ LPSERVICE_TABLE_ENTRY32A ptr = servent;
-
- while (ptr->lpServiceName)
- { FIXME(advapi,"%s at %p\n", ptr->lpServiceName, ptr);
- ptr++;
- }
- return TRUE;
-}
-
-/***********************************************************************
- * StartServiceCtrlDispatcherW [ADVAPI32.197]
- */
-BOOL32 WINAPI StartServiceCtrlDispatcher32W(LPSERVICE_TABLE_ENTRY32W servent)
-{ 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
- *
- * PARAMS
- * ProcessHandle [I] Handle to process
- * DesiredAccess [I] Desired access to process
- * TokenHandle [O] Pointer to handle of open access token
- *
- * RETURNS STD
- */
-BOOL32 WINAPI OpenProcessToken( HANDLE32 ProcessHandle, DWORD DesiredAccess,
- HANDLE32 *TokenHandle )
-{
- FIXME(advapi,"(%08x,%08lx,%p): stub\n",ProcessHandle,DesiredAccess,
- TokenHandle);
- return TRUE;
-}
-
-
-/***********************************************************************
- * OpenThreadToken [ADVAPI32.114]
- */
-BOOL32 WINAPI OpenThreadToken( HANDLE32 thread,DWORD desiredaccess,
- BOOL32 openasself,HANDLE32 *thandle )
-{
- FIXME(advapi,"(%08x,%08lx,%d,%p): stub!\n",
- thread,desiredaccess,openasself,thandle);
- return TRUE;
-}
-
-
-/******************************************************************************
- * LookupPrivilegeValue32A [ADVAPI32.92]
- */
-BOOL32 WINAPI LookupPrivilegeValue32A( LPCSTR lpSystemName,
- LPCSTR lpName, LPVOID lpLuid)
-{
- LPWSTR lpSystemNameW = HEAP_strdupAtoW(GetProcessHeap(), 0, lpSystemName);
- LPWSTR lpNameW = HEAP_strdupAtoW(GetProcessHeap(), 0, lpName);
- BOOL32 ret = LookupPrivilegeValue32W( lpSystemNameW, lpNameW, lpLuid);
- HeapFree(GetProcessHeap(), 0, lpNameW);
- HeapFree(GetProcessHeap(), 0, lpSystemNameW);
- return ret;
-}
-
-
-/******************************************************************************
- * LookupPrivilegeValue32W [ADVAPI32.93]
- * Retrieves LUID used on a system to represent the privilege name.
- *
- * NOTES
- * lpLuid should be PLUID
- *
- * PARAMS
- * lpSystemName [I] Address of string specifying the system
- * lpName [I] Address of string specifying the privilege
- * lpLuid [I] Address of locally unique identifier
- *
- * RETURNS STD
- */
-BOOL32 WINAPI LookupPrivilegeValue32W( LPCWSTR lpSystemName,
- LPCWSTR lpName, LPVOID lpLuid )
-{
- FIXME(advapi,"(%s,%s,%p): stub\n",debugstr_w(lpSystemName),
- debugstr_w(lpName), lpLuid);
- return TRUE;
-}
-
-
-/***********************************************************************
- * AdjustTokenPrivileges [ADVAPI32.10]
- */
-BOOL32 WINAPI AdjustTokenPrivileges(HANDLE32 TokenHandle,BOOL32 DisableAllPrivileges,
- LPVOID NewState,DWORD BufferLength,LPVOID PreviousState,
- LPDWORD ReturnLength )
-{
- return TRUE;
-}
-
-/***********************************************************************
- * GetTokenInformation [ADVAPI32.66]
- */
-BOOL32 WINAPI GetTokenInformation(
- HANDLE32 token,TOKEN_INFORMATION_CLASS tokeninfoclass,LPVOID tokeninfo,
- DWORD tokeninfolength,LPDWORD retlen
-) {
- FIXME(advapi,"(%08x,%d,%p,%ld,%p): stub\n",
- token,tokeninfoclass,tokeninfo,tokeninfolength,retlen);
- return TRUE;
-}
-
-
-/******************************************************************************
- * OpenSCManager32A [ADVAPI32.110]
- */
-HANDLE32 WINAPI OpenSCManager32A( LPCSTR lpMachineName, LPCSTR lpDatabaseName,
- DWORD dwDesiredAccess )
-{
- LPWSTR lpMachineNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpMachineName);
- LPWSTR lpDatabaseNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpDatabaseName);
- DWORD ret = OpenSCManager32W(lpMachineNameW,lpDatabaseNameW,
- dwDesiredAccess);
- HeapFree(GetProcessHeap(),0,lpDatabaseNameW);
- HeapFree(GetProcessHeap(),0,lpMachineNameW);
- return ret;
-}
-
-
-/******************************************************************************
- * OpenSCManager32W [ADVAPI32.111]
- * Establishes a connection to the service control manager and opens database
- *
- * NOTES
- * This should return a SC_HANDLE
- *
- * PARAMS
- * lpMachineName [I] Pointer to machine name string
- * lpDatabaseName [I] Pointer to database name string
- * dwDesiredAccess [I] Type of access
- *
- * RETURNS
- * Success: Handle to service control manager database
- * Failure: NULL
- */
-HANDLE32 WINAPI OpenSCManager32W( LPCWSTR lpMachineName, LPCWSTR lpDatabaseName,
- DWORD dwDesiredAccess )
-{
- FIXME(advapi,"(%s,%s,0x%08lx): stub\n", debugstr_w(lpMachineName),
- debugstr_w(lpDatabaseName), dwDesiredAccess);
- return 1;
-}
-
-
-BOOL32 WINAPI AllocateLocallyUniqueId(LPLUID lpluid) {
- lpluid->LowPart = time(NULL);
- lpluid->HighPart = 0;
- return TRUE;
-}
-
-
-/******************************************************************************
- * ControlService [ADVAPI32.23]
- * Sends a control code to a Win32-based service.
- *
- * NOTES
- * hService should be SC_HANDLE
- *
- * RETURNS STD
- */
-BOOL32 WINAPI ControlService( HANDLE32 hService, DWORD dwControl,
- LPSERVICE_STATUS lpServiceStatus )
-{
- FIXME(advapi, "(%d,%ld,%p): stub\n",hService,dwControl,lpServiceStatus);
- return TRUE;
-}
-
-
-/******************************************************************************
- * CloseServiceHandle [ADVAPI32.22]
- * Close handle to service or service control manager
- *
- * PARAMS
- * hSCObject [I] Handle to service or service control manager database
- *
- * NOTES
- * hSCObject should be SC_HANDLE
- *
- * RETURNS STD
- */
-BOOL32 WINAPI CloseServiceHandle( HANDLE32 hSCObject )
-{
- FIXME(advapi, "(%d): stub\n", hSCObject);
- return TRUE;
-}
-
-
-/******************************************************************************
- * GetFileSecurityA [32.45]
- * Obtains Specified information about the security of a file or directory
- * The information obtained is constrained by the callers acces rights and
- * priviliges
- */
-
-BOOL32 WINAPI GetFileSecurity32A( LPCSTR lpFileName,
- SECURITY_INFORMATION RequestedInformation,
- LPSECURITY_DESCRIPTOR pSecurityDescriptor,
- DWORD nLength,
- LPDWORD lpnLengthNeeded)
-{
- FIXME(advapi, "(%s) : stub\n", debugstr_a(lpFileName));
- return TRUE;
-}
-
-/******************************************************************************
- * GetFileSecurityiW [32.46]
- * Obtains Specified information about the security of a file or directory
- * The information obtained is constrained by the callers acces rights and
- * priviliges
- */
-
-BOOL32 WINAPI GetFileSecurity32W( LPCWSTR lpFileName,
- SECURITY_INFORMATION RequestedInformation,
- LPSECURITY_DESCRIPTOR pSecurityDescriptor,
- DWORD nLength,
- LPDWORD lpnLengthNeeded)
-{
- FIXME(advapi, "(%s) : stub\n", debugstr_w(lpFileName) );
- return TRUE;
-}
-
-/******************************************************************************
- * SetFileSecurityA [32.182]
- * Sets the security of a file or directory
- */
-
-BOOL32 WINAPI SetFileSecurity32A( LPCSTR lpFileName,
- SECURITY_INFORMATION RequestedInformation,
- LPSECURITY_DESCRIPTOR pSecurityDescriptor)
-{
- FIXME(advapi, "(%s) : stub\n", debugstr_a(lpFileName));
- return TRUE;
-}
-
-/******************************************************************************
- * SetFileSecurityW [32.183]
- * Sets the security of a file or directory
- */
-
-BOOL32 WINAPI SetFileSecurity32W( LPCWSTR lpFileName,
- SECURITY_INFORMATION RequestedInformation,
- LPSECURITY_DESCRIPTOR pSecurityDescriptor)
-{
- FIXME(advapi, "(%s) : stub\n", debugstr_w(lpFileName) );
- return TRUE;
-}
-
-/******************************************************************************
- * OpenService32A [ADVAPI32.112]
- */
-HANDLE32 WINAPI OpenService32A( HANDLE32 hSCManager, LPCSTR lpServiceName,
- DWORD dwDesiredAccess )
-{
- LPWSTR lpServiceNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpServiceName);
- DWORD ret = OpenService32W( hSCManager, lpServiceNameW, dwDesiredAccess);
- HeapFree(GetProcessHeap(),0,lpServiceNameW);
- return ret;
-}
-
-
-/******************************************************************************
- * OpenService32W [ADVAPI32.113]
- * Opens a handle to an existing service
- *
- * NOTES
- * The return value should be SC_HANDLE
- * hSCManager should be SC_HANDLE
- *
- * RETURNS
- * Success: Handle to the service
- * Failure: NULL
- */
-HANDLE32 WINAPI OpenService32W( HANDLE32 hSCManager, LPCWSTR lpServiceName,
- DWORD dwDesiredAccess )
-{
- FIXME(advapi, "(%d,%p,%ld): stub\n",hSCManager, lpServiceName,
- dwDesiredAccess);
- return 1;
-}
-
-
-/******************************************************************************
- * CreateService32A [ADVAPI32.28]
- */
-DWORD WINAPI CreateService32A( DWORD hSCManager, LPCSTR lpServiceName,
- LPCSTR lpDisplayName, DWORD dwDesiredAccess,
- DWORD dwServiceType, DWORD dwStartType,
- DWORD dwErrorControl, LPCSTR lpBinaryPathName,
- LPCSTR lpLoadOrderGroup, LPDWORD lpdwTagId,
- LPCSTR lpDependencies, LPCSTR lpServiceStartName,
- LPCSTR lpPassword )
-{
- FIXME(advapi, "(%ld,%s,%s,...): stub\n",
- hSCManager, debugstr_a(lpServiceName), debugstr_a(lpDisplayName));
- return 1;
-}
-
-
-/******************************************************************************
- * DeleteService [ADVAPI32.31]
- *
- * PARAMS
- * hService [I] Handle to service
- *
- * RETURNS STD
- *
- * NOTES
- * hService should be SC_HANDLE
- */
-BOOL32 WINAPI DeleteService( HANDLE32 hService )
-{
- FIXME(advapi, "(%d): stub\n",hService);
- return TRUE;
-}
-
-
-/******************************************************************************
- * StartService32A [ADVAPI32.195]
- *
- * NOTES
- * How do we convert lpServiceArgVectors to use the 32W version?
- */
-BOOL32 WINAPI StartService32A( HANDLE32 hService, DWORD dwNumServiceArgs,
- LPCSTR *lpServiceArgVectors )
-{
- FIXME(advapi, "(%d,%ld,%p): stub\n",hService,dwNumServiceArgs,lpServiceArgVectors);
- return TRUE;
-}
-
-
-/******************************************************************************
- * StartService32W [ADVAPI32.198]
- * Starts a service
- *
- * PARAMS
- * hService [I] Handle of service
- * dwNumServiceArgs [I] Number of arguments
- * lpServiceArgVectors [I] Address of array of argument string pointers
- *
- * RETURNS STD
- *
- * NOTES
- * hService should be SC_HANDLE
- */
-BOOL32 WINAPI StartService32W( HANDLE32 hService, DWORD dwNumServiceArgs,
- LPCWSTR *lpServiceArgVectors )
-{
- FIXME(advapi, "(%d,%ld,%p): stub\n",hService,dwNumServiceArgs,
- lpServiceArgVectors);
- return TRUE;
-}
-
-
-/******************************************************************************
- * DeregisterEventSource [ADVAPI32.32]
- * Closes a handle to the specified event log
- *
- * PARAMS
- * hEventLog [I] Handle to event log
- *
- * RETURNS STD
- */
-BOOL32 WINAPI DeregisterEventSource( HANDLE32 hEventLog )
-{
- FIXME(advapi, "(%d): stub\n",hEventLog);
- return TRUE;
-}
-
-
-/******************************************************************************
- * RegisterEventSource32A [ADVAPI32.174]
- */
-HANDLE32 WINAPI RegisterEventSource32A( LPCSTR lpUNCServerName,
- LPCSTR lpSourceName )
-{
- LPWSTR lpUNCServerNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpUNCServerName);
- LPWSTR lpSourceNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpSourceName);
- HANDLE32 ret = RegisterEventSource32W(lpUNCServerNameW,lpSourceNameW);
- HeapFree(GetProcessHeap(),0,lpSourceNameW);
- HeapFree(GetProcessHeap(),0,lpUNCServerNameW);
- return ret;
-}
-
-
-/******************************************************************************
- * RegisterEventSource32W [ADVAPI32.175]
- * Returns a registered handle to an event log
- *
- * PARAMS
- * lpUNCServerName [I] Server name for source
- * lpSourceName [I] Source name for registered handle
- *
- * RETURNS
- * Success: Handle
- * Failure: NULL
- */
-HANDLE32 WINAPI RegisterEventSource32W( LPCWSTR lpUNCServerName,
- LPCWSTR lpSourceName )
-{
- FIXME(advapi, "(%s,%s): stub\n", debugstr_w(lpUNCServerName),
- debugstr_w(lpSourceName));
- return 1;
-}
-
-/******************************************************************************
- * QueryServiceStatus [ADVAPI32]
- */
-BOOL32 WINAPI QueryServiceStatus(/*SC_HANDLE*/HANDLE32 hService,/*LPSERVICE_STATUS*/LPVOID lpservicestatus) {
- FIXME(advapi,"(%d,%p),stub!\n",hService,lpservicestatus);
- return TRUE;
-}
-
-/******************************************************************************
- * IsValidSecurityDescriptor [ADVAPI32]
- */
-BOOL32 WINAPI IsValidSecurityDescriptor(LPSECURITY_DESCRIPTOR lpsecdesc) {
- FIXME(advapi,"(%p),stub!\n",lpsecdesc);
- return TRUE;
-}
-
-/******************************************************************************
- * MakeSelfRelativeSD [ADVAPI32]
- */
-BOOL32 WINAPI MakeSelfRelativeSD(
- LPSECURITY_DESCRIPTOR lpabssecdesc,
- LPSECURITY_DESCRIPTOR lpselfsecdesc,LPDWORD lpbuflen
-) {
- FIXME(advapi,"(%p,%p,%p),stub!\n",lpabssecdesc,lpselfsecdesc,lpbuflen);
- return TRUE;
-}
-
-/******************************************************************************
- * QueryWindows31FilesMigration [ADVAPI32]
- */
-BOOL32 WINAPI QueryWindows31FilesMigration(DWORD x1) {
- FIXME(advapi,"(%ld),stub!\n",x1);
- return TRUE;
-}
-
-/******************************************************************************
- * SynchronizeWindows31FilesAndWindowsNTRegistry [ADVAPI32]
- */
-BOOL32 WINAPI SynchronizeWindows31FilesAndWindowsNTRegistry(DWORD x1,DWORD x2,DWORD x3,DWORD x4) {
- FIXME(advapi,"(0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4);
- return TRUE;
-}
-
-/******************************************************************************
- * LsaOpenPolicy [ADVAPI32]
- */
-BOOL32 WINAPI LsaOpenPolicy(DWORD x1,DWORD x2,DWORD x3,DWORD x4) {
- FIXME(advapi,"(0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4);
- return 0xc0000000; /* generic error */
-}
-
-/******************************************************************************
- * NotifyBootConfigStatus [ADVAPI32]
- */
-BOOL32 WINAPI NotifyBootConfigStatus(DWORD x1) {
- FIXME(advapi,"(0x%08lx),stub!\n",x1);
- return 1;
-}
-
-/******************************************************************************
- * OpenEventLogA [ADVAPI32]
- */
-HANDLE32 WINAPI OpenEventLog32A(LPCSTR uncname,LPCSTR source) {
- FIXME(advapi,"(%s,%s),stub!\n",uncname,source);
- return 0xcafe4242;
-}
-
diff --git a/win32/init.c b/win32/init.c
index 411ff82..267ec4c 100644
--- a/win32/init.c
+++ b/win32/init.c
@@ -72,39 +72,3 @@
return ret;
}
-/***********************************************************************
- * GetUserNameA [ADVAPI32.67]
- */
-BOOL32 WINAPI GetUserName32A(LPSTR lpszName, LPDWORD lpSize)
-{
- size_t len;
- char *name;
-
- name=getlogin();
-#if 0
- /* FIXME: should use getpwuid() here */
- if (!name) name=cuserid(NULL);
-#endif
- len = name ? strlen(name) : 0;
- if (!len || !lpSize || len > *lpSize) {
- if (lpszName) *lpszName = 0;
- return 0;
- }
- *lpSize=len;
- strcpy(lpszName, name);
- return 1;
-}
-
-/***********************************************************************
- * GetUserNameW [ADVAPI32.68]
- */
-BOOL32 WINAPI GetUserName32W(LPWSTR lpszName, LPDWORD lpSize)
-{
- LPSTR name = (LPSTR)HeapAlloc( GetProcessHeap(), 0, *lpSize );
- DWORD size = *lpSize;
- BOOL32 res = GetUserName32A(name,lpSize);
-
- lstrcpynAtoW(lpszName,name,size);
- HeapFree( GetProcessHeap(), 0, name );
- return res;
-}
diff --git a/win32/security.c b/win32/security.c
deleted file mode 100644
index 8b10607..0000000
--- a/win32/security.c
+++ /dev/null
@@ -1,229 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-
-#include "windows.h"
-#include "winerror.h"
-#include "ntdll.h"
-#include "debug.h"
-
-BOOL32 WINAPI IsValidSid (LPSID pSid);
-BOOL32 WINAPI EqualSid (LPSID pSid1, LPSID pSid2);
-BOOL32 WINAPI EqualPrefixSid (LPSID pSid1, LPSID pSid2);
-DWORD WINAPI GetSidLengthRequired (BYTE nSubAuthorityCount);
-BOOL32 WINAPI AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, LPSID *pSid);
-VOID* WINAPI FreeSid(LPSID pSid);
-BOOL32 WINAPI InitializeSid (LPSID pSid, LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount);
-LPSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(LPSID pSid);
-DWORD* WINAPI GetSidSubAuthority(LPSID pSid, DWORD nSubAuthority);
-BYTE* WINAPI GetSidSubAuthorityCount(LPSID pSid);
-DWORD WINAPI GetLengthSid(LPSID pSid);
-BOOL32 WINAPI CopySid(DWORD nDestinationSidLength, LPSID pDestinationSid, LPSID pSourceSid);
-
-/***********************************************************************
- * IsValidSid (ADVAPI.80)
- */
-BOOL32 WINAPI IsValidSid (LPSID pSid) {
- if (!pSid || pSid->Revision != SID_REVISION)
- return FALSE;
-
- return TRUE;
-}
-
-/***********************************************************************
- * EqualSid (ADVAPI.40)
- */
-BOOL32 WINAPI EqualSid (LPSID pSid1, LPSID pSid2) {
- if (!IsValidSid(pSid1) || !IsValidSid(pSid2))
- return FALSE;
-
- if (*GetSidSubAuthorityCount(pSid1) != *GetSidSubAuthorityCount(pSid2))
- return FALSE;
-
- if (memcmp(pSid1, pSid2, GetLengthSid(pSid1)) != 0)
- return FALSE;
-
- return TRUE;
-}
-
-/***********************************************************************
- * EqualPrefixSid (ADVAPI.39)
- */
-BOOL32 WINAPI EqualPrefixSid (LPSID pSid1, LPSID pSid2) {
- if (!IsValidSid(pSid1) || !IsValidSid(pSid2))
- return FALSE;
-
- if (*GetSidSubAuthorityCount(pSid1) != *GetSidSubAuthorityCount(pSid2))
- return FALSE;
-
- if (memcmp(pSid1, pSid2, GetSidLengthRequired(pSid1->SubAuthorityCount - 1))
- != 0)
- return FALSE;
-
- return TRUE;
-}
-
-/***********************************************************************
- * GetSidLengthRequired (ADVAPI.63)
- */
-DWORD WINAPI GetSidLengthRequired (BYTE nSubAuthorityCount) {
- return sizeof (SID) + (nSubAuthorityCount - 1) * sizeof (DWORD);
-}
-
-/***********************************************************************
- * AllocateAndInitializeSid (ADVAPI.11)
- */
-BOOL32 WINAPI AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
- BYTE nSubAuthorityCount,
- DWORD nSubAuthority0, DWORD nSubAuthority1,
- DWORD nSubAuthority2, DWORD nSubAuthority3,
- DWORD nSubAuthority4, DWORD nSubAuthority5,
- DWORD nSubAuthority6, DWORD nSubAuthority7,
- LPSID *pSid) {
-
- if (!(*pSid = HeapAlloc( GetProcessHeap(), 0,
- GetSidLengthRequired(nSubAuthorityCount))))
- return FALSE;
- (*pSid)->Revision = SID_REVISION;
- if (pIdentifierAuthority)
- memcpy(&(*pSid)->IdentifierAuthority, pIdentifierAuthority,
- sizeof (SID_IDENTIFIER_AUTHORITY));
- *GetSidSubAuthorityCount(*pSid) = nSubAuthorityCount;
-
- if (nSubAuthorityCount > 0)
- *GetSidSubAuthority(*pSid, 0) = nSubAuthority0;
- if (nSubAuthorityCount > 1)
- *GetSidSubAuthority(*pSid, 1) = nSubAuthority1;
- if (nSubAuthorityCount > 2)
- *GetSidSubAuthority(*pSid, 2) = nSubAuthority2;
- if (nSubAuthorityCount > 3)
- *GetSidSubAuthority(*pSid, 3) = nSubAuthority3;
- if (nSubAuthorityCount > 4)
- *GetSidSubAuthority(*pSid, 4) = nSubAuthority4;
- if (nSubAuthorityCount > 5)
- *GetSidSubAuthority(*pSid, 5) = nSubAuthority5;
- if (nSubAuthorityCount > 6)
- *GetSidSubAuthority(*pSid, 6) = nSubAuthority6;
- if (nSubAuthorityCount > 7)
- *GetSidSubAuthority(*pSid, 7) = nSubAuthority7;
-
- return TRUE;
-}
-
-/***********************************************************************
- * FreeSid (ADVAPI.42)
- */
-VOID* WINAPI FreeSid(LPSID pSid)
-{
- HeapFree( GetProcessHeap(), 0, pSid );
- return NULL;
-}
-
-/***********************************************************************
- * InitializeSecurityDescriptor (ADVAPI.73)
- */
-BOOL32 WINAPI InitializeSecurityDescriptor( SECURITY_DESCRIPTOR *pDescr,
- DWORD revision )
-{
- FIXME(security, "(%p,%#lx): stub\n", pDescr, revision);
- return TRUE;
-}
-
-
-/***********************************************************************
- * InitializeSid (ADVAPI.74)
- */
-BOOL32 WINAPI InitializeSid (LPSID pSid, LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
- BYTE nSubAuthorityCount)
-{
- int i;
-
- pSid->Revision = SID_REVISION;
- if (pIdentifierAuthority)
- memcpy(&pSid->IdentifierAuthority, pIdentifierAuthority,
- sizeof (SID_IDENTIFIER_AUTHORITY));
- *GetSidSubAuthorityCount(pSid) = nSubAuthorityCount;
-
- for (i = 0; i < nSubAuthorityCount; i++)
- *GetSidSubAuthority(pSid, i) = 0;
-
- return TRUE;
-}
-
-/***********************************************************************
- * GetSidIdentifierAuthority (ADVAPI.62)
- */
-LPSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority (LPSID pSid)
-{
- return &pSid->IdentifierAuthority;
-}
-
-/***********************************************************************
- * GetSidSubAuthority (ADVAPI.64)
- */
-DWORD * WINAPI GetSidSubAuthority (LPSID pSid, DWORD nSubAuthority)
-{
- return &pSid->SubAuthority[nSubAuthority];
-}
-
-/***********************************************************************
- * GetSidSubAuthorityCount (ADVAPI.65)
- */
-BYTE * WINAPI GetSidSubAuthorityCount (LPSID pSid)
-{
- return &pSid->SubAuthorityCount;
-}
-
-/***********************************************************************
- * GetLengthSid (ADVAPI.48)
- */
-DWORD WINAPI GetLengthSid (LPSID pSid)
-{
- return GetSidLengthRequired(*GetSidSubAuthorityCount(pSid));
-}
-
-/***********************************************************************
- * CopySid (ADVAPI.24)
- */
-BOOL32 WINAPI CopySid (DWORD nDestinationSidLength, LPSID pDestinationSid,
- LPSID pSourceSid)
-{
-
- if (!IsValidSid(pSourceSid))
- return FALSE;
-
- if (nDestinationSidLength < GetLengthSid(pSourceSid))
- return FALSE;
-
- memcpy(pDestinationSid, pSourceSid, GetLengthSid(pSourceSid));
-
- return TRUE;
-}
-
-/***********************************************************************
- * LookupAccountSidA [ADVAPI32.86]
- */
-BOOL32 WINAPI LookupAccountSid32A(LPCSTR system,PSID sid,
- LPCSTR account,LPDWORD accountSize,
- LPCSTR domain, LPDWORD domainSize,
- PSID_NAME_USE name_use)
-{
- FIXME(security,"(%s,%p,%p,%p,%p,%p,%p): stub\n",
- system,sid,account,accountSize,domain,domainSize,name_use);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
-/***********************************************************************
- * LookupAccountSidW [ADVAPI32.86]
- */
-BOOL32 WINAPI LookupAccountSid32W(LPCWSTR system,PSID sid,
- LPCWSTR account,LPDWORD accountSize,
- LPCWSTR domain, LPDWORD domainSize,
- PSID_NAME_USE name_use)
-{
- FIXME(security,"(%p,%p,%p,%p,%p,%p,%p): stub\n",
- system,sid,account,accountSize,domain,domainSize,name_use);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-