//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1995 - 1999 // // File: advapi32.cpp // // Contents: advapi32.dll wrapper functions // //-------------------------------------------------------------------------- #include #pragma hdrstop typedef BOOL (WINAPI FNSTRINGSDTOSD)( IN LPCWSTR StringSecurityDescriptor, IN DWORD StringSDRevision, OUT PSECURITY_DESCRIPTOR *SecurityDescriptor, OUT PULONG SecurityDescriptorSize OPTIONAL); BOOL myConvertStringSecurityDescriptorToSecurityDescriptor( IN LPCWSTR StringSecurityDescriptor, IN DWORD StringSDRevision, OUT PSECURITY_DESCRIPTOR *SecurityDescriptor, OUT PULONG SecurityDescriptorSize OPTIONAL) { HMODULE hModule; BOOL f = FALSE; DWORD err; static FNSTRINGSDTOSD *s_pfn = NULL; if (NULL == s_pfn) { // load dll hModule = GetModuleHandle(TEXT("advapi32.dll")); if (NULL == hModule) { goto error; } // load system function s_pfn = (FNSTRINGSDTOSD *) GetProcAddress( hModule, "ConvertStringSecurityDescriptorToSecurityDescriptorW"); if (NULL == s_pfn) { goto error; } } f = (*s_pfn)( StringSecurityDescriptor, StringSDRevision, SecurityDescriptor, SecurityDescriptorSize); if (!f) goto error; myRegisterMemAlloc( *SecurityDescriptor, ((NULL == SecurityDescriptorSize) ? -1 : *SecurityDescriptorSize), CSM_LOCALALLOC); error: return(f); } typedef BOOL (WINAPI FNSIDTOSTRINGSID)( IN PSID Sid, OUT LPWSTR *StringSid); BOOL myConvertSidToStringSid( IN PSID Sid, OUT LPWSTR *StringSid) { HMODULE hModule; BOOL f = FALSE; DWORD err; static FNSIDTOSTRINGSID *s_pfn = NULL; if (NULL == s_pfn) { // load dll hModule = GetModuleHandle(TEXT("advapi32.dll")); if (NULL == hModule) { goto error; } // load system function s_pfn = (FNSIDTOSTRINGSID *) GetProcAddress( hModule, "ConvertSidToStringSidW"); if (NULL == s_pfn) { goto error; } } f = (*s_pfn)(Sid, StringSid); if (!f) goto error; myRegisterMemAlloc(*StringSid, -1, CSM_LOCALALLOC); error: return(f); } typedef BOOL (WINAPI FNSTRINGSIDTOSID)( IN LPCWSTR StringSid, OUT PSID *Sid); BOOL myConvertStringSidToSid( IN LPCWSTR StringSid, OUT PSID *Sid) { HMODULE hModule; BOOL f = FALSE; DWORD err; static FNSTRINGSIDTOSID *s_pfn = NULL; if (NULL == s_pfn) { // load dll hModule = GetModuleHandle(TEXT("advapi32.dll")); if (NULL == hModule) { goto error; } // load system function s_pfn = (FNSTRINGSIDTOSID *) GetProcAddress( hModule, "ConvertStringSidToSidW"); if (NULL == s_pfn) { goto error; } } f = (*s_pfn)(StringSid, Sid); if (!f) goto error; myRegisterMemAlloc(*Sid, -1, CSM_LOCALALLOC); error: return(f); }