77 switch (AceHeader->AceType)
112 switch (AceHeader->AceType)
131 Size +=
sizeof(
Ace->ObjectType);
133 Size +=
sizeof(
Ace->InheritedObjectType);
143 Size +=
sizeof(
Ace->ObjectType);
145 Size +=
sizeof(
Ace->InheritedObjectType);
163 Size +=
sizeof(
Ace->ObjectType);
165 Size +=
sizeof(
Ace->InheritedObjectType);
174 Size +=
sizeof(
Ace->ObjectType);
176 Size +=
sizeof(
Ace->InheritedObjectType);
206 switch (AceHeader->AceType)
232 switch (Trustee->TrusteeForm)
287 if (ObjectsPresent != 0)
288 Ret +=
sizeof(
DWORD);
298 switch (AceHeader->AceType)
341 switch (AceHeader->AceType)
408 if (SystemName !=
NULL && SystemName[0] !=
L'\0')
410 LsaSystemName.
Buffer = SystemName;
413 psn = &LsaSystemName;
421 &LsaObjectAttributes,
433 switch (Trustee->TrusteeForm)
436 return Trustee->ptstrName;
509 sizeof(LsaNames) /
sizeof(LsaNames[0]),
571 switch (Trustee->TrusteeForm)
585 if (!
wcscmp(TrusteeName,
L"CURRENT_USER"))
596 if (*pPolicyHandle ==
NULL)
622 *ppSid = (
PSID)Trustee->ptstrName;
753 BOOL Present, Defaulted;
805 *ppSecurityDescriptor = pSD;
848 pSecurityDescriptor);
858 pSecurityDescriptor);
870 pSecurityDescriptor))
881 pSecurityDescriptor))
959 lpPath = pObjectName;
1011 } AccRegRootKeys[] =
1019 LPWSTR lpMachineName, lpRootKeyName, lpKeyName;
1024 if (lpPath[0] ==
L'\\' && lpPath[1] ==
L'\\')
1026 lpMachineName = lpPath;
1028 lpRootKeyName =
wcschr(lpPath + 2,
1030 if (lpRootKeyName ==
NULL)
1033 *(lpRootKeyName++) =
L'\0';
1037 lpMachineName =
NULL;
1038 lpRootKeyName = lpPath;
1041 lpKeyName =
wcschr(lpRootKeyName,
1043 if (lpKeyName !=
NULL)
1045 *(lpKeyName++) =
L'\0';
1049 i !=
sizeof(AccRegRootKeys) /
sizeof(AccRegRootKeys[0]);
1053 AccRegRootKeys[
i].szRootKey))
1055 hRootKey = AccRegRootKeys[
i].hRootKey;
1060 if (hRootKey ==
NULL)
1069 if (lpMachineName !=
NULL)
1078 hRootKey = (
HKEY)(*Handle2);
1088 if (*Handle2 !=
NULL)
1100 LPWSTR lpServiceName, lpMachineName;
1103 if (lpPath[0] ==
L'\\' && lpPath[1] ==
L'\\')
1107 lpMachineName = lpPath;
1109 lpServiceName =
wcschr(lpPath + 2,
1111 if (lpServiceName ==
NULL)
1118 *(lpServiceName++) =
L'\0';
1122 lpMachineName =
NULL;
1123 lpServiceName = lpPath;
1130 if (*Handle2 ==
NULL)
1162 if (lpPath !=
NULL && lpPath != pObjectName)
1183 if (Handle2 !=
NULL)
1251 ppSecurityDescriptor);
1301 pSecurityDescriptor);
1332 GUID ObjectTypeGuid, InheritedObjectTypeGuid;
1333 DWORD ObjectsPresent;
1356 if (SizeInformation.
AceCount >
sizeof(KeepAceBuf) /
sizeof(KeepAceBuf[0]))
1366 pKeepAce = KeepAceBuf;
1377 for (
i = 0;
i < cCountOfExplicitEntries;
i++)
1390 switch (pListOfExplicitEntries[
i].grfAccessMode)
1423 DPRINT1(
"Case not implemented!\n");
1426 DPRINT1(
"Unknown access mode 0x%x. Ignoring it\n", pListOfExplicitEntries[
i].grfAccessMode);
1460 for (
i = 0;
i < cCountOfExplicitEntries;
i++)
1462 if (pListOfExplicitEntries[
i].grfAccessMode ==
DENY_ACCESS)
1474 &InheritedObjectTypeGuid);
1476 if (ObjectsPresent == 0)
1484 DPRINT1(
"Object ACEs not yet supported!\n");
1502 for (
i = 0;
i < cCountOfExplicitEntries;
i++)
1504 if (pListOfExplicitEntries[
i].grfAccessMode ==
SET_ACCESS ||
1517 &InheritedObjectTypeGuid);
1519 if (ObjectsPresent == 0)
1527 DPRINT1(
"Object ACEs not yet supported!\n");
1547 if (pKeepAce && pKeepAce != KeepAceBuf)
1573 GUID** pObjectClassGuids,
1578 PINHERITED_FROMW pInheritArray)
1595 PINHERITED_FROMW pLast;
1599 pLast = pInheritArray + AceCnt;
1600 while (pInheritArray != pLast)
1602 if (pInheritArray->AncestorName !=
NULL)
1605 pInheritArray->AncestorName =
NULL;
1622 PULONG pcCountOfExplicitEntries,
1627 ULONG ObjectAceCount = 0;
1631 DWORD LastErr, SidLen;
1669 SidTarget = (
PSID)(ObjSid + ObjectAceCount);
1718 *pcCountOfExplicitEntries =
AceIndex;
1719 *pListOfExplicitEntries = peaw;
1732 *pcCountOfExplicitEntries = 0;
1733 *pListOfExplicitEntries =
NULL;
#define ERROR_INVALID_PARAMETER
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
DWORD WINAPI AccGetInheritanceSource(LPWSTR pObjectName, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, BOOL Container, GUID **pObjectClassGuids, DWORD GuidCount, PACL pAcl, PFN_OBJECT_MGR_FUNCTS pfnArray, PGENERIC_MAPPING pGenericMapping, PINHERITED_FROMW pInheritArray)
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
#define ACE_OBJECT_TYPE_PRESENT
DWORD WINAPI AccRewriteSetEntriesInAcl(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_W pListOfExplicitEntries, PACL OldAcl, PACL *NewAcl)
_In_ NDIS_ERROR_CODE ErrorCode
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID WINAPI SetSecurityAccessMask(IN SECURITY_INFORMATION SecurityInformation, OUT LPDWORD DesiredAccess)
#define VALID_INHERIT_FLAGS
#define SYSTEM_AUDIT_OBJECT_ACE_TYPE
#define SC_MANAGER_CONNECT
#define OBJ_CASE_INSENSITIVE
#define ACCESS_SYSTEM_SECURITY
BOOL WINAPI InitializeAcl(PACL pAcl, DWORD nAclLength, DWORD dwAclRevision)
BOOL WINAPI GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbSaclPresent, PACL *pSacl, LPBOOL lpbSaclDefaulted)
IN BOOLEAN OUT PSTR Buffer
DWORD WINAPI AccRewriteGetNamedRights(LPWSTR pObjectName, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, PSID *ppsidOwner, PSID *ppsidGroup, PACL *ppDacl, PACL *ppSacl, PSECURITY_DESCRIPTOR *ppSecurityDescriptor)
struct _OBJECTS_AND_SID * POBJECTS_AND_SID
#define UNREFERENCED_PARAMETER(P)
VOID WINAPI QuerySecurityAccessMask(IN SECURITY_INFORMATION SecurityInformation, OUT LPDWORD DesiredAccess)
#define SYSTEM_MANDATORY_LABEL_ACE_TYPE
#define HKEY_CURRENT_USER
static PSID AccpGetAceSid(IN PACE_HEADER AceHeader)
DWORD WINAPI AccFreeIndexArray(PINHERITED_FROMW pInheritArray, USHORT AceCnt, PFN_OBJECT_MGR_FUNCTS pfnArray OPTIONAL)
enum _ACCESS_MODE ACCESS_MODE
static LPWSTR AccpGetTrusteeName(IN PTRUSTEE_W Trustee)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define BuildTrusteeWithSid
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID _Out_ PHANDLE Token
BOOL WINAPI AddAccessAllowedAce(PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid)
NTSTATUS WINAPI LsaClose(IN LSA_HANDLE ObjectHandle)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
#define ERROR_NOT_ENOUGH_MEMORY
IN PVOID IN PVOID IN USHORT IN USHORT Size
DWORD WINAPI GetLastError(VOID)
static DWORD AccpCalcNeededAceSize(IN PSID Sid, IN DWORD ObjectsPresent)
#define DLL_PROCESS_ATTACH
#define GROUP_SECURITY_INFORMATION
DWORD WINAPI AccRewriteSetNamedRights(LPWSTR pObjectName, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, PSECURITY_DESCRIPTOR pSecurityDescriptor)
static BOOL Write(PBYTE Address, PBYTE Data, SIZE_T Size)
#define HKEY_CURRENT_CONFIG
struct _ACCESS_ALLOWED_OBJECT_ACE * PACCESS_ALLOWED_OBJECT_ACE
struct _TOKEN_USER TOKEN_USER
static IN DWORD IN LPVOID lpvReserved
BOOL WINAPI GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID *pGroup, LPBOOL lpbGroupDefaulted)
#define STATUS_NONE_MAPPED
static DWORD AccpGetTrusteeObjects(IN PTRUSTEE_W Trustee, OUT GUID *pObjectTypeGuid OPTIONAL, OUT GUID *pInheritedObjectTypeGuid OPTIONAL)
BOOL WINAPI DllMain(IN HINSTANCE hinstDLL, IN DWORD dwReason, IN LPVOID lpvReserved)
#define SUCCESSFUL_ACCESS_ACE_FLAG
NTSTATUS WINAPI LsaOpenPolicy(IN PLSA_UNICODE_STRING SystemName OPTIONAL, IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK DesiredAccess, OUT PLSA_HANDLE PolicyHandle)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
#define FAILED_ACCESS_ACE_FLAG
LONG WINAPI RegCloseKey(HKEY hKey)
struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE * PACCESS_ALLOWED_CALLBACK_OBJECT_ACE
HANDLE WINAPI GetCurrentThread(VOID)
DWORD SECURITY_INFORMATION
#define ACCESS_DENIED_OBJECT_ACE_TYPE
static BOOL AccpIsObjectAce(IN PACE_HEADER AceHeader)
#define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE
struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE * PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
#define ACE_INHERITED_OBJECT_TYPE_PRESENT
#define BuildTrusteeWithObjectsAndSid
IN PFCB IN VBO OUT PLBO OUT PULONG OUT PBOOLEAN Allocated
#define SID_MAX_SUB_AUTHORITIES
LONG WINAPI RegSetKeySecurity(HKEY hKey, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor)
DWORD WINAPI AccTreeResetNamedSecurityInfo(LPWSTR pObjectName, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, PSID pOwner, PSID pGroup, PACL pDacl, PACL pSacl, BOOL KeepExplicit, FN_PROGRESSW fnProgress, PROG_INVOKE_SETTING ProgressInvokeSetting, PVOID Args)
_In_ ULONG _In_ ACCESS_MASK _In_ PSID Sid
static UINT AccpGetAceStructureSize(IN PACE_HEADER AceHeader)
BOOL WINAPI SetUserObjectSecurity(_In_ HANDLE, _In_ PSECURITY_INFORMATION, _In_ PSECURITY_DESCRIPTOR)
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
NTSTATUS WINAPI LsaFreeMemory(IN PVOID Buffer)
BOOL WINAPI GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbDaclPresent, PACL *pDacl, LPBOOL lpbDaclDefaulted)
#define DLL_PROCESS_DETACH
enum _PROG_INVOKE_SETTING PROG_INVOKE_SETTING
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define POLICY_LOOKUP_NAMES
#define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
NTSTATUS NTAPI NtQuerySecurityObject(IN HANDLE Handle, IN SECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN ULONG Length, OUT PULONG ResultLength)
BOOL WINAPI GetUserObjectSecurity(_In_ HANDLE hObj, _In_ PSECURITY_INFORMATION pSIRequested, _Out_writes_bytes_opt_(nLength) PSECURITY_DESCRIPTOR pSID, _In_ DWORD nLength, _Out_ LPDWORD lpnLengthNeeded)
#define SYSTEM_AUDIT_CALLBACK_ACE_TYPE
BOOL WINAPI AddAccessDeniedAce(PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
static DWORD AccpOpenLSAPolicyHandle(IN LPWSTR SystemName, IN ACCESS_MASK DesiredAccess, OUT PLSA_HANDLE pPolicyHandle)
LONG WINAPI RegGetKeySecurity(HKEY hKey, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, LPDWORD lpcbSecurityDescriptor)
ULONG WINAPI LsaNtStatusToWinError(IN NTSTATUS Status)
#define NT_SUCCESS(StatCode)
VOID(WINAPI * FN_PROGRESSW)(LPWSTR pObjectName, DWORD Status, PPROG_INVOKE_SETTING pInvokeSetting, PVOID Args, BOOL SecuritySet)
DWORD WINAPI GetLengthSid(PSID pSid)
static VOID AccpCloseObjectHandle(SE_OBJECT_TYPE ObjectType, HANDLE Handle, HANDLE Handle2)
#define RegConnectRegistry
struct _OBJECTS_AND_NAME_W * POBJECTS_AND_NAME_W
ACCESS_MODE grfAccessMode
#define SACL_SECURITY_INFORMATION
#define ACCESS_ALLOWED_ACE_TYPE
#define ACCESS_ALLOWED_OBJECT_ACE_TYPE
NTSTATUS WINAPI NtSetSecurityObject(HANDLE Handle, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR SecurityDescriptor)
static DWORD AccpLookupCurrentUser(OUT PSID *ppSid)
#define ACCESS_DENIED_ACE_TYPE
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
static DWORD AccpOpenNamedObject(LPWSTR pObjectName, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, PHANDLE Handle, PHANDLE Handle2, BOOL Write)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define FILE_SHARE_DELETE
struct _OBJECTS_AND_SID OBJECTS_AND_SID
DWORD WINAPI AccRewriteSetHandleRights(HANDLE handle, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, PSECURITY_DESCRIPTOR pSecurityDescriptor)
#define GetCurrentProcess()
DWORD WINAPI AccRewriteGetExplicitEntriesFromAcl(PACL pacl, PULONG pcCountOfExplicitEntries, PEXPLICIT_ACCESS_W *pListOfExplicitEntries)
static const WCHAR Cleanup[]
static DWORD AccpGetTrusteeSid(IN PTRUSTEE_W Trustee, IN OUT PLSA_HANDLE pPolicyHandle, OUT PSID *ppSid, OUT BOOL *Allocated)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define ACCESS_ALLOWED_CALLBACK_ACE_TYPE
struct _FileName FileName
BOOL WINAPI OpenThreadToken(HANDLE ThreadHandle, DWORD DesiredAccess, BOOL OpenAsSelf, HANDLE *TokenHandle)
HLOCAL NTAPI LocalReAlloc(HLOCAL hMem, SIZE_T dwBytes, UINT uFlags)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static GUID * AccpGetObjectAceInheritedObjectType(IN PACE_HEADER AceHeader)
BOOL WINAPI GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID *pOwner, LPBOOL lpbOwnerDefaulted)
BOOL WINAPI GetAce(PACL pAcl, DWORD dwAceIndex, LPVOID *pAce)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
DWORD grfAccessPermissions
#define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE
static DWORD AccpLookupSidByName(IN LSA_HANDLE PolicyHandle, IN LPWSTR Name, OUT PSID *pSid)
static ACCESS_MODE AccpGetAceAccessMode(IN PACE_HEADER AceHeader)
#define FIELD_OFFSET(t, f)
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define OWNER_SECURITY_INFORMATION
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
BOOL WINAPI SetServiceObjectSecurity(SC_HANDLE hService, SECURITY_INFORMATION dwSecurityInformation, PSECURITY_DESCRIPTOR lpSecurityDescriptor)
static GUID * AccpGetObjectAceObjectType(IN PACE_HEADER AceHeader)
GUID InheritedObjectTypeGuid
#define FILE_SYNCHRONOUS_IO_NONALERT
NTSTATUS WINAPI LsaLookupNames2(IN LSA_HANDLE PolicyHandle, IN ULONG Flags, IN ULONG Count, IN PLSA_UNICODE_STRING Names, OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, OUT PLSA_TRANSLATED_SID2 *Sids)
BOOL WINAPI GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
ACCESS_MASK * PACCESS_MASK
#define ERROR_CALL_NOT_IMPLEMENTED
struct _TOKEN_USER * PTOKEN_USER
#define InitializeObjectAttributes(p, n, a, r, s)
#define SYSTEM_AUDIT_ACE_TYPE
#define ERROR_INVALID_NAME
#define ACCESS_DENIED_CALLBACK_ACE_TYPE
DWORD WINAPI AccRewriteGetHandleRights(HANDLE handle, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, PSID *ppsidOwner, PSID *ppsidGroup, PACL *ppDacl, PACL *ppSacl, PSECURITY_DESCRIPTOR *ppSecurityDescriptor)
#define HKEY_CLASSES_ROOT
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
BOOL WINAPI CopySid(DWORD nDestinationSidLength, PSID pDestinationSid, PSID pSourceSid)
struct _SYSTEM_AUDIT_OBJECT_ACE * PSYSTEM_AUDIT_OBJECT_ACE
BOOL WINAPI GetAclInformation(PACL pAcl, LPVOID pAclInformation, DWORD nAclInformationLength, ACL_INFORMATION_CLASS dwAclInformationClass)
struct _EXPLICIT_ACCESS_W * PEXPLICIT_ACCESS_W
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
static ACCESS_MASK AccpGetAceAccessMask(IN PACE_HEADER AceHeader)
#define DACL_SECURITY_INFORMATION
enum _SE_OBJECT_TYPE SE_OBJECT_TYPE
NTSYSAPI BOOLEAN NTAPI RtlDosPathNameToNtPathName_U(_In_opt_z_ PCWSTR DosPathName, _Out_ PUNICODE_STRING NtPathName, _Out_opt_ PCWSTR *NtFileNamePart, _Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo)
BOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE hService, SECURITY_INFORMATION dwSecurityInformation, PSECURITY_DESCRIPTOR lpSecurityDescriptor, DWORD cbBufSize, LPDWORD pcbBytesNeeded)
NTSYSAPI BOOLEAN NTAPI RtlEqualSid(_In_ PSID Sid1, _In_ PSID Sid2)
#define HKEY_LOCAL_MACHINE
#define ERROR_INSUFFICIENT_BUFFER
PULONG MinorVersion OPTIONAL