mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 01:15:09 +00:00
[ADVAPI32]
* Move some functions from ac.c to security.c. CORE-8540 svn path=/trunk/; revision=64968
This commit is contained in:
parent
954bd930d0
commit
2252d516b0
2 changed files with 328 additions and 345 deletions
|
@ -8,150 +8,8 @@
|
||||||
#include <advapi32.h>
|
#include <advapi32.h>
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(advapi);
|
WINE_DEFAULT_DEBUG_CHANNEL(advapi);
|
||||||
|
|
||||||
/* --- ACL --- */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
GetAclInformation(PACL pAcl,
|
|
||||||
LPVOID pAclInformation,
|
|
||||||
DWORD nAclInformationLength,
|
|
||||||
ACL_INFORMATION_CLASS dwAclInformationClass)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlQueryInformationAcl(pAcl,
|
|
||||||
pAclInformation,
|
|
||||||
nAclInformationLength,
|
|
||||||
dwAclInformationClass);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
InitializeAcl(PACL pAcl,
|
|
||||||
DWORD nAclLength,
|
|
||||||
DWORD dwAclRevision)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlCreateAcl(pAcl,
|
|
||||||
nAclLength,
|
|
||||||
dwAclRevision);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
IsValidAcl(PACL pAcl)
|
|
||||||
{
|
|
||||||
return RtlValidAcl (pAcl);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
SetAclInformation(PACL pAcl,
|
|
||||||
LPVOID pAclInformation,
|
|
||||||
DWORD nAclInformationLength,
|
|
||||||
ACL_INFORMATION_CLASS dwAclInformationClass)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlSetInformationAcl(pAcl,
|
|
||||||
pAclInformation,
|
|
||||||
nAclInformationLength,
|
|
||||||
dwAclInformationClass);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* --- ACE --- */
|
/* --- ACE --- */
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
AddAccessAllowedAce(PACL pAcl,
|
|
||||||
DWORD dwAceRevision,
|
|
||||||
DWORD AccessMask,
|
|
||||||
PSID pSid)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlAddAccessAllowedAce(pAcl,
|
|
||||||
dwAceRevision,
|
|
||||||
AccessMask,
|
|
||||||
pSid);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL WINAPI
|
|
||||||
AddAccessAllowedAceEx(PACL pAcl,
|
|
||||||
DWORD dwAceRevision,
|
|
||||||
DWORD AceFlags,
|
|
||||||
DWORD AccessMask,
|
|
||||||
PSID pSid)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlAddAccessAllowedAceEx(pAcl,
|
|
||||||
dwAceRevision,
|
|
||||||
AceFlags,
|
|
||||||
AccessMask,
|
|
||||||
pSid);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -183,60 +41,6 @@ AddAccessAllowedObjectAce(PACL pAcl,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
AddAccessDeniedAce(PACL pAcl,
|
|
||||||
DWORD dwAceRevision,
|
|
||||||
DWORD AccessMask,
|
|
||||||
PSID pSid)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlAddAccessDeniedAce(pAcl,
|
|
||||||
dwAceRevision,
|
|
||||||
AccessMask,
|
|
||||||
pSid);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL WINAPI
|
|
||||||
AddAccessDeniedAceEx(PACL pAcl,
|
|
||||||
DWORD dwAceRevision,
|
|
||||||
DWORD AceFlags,
|
|
||||||
DWORD AccessMask,
|
|
||||||
PSID pSid)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlAddAccessDeniedAceEx(pAcl,
|
|
||||||
dwAceRevision,
|
|
||||||
AceFlags,
|
|
||||||
AccessMask,
|
|
||||||
pSid);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -268,96 +72,6 @@ AddAccessDeniedObjectAce(PACL pAcl,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
AddAce(PACL pAcl,
|
|
||||||
DWORD dwAceRevision,
|
|
||||||
DWORD dwStartingAceIndex,
|
|
||||||
LPVOID pAceList,
|
|
||||||
DWORD nAceListLength)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlAddAce(pAcl,
|
|
||||||
dwAceRevision,
|
|
||||||
dwStartingAceIndex,
|
|
||||||
pAceList,
|
|
||||||
nAceListLength);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
AddAuditAccessAce(PACL pAcl,
|
|
||||||
DWORD dwAceRevision,
|
|
||||||
DWORD dwAccessMask,
|
|
||||||
PSID pSid,
|
|
||||||
BOOL bAuditSuccess,
|
|
||||||
BOOL bAuditFailure)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlAddAuditAccessAce(pAcl,
|
|
||||||
dwAceRevision,
|
|
||||||
dwAccessMask,
|
|
||||||
pSid,
|
|
||||||
bAuditSuccess,
|
|
||||||
bAuditFailure);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL WINAPI
|
|
||||||
AddAuditAccessAceEx(PACL pAcl,
|
|
||||||
DWORD dwAceRevision,
|
|
||||||
DWORD AceFlags,
|
|
||||||
DWORD dwAccessMask,
|
|
||||||
PSID pSid,
|
|
||||||
BOOL bAuditSuccess,
|
|
||||||
BOOL bAuditFailure)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlAddAuditAccessAceEx(pAcl,
|
|
||||||
dwAceRevision,
|
|
||||||
AceFlags,
|
|
||||||
dwAccessMask,
|
|
||||||
pSid,
|
|
||||||
bAuditSuccess,
|
|
||||||
bAuditFailure);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -393,65 +107,6 @@ AddAuditAccessObjectAce(PACL pAcl,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
DeleteAce(PACL pAcl,
|
|
||||||
DWORD dwAceIndex)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlDeleteAce(pAcl,
|
|
||||||
dwAceIndex);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
FindFirstFreeAce(PACL pAcl,
|
|
||||||
LPVOID *pAce)
|
|
||||||
{
|
|
||||||
return RtlFirstFreeAce(pAcl,
|
|
||||||
(PACE*)pAce);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
WINAPI
|
|
||||||
GetAce(PACL pAcl,
|
|
||||||
DWORD dwAceIndex,
|
|
||||||
LPVOID *pAce)
|
|
||||||
{
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
Status = RtlGetAce(pAcl,
|
|
||||||
dwAceIndex,
|
|
||||||
pAce);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -799,6 +799,250 @@ GetLengthSid(PSID pSid)
|
||||||
return (DWORD)RtlLengthSid(pSid);
|
return (DWORD)RtlLengthSid(pSid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
InitializeAcl(PACL pAcl,
|
||||||
|
DWORD nAclLength,
|
||||||
|
DWORD dwAclRevision)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlCreateAcl(pAcl,
|
||||||
|
nAclLength,
|
||||||
|
dwAclRevision);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
AddAccessAllowedAce(PACL pAcl,
|
||||||
|
DWORD dwAceRevision,
|
||||||
|
DWORD AccessMask,
|
||||||
|
PSID pSid)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlAddAccessAllowedAce(pAcl,
|
||||||
|
dwAceRevision,
|
||||||
|
AccessMask,
|
||||||
|
pSid);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL WINAPI
|
||||||
|
AddAccessAllowedAceEx(PACL pAcl,
|
||||||
|
DWORD dwAceRevision,
|
||||||
|
DWORD AceFlags,
|
||||||
|
DWORD AccessMask,
|
||||||
|
PSID pSid)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlAddAccessAllowedAceEx(pAcl,
|
||||||
|
dwAceRevision,
|
||||||
|
AceFlags,
|
||||||
|
AccessMask,
|
||||||
|
pSid);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
AddAccessDeniedAce(PACL pAcl,
|
||||||
|
DWORD dwAceRevision,
|
||||||
|
DWORD AccessMask,
|
||||||
|
PSID pSid)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlAddAccessDeniedAce(pAcl,
|
||||||
|
dwAceRevision,
|
||||||
|
AccessMask,
|
||||||
|
pSid);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL WINAPI
|
||||||
|
AddAccessDeniedAceEx(PACL pAcl,
|
||||||
|
DWORD dwAceRevision,
|
||||||
|
DWORD AceFlags,
|
||||||
|
DWORD AccessMask,
|
||||||
|
PSID pSid)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlAddAccessDeniedAceEx(pAcl,
|
||||||
|
dwAceRevision,
|
||||||
|
AceFlags,
|
||||||
|
AccessMask,
|
||||||
|
pSid);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
AddAce(PACL pAcl,
|
||||||
|
DWORD dwAceRevision,
|
||||||
|
DWORD dwStartingAceIndex,
|
||||||
|
LPVOID pAceList,
|
||||||
|
DWORD nAceListLength)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlAddAce(pAcl,
|
||||||
|
dwAceRevision,
|
||||||
|
dwStartingAceIndex,
|
||||||
|
pAceList,
|
||||||
|
nAceListLength);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
DeleteAce(PACL pAcl,
|
||||||
|
DWORD dwAceIndex)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlDeleteAce(pAcl,
|
||||||
|
dwAceIndex);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
FindFirstFreeAce(PACL pAcl,
|
||||||
|
LPVOID *pAce)
|
||||||
|
{
|
||||||
|
return RtlFirstFreeAce(pAcl,
|
||||||
|
(PACE*)pAce);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
GetAce(PACL pAcl,
|
||||||
|
DWORD dwAceIndex,
|
||||||
|
LPVOID *pAce)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlGetAce(pAcl,
|
||||||
|
dwAceIndex,
|
||||||
|
pAce);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
GetAclInformation(PACL pAcl,
|
||||||
|
LPVOID pAclInformation,
|
||||||
|
DWORD nAclInformationLength,
|
||||||
|
ACL_INFORMATION_CLASS dwAclInformationClass)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlQueryInformationAcl(pAcl,
|
||||||
|
pAclInformation,
|
||||||
|
nAclInformationLength,
|
||||||
|
dwAclInformationClass);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
IsValidAcl(PACL pAcl)
|
||||||
|
{
|
||||||
|
return RtlValidAcl (pAcl);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -892,6 +1136,65 @@ BOOL WINAPI AccessCheckByType(
|
||||||
return !*AccessStatus;
|
return !*AccessStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
AddAuditAccessAce(PACL pAcl,
|
||||||
|
DWORD dwAceRevision,
|
||||||
|
DWORD dwAccessMask,
|
||||||
|
PSID pSid,
|
||||||
|
BOOL bAuditSuccess,
|
||||||
|
BOOL bAuditFailure)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlAddAuditAccessAce(pAcl,
|
||||||
|
dwAceRevision,
|
||||||
|
dwAccessMask,
|
||||||
|
pSid,
|
||||||
|
bAuditSuccess,
|
||||||
|
bAuditFailure);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL WINAPI
|
||||||
|
AddAuditAccessAceEx(PACL pAcl,
|
||||||
|
DWORD dwAceRevision,
|
||||||
|
DWORD AceFlags,
|
||||||
|
DWORD dwAccessMask,
|
||||||
|
PSID pSid,
|
||||||
|
BOOL bAuditSuccess,
|
||||||
|
BOOL bAuditFailure)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlAddAuditAccessAceEx(pAcl,
|
||||||
|
dwAceRevision,
|
||||||
|
AceFlags,
|
||||||
|
dwAccessMask,
|
||||||
|
pSid,
|
||||||
|
bAuditSuccess,
|
||||||
|
bAuditFailure);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* PrivilegeCheck EXPORTED
|
* PrivilegeCheck EXPORTED
|
||||||
*
|
*
|
||||||
|
@ -919,6 +1222,31 @@ PrivilegeCheck(HANDLE ClientToken,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
SetAclInformation(PACL pAcl,
|
||||||
|
LPVOID pAclInformation,
|
||||||
|
DWORD nAclInformationLength,
|
||||||
|
ACL_INFORMATION_CLASS dwAclInformationClass)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlSetInformationAcl(pAcl,
|
||||||
|
pAclInformation,
|
||||||
|
nAclInformationLength,
|
||||||
|
dwAclInformationClass);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastError(RtlNtStatusToDosError(Status));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* ParseAclStringFlags
|
* ParseAclStringFlags
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue