#ifndef _PH_SECEDITP_H #define _PH_SECEDITP_H #include #include typedef struct { ISecurityInformationVtbl *VTable; ULONG RefCount; PPH_STRING ObjectName; PPH_GET_OBJECT_SECURITY GetObjectSecurity; PPH_SET_OBJECT_SECURITY SetObjectSecurity; PVOID Context; PSI_ACCESS AccessEntries; ULONG NumberOfAccessEntries; } PhSecurityInformation; ISecurityInformation *PhSecurityInformation_Create( _In_ PWSTR ObjectName, _In_ PPH_GET_OBJECT_SECURITY GetObjectSecurity, _In_ PPH_SET_OBJECT_SECURITY SetObjectSecurity, _In_opt_ PVOID Context, _In_ PPH_ACCESS_ENTRY AccessEntries, _In_ ULONG NumberOfAccessEntries ); HRESULT STDMETHODCALLTYPE PhSecurityInformation_QueryInterface( _In_ ISecurityInformation *This, _In_ REFIID Riid, _Out_ PVOID *Object ); ULONG STDMETHODCALLTYPE PhSecurityInformation_AddRef( _In_ ISecurityInformation *This ); ULONG STDMETHODCALLTYPE PhSecurityInformation_Release( _In_ ISecurityInformation *This ); HRESULT STDMETHODCALLTYPE PhSecurityInformation_GetObjectInformation( _In_ ISecurityInformation *This, _Out_ PSI_OBJECT_INFO ObjectInfo ); HRESULT STDMETHODCALLTYPE PhSecurityInformation_GetSecurity( _In_ ISecurityInformation *This, _In_ SECURITY_INFORMATION RequestedInformation, _Out_ PSECURITY_DESCRIPTOR *SecurityDescriptor, _In_ BOOL Default ); HRESULT STDMETHODCALLTYPE PhSecurityInformation_SetSecurity( _In_ ISecurityInformation *This, _In_ SECURITY_INFORMATION SecurityInformation, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor ); HRESULT STDMETHODCALLTYPE PhSecurityInformation_GetAccessRights( _In_ ISecurityInformation *This, _In_ const GUID *ObjectType, _In_ ULONG Flags, _Out_ PSI_ACCESS *Access, _Out_ PULONG Accesses, _Out_ PULONG DefaultAccess ); HRESULT STDMETHODCALLTYPE PhSecurityInformation_MapGeneric( _In_ ISecurityInformation *This, _In_ const GUID *ObjectType, _In_ PUCHAR AceFlags, _Inout_ PACCESS_MASK Mask ); HRESULT STDMETHODCALLTYPE PhSecurityInformation_GetInheritTypes( _In_ ISecurityInformation *This, _Out_ PSI_INHERIT_TYPE *InheritTypes, _Out_ PULONG InheritTypesCount ); HRESULT STDMETHODCALLTYPE PhSecurityInformation_PropertySheetPageCallback( _In_ ISecurityInformation *This, _In_ HWND hwnd, _In_ UINT uMsg, _In_ SI_PAGE_TYPE uPage ); typedef HPROPSHEETPAGE (WINAPI *_CreateSecurityPage)( _In_ LPSECURITYINFO psi ); typedef BOOL (WINAPI *_EditSecurity)( _In_ HWND hwndOwner, _In_ LPSECURITYINFO psi ); #endif