You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

103 lines
4.2 KiB

using Microsoft.Win32.SafeHandles;
using System;
using System.Runtime.InteropServices;
namespace Security2
{
internal partial class Win32
{
const string ADVAPI32_DLL = "advapi32.dll";
internal const string KERNEL32_DLL = "kernel32.dll";
internal const string AUTHZ_DLL = "authz.dll";
[DllImport(ADVAPI32_DLL, EntryPoint = "GetInheritanceSourceW", CharSet = CharSet.Unicode)]
static extern UInt32 GetInheritanceSource(
[MarshalAs(UnmanagedType.LPTStr)] string pObjectName,
System.Security.AccessControl.ResourceType ObjectType,
SECURITY_INFORMATION SecurityInfo,
[MarshalAs(UnmanagedType.Bool)]bool Container,
IntPtr pObjectClassGuids,
UInt32 GuidCount,
byte[] pAcl,
IntPtr pfnArray,
ref GENERIC_MAPPING pGenericMapping,
IntPtr pInheritArray
);
[DllImport(ADVAPI32_DLL, EntryPoint = "FreeInheritedFromArray", CharSet = CharSet.Unicode)]
static extern UInt32 FreeInheritedFromArray(
IntPtr pInheritArray,
UInt16 AceCnt,
IntPtr pfnArray
);
[DllImport(AUTHZ_DLL, CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AuthzInitializeRemoteResourceManager(
IntPtr rpcInitInfo,
out SafeAuthzRMHandle authRM);
[DllImport(AUTHZ_DLL, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AuthzInitializeResourceManager(
AuthzResourceManagerFlags flags,
IntPtr pfnAccessCheck,
IntPtr pfnComputeDynamicGroups,
IntPtr pfnFreeDynamicGroups,
string szResourceManagerName,
out SafeAuthzRMHandle phAuthzResourceManager);
[DllImport(Win32.AUTHZ_DLL, CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool AuthzInitializeContextFromSid(
AuthzInitFlags flags,
byte[] rawUserSid,
SafeAuthzRMHandle authzRM,
IntPtr expirationTime,
Win32.LUID Identifier,
IntPtr DynamicGroupArgs,
out IntPtr authzClientContext);
[DllImport(Win32.AUTHZ_DLL, CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool AuthzAccessCheck(
AuthzACFlags flags,
IntPtr hAuthzClientContext,
ref AUTHZ_ACCESS_REQUEST pRequest,
IntPtr AuditEvent,
byte[] rawSecurityDescriptor,
IntPtr[] OptionalSecurityDescriptorArray,
UInt32 OptionalSecurityDescriptorCount,
ref AUTHZ_ACCESS_REPLY pReply,
IntPtr cachedResults);
[DllImport(Win32.AUTHZ_DLL, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool AuthzFreeContext(IntPtr authzClientContext);
[DllImport(Win32.ADVAPI32_DLL, CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode)]
public static extern UInt32 GetSecurityDescriptorLength(IntPtr pSecurityDescriptor);
[DllImport(Win32.ADVAPI32_DLL, CallingConvention = CallingConvention.Winapi, SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern UInt32 GetSecurityInfo(
SafeFileHandle handle,
ObjectType objectType,
SecurityInformationClass infoClass,
IntPtr owner,
IntPtr group,
IntPtr dacl,
IntPtr sacl,
out IntPtr securityDescriptor);
[DllImport(Win32.KERNEL32_DLL, SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern SafeFileHandle CreateFile(
string lpFileName,
FileAccess desiredAccess,
FileShare shareMode,
IntPtr lpSecurityAttributes,
FileMode mode,
FileFlagAttrib flagsAndAttributes,
IntPtr hTemplateFile);
}
}