diff --git a/PInvoke/Shared/WinBase/SECURITY_ATTRIBUTES.cs b/PInvoke/Shared/WinBase/SECURITY_ATTRIBUTES.cs index b21deda4..71d0bc4f 100644 --- a/PInvoke/Shared/WinBase/SECURITY_ATTRIBUTES.cs +++ b/PInvoke/Shared/WinBase/SECURITY_ATTRIBUTES.cs @@ -29,4 +29,34 @@ namespace Vanara.PInvoke /// [MarshalAs(UnmanagedType.Bool)] public bool bInheritHandle; } + + /// + /// The SECURITY_ATTRIBUTES structure contains the security descriptor for an object and specifies whether the handle retrieved by + /// specifying this structure is inheritable. This structure provides security settings for objects created by various functions, such as + /// CreateFile, CreatePipe, CreateProcess, RegCreateKeyEx, or RegSaveKeyEx. + /// + [PInvokeData("winbase.h")] + [StructLayout(LayoutKind.Sequential)] + public struct tagSECURITY_ATTRIBUTES + { + /// The size, in bytes, of this structure. Set this value to the size of the SECURITY_ATTRIBUTES structure. + public int nLength; + + /// + /// A pointer to a SECURITY_DESCRIPTOR structure that controls access to the object. If the value of this member is NULL, the object + /// is assigned the default security descriptor associated with the access token of the calling process. This is not the same as + /// granting access to everyone by assigning a NULL discretionary access control list (DACL). By default, the default DACL in the + /// access token of a process allows access only to the user represented by the access token. + /// + public PSECURITY_DESCRIPTOR lpSecurityDescriptor; + + /// + /// A Boolean value that specifies whether the returned handle is inherited when a new process is created. If this member is TRUE, + /// the new process inherits the handle. + /// + [MarshalAs(UnmanagedType.Bool)] public bool bInheritHandle; + + /// A default instance of this structure with the size set. + public static readonly tagSECURITY_ATTRIBUTES Default = new tagSECURITY_ATTRIBUTES { nLength = Marshal.SizeOf(typeof(SECURITY_ATTRIBUTES)) }; + } } \ No newline at end of file