ReactOS  0.4.15-dev-425-gc40b086
cmse.c File Reference
#include "ntoskrnl.h"
#include "debug.h"
Include dependency graph for cmse.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

PSECURITY_DESCRIPTOR NTAPI CmpHiveRootSecurityDescriptor (VOID)
 
NTSTATUS CmpQuerySecurityDescriptor (IN PCM_KEY_CONTROL_BLOCK Kcb, IN SECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG BufferLength)
 
NTSTATUS CmpSetSecurityDescriptor (IN PCM_KEY_CONTROL_BLOCK Kcb, IN PSECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN POOL_TYPE PoolType, IN PGENERIC_MAPPING GenericMapping)
 
NTSTATUS CmpAssignSecurityDescriptor (IN PCM_KEY_CONTROL_BLOCK Kcb, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
 
NTSTATUS NTAPI CmpSecurityMethod (IN PVOID ObjectBody, IN SECURITY_OPERATION_CODE OperationCode, IN PSECURITY_INFORMATION SecurityInformation, IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG BufferLength, IN OUT PSECURITY_DESCRIPTOR *OldSecurityDescriptor, IN POOL_TYPE PoolType, IN PGENERIC_MAPPING GenericMapping)
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 12 of file cmse.c.

Function Documentation

◆ CmpAssignSecurityDescriptor()

NTSTATUS CmpAssignSecurityDescriptor ( IN PCM_KEY_CONTROL_BLOCK  Kcb,
IN PSECURITY_DESCRIPTOR  SecurityDescriptor 
)

Definition at line 251 of file cmse.c.

253 {
254  DPRINT("CmpAssignSecurityDescriptor(%p %p)\n",
255  Kcb, SecurityDescriptor);
256  return STATUS_SUCCESS;
257 }
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:182
void DPRINT(...)
Definition: polytest.cpp:61
return STATUS_SUCCESS
Definition: btrfs.c:3014

Referenced by CmpSecurityMethod().

◆ CmpHiveRootSecurityDescriptor()

PSECURITY_DESCRIPTOR NTAPI CmpHiveRootSecurityDescriptor ( VOID  )

Definition at line 21 of file cmse.c.

22 {
25  PACL Acl, AclCopy;
26  PSID Sid[4];
29  ULONG AceLength, AclLength, SidLength;
30  PACE_HEADER AceHeader;
31  ULONG i;
32  PAGED_CODE();
33 
34  /* Phase 1: Allocate SIDs */
35  SidLength = RtlLengthRequiredSid(1);
36  Sid[0] = ExAllocatePoolWithTag(PagedPool, SidLength, TAG_CMSD);
37  Sid[1] = ExAllocatePoolWithTag(PagedPool, SidLength, TAG_CMSD);
38  Sid[2] = ExAllocatePoolWithTag(PagedPool, SidLength, TAG_CMSD);
39  SidLength = RtlLengthRequiredSid(2);
40  Sid[3] = ExAllocatePoolWithTag(PagedPool, SidLength, TAG_CMSD);
41 
42  /* Make sure all SIDs were allocated */
43  if (!(Sid[0]) || !(Sid[1]) || !(Sid[2]) || !(Sid[3]))
44  {
45  /* Bugcheck */
46  KeBugCheckEx(REGISTRY_ERROR, 11, 1, 0, 0);
47  }
48 
49  /* Phase 2: Initialize all SIDs */
54  if (!NT_SUCCESS(Status)) KeBugCheckEx(REGISTRY_ERROR, 11, 2, 0, 0);
55 
56  /* Phase 2: Setup SID Sub Authorities */
62 
63  /* Make sure all SIDs are valid */
64  ASSERT(RtlValidSid(Sid[0]));
65  ASSERT(RtlValidSid(Sid[1]));
66  ASSERT(RtlValidSid(Sid[2]));
67  ASSERT(RtlValidSid(Sid[3]));
68 
69  /* Phase 3: Calculate ACL Length */
70  AclLength = sizeof(ACL);
71  for (i = 0; i < 4; i++)
72  {
73  /* This is what MSDN says to do */
74  AceLength = FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart);
75  AceLength += SeLengthSid(Sid[i]);
76  AclLength += AceLength;
77  }
78 
79  /* Phase 3: Allocate the ACL */
81  if (!Acl) KeBugCheckEx(REGISTRY_ERROR, 11, 3, 0, 0);
82 
83  /* Phase 4: Create the ACL */
85  if (!NT_SUCCESS(Status)) KeBugCheckEx(REGISTRY_ERROR, 11, 4, Status, 0);
86 
87  /* Phase 5: Build the ACL */
92  if (!NT_SUCCESS(Status)) KeBugCheckEx(REGISTRY_ERROR, 11, 5, Status, 0);
93 
94  /* Phase 5: Make the ACEs inheritable */
95  Status = RtlGetAce(Acl, 0, (PVOID*)&AceHeader);
97  AceHeader->AceFlags |= CONTAINER_INHERIT_ACE;
98  Status = RtlGetAce(Acl, 1, (PVOID*)&AceHeader);
100  AceHeader->AceFlags |= CONTAINER_INHERIT_ACE;
101  Status = RtlGetAce(Acl, 2, (PVOID*)&AceHeader);
103  AceHeader->AceFlags |= CONTAINER_INHERIT_ACE;
104  Status = RtlGetAce(Acl, 3, (PVOID*)&AceHeader);
106  AceHeader->AceFlags |= CONTAINER_INHERIT_ACE;
107 
108  /* Phase 6: Allocate the security descriptor and make space for the ACL */
110  sizeof(SECURITY_DESCRIPTOR) +
111  AclLength,
112  TAG_CMSD);
113  if (!SecurityDescriptor) KeBugCheckEx(REGISTRY_ERROR, 11, 6, 0, 0);
114 
115  /* Phase 6: Make a copy of the ACL */
117  RtlCopyMemory(AclCopy, Acl, AclLength);
118 
119  /* Phase 7: Create the security descriptor */
122  if (!NT_SUCCESS(Status)) KeBugCheckEx(REGISTRY_ERROR, 11, 7, Status, 0);
123 
124  /* Phase 8: Set the ACL as a DACL */
126  TRUE,
127  AclCopy,
128  FALSE);
129  if (!NT_SUCCESS(Status)) KeBugCheckEx(REGISTRY_ERROR, 11, 8, Status, 0);
130 
131  /* Free the SIDs and original ACL */
132  for (i = 0; i < 4; i++) ExFreePoolWithTag(Sid[i], TAG_CMSD);
134 
135  /* Return the security descriptor */
136  return SecurityDescriptor;
137 }
#define SECURITY_LOCAL_SYSTEM_RID
Definition: setypes.h:546
UCHAR AceFlags
Definition: ms-dtyp.idl:211
#define TRUE
Definition: types.h:120
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
#define KEY_READ
Definition: nt_native.h:1023
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:182
LONG NTSTATUS
Definition: precomp.h:26
static SID_IDENTIFIER_AUTHORITY WorldAuthority
Definition: security.c:14
NTSYSAPI PULONG NTAPI RtlSubAuthoritySid(_In_ PSID Sid, _In_ ULONG SubAuthority)
NTSYSAPI NTSTATUS NTAPI RtlGetAce(PACL Acl, ULONG AceIndex, PVOID *Ace)
NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptor(_Out_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Revision)
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL, DWORD, DWORD, PSID)
NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR, BOOLEAN, PACL, BOOLEAN)
NTSYSAPI NTSTATUS NTAPI RtlCreateAcl(PACL Acl, ULONG AclSize, ULONG AclRevision)
#define SECURITY_DESCRIPTOR_REVISION
Definition: setypes.h:58
NTSYSAPI NTSTATUS NTAPI RtlInitializeSid(IN OUT PSID Sid, IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount)
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
Definition: glfuncs.h:248
struct _ACL ACL
_In_ ULONG _In_ ACCESS_MASK _In_ PSID Sid
Definition: rtlfuncs.h:1103
NTSYSAPI BOOLEAN NTAPI RtlValidSid(IN PSID Sid)
Definition: sid.c:21
#define SECURITY_NT_AUTHORITY
Definition: setypes.h:526
struct _ACL * PACL
Definition: security.c:104
#define CONTAINER_INHERIT_ACE
Definition: setypes.h:715
#define SECURITY_BUILTIN_DOMAIN_RID
Definition: setypes.h:553
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define SECURITY_WORLD_SID_AUTHORITY
Definition: setypes.h:499
#define SECURITY_WORLD_RID
Definition: setypes.h:513
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
Status
Definition: gdiplustypes.h:24
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
#define SECURITY_RESTRICTED_CODE_RID
Definition: setypes.h:541
#define TAG_CMSD
Definition: cmlib.h:207
#define ACL_REVISION
Definition: setypes.h:39
unsigned int ULONG
Definition: retypes.h:1
#define ExFreePoolWithTag(_P, _T)
Definition: module.h:1099
#define SeLengthSid(Sid)
Definition: sefuncs.h:570
#define DOMAIN_ALIAS_RID_ADMINS
Definition: setypes.h:624
_In_ ULONG AclLength
Definition: rtlfuncs.h:1844
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
Definition: rtlcompat.c:108
SID_IDENTIFIER_AUTHORITY NtAuthority
Definition: database.c:19
NTSYSAPI ULONG NTAPI RtlLengthRequiredSid(IN ULONG SubAuthorityCount)
Definition: sid.c:54
#define PAGED_CODE()

Referenced by CmInitSystem1(), CmpCreateRegistryRoot(), CmpInitializeHiveList(), and CmpInitializeSystemHive().

◆ CmpQuerySecurityDescriptor()

NTSTATUS CmpQuerySecurityDescriptor ( IN PCM_KEY_CONTROL_BLOCK  Kcb,
IN SECURITY_INFORMATION  SecurityInformation,
OUT PSECURITY_DESCRIPTOR  SecurityDescriptor,
IN OUT PULONG  BufferLength 
)

Definition at line 140 of file cmse.c.

144 {
146  ULONG SidSize;
147  ULONG AclSize;
148  ULONG SdSize;
151  ULONG Owner = 0;
152  ULONG Group = 0;
153  ULONG Dacl = 0;
154 
156 
157  DPRINT("CmpQuerySecurityDescriptor()\n");
158 
159  if (SecurityInformation == 0)
160  {
161  return STATUS_ACCESS_DENIED;
162  }
163 
164  SidSize = RtlLengthSid(SeWorldSid);
165  RelSd = SecurityDescriptor;
166  SdSize = sizeof(*RelSd);
167 
169  {
170  Owner = SdSize;
171  SdSize += SidSize;
172  }
173 
175  {
176  Group = SdSize;
177  SdSize += SidSize;
178  }
179 
181  {
183  Dacl = SdSize;
184  AclSize = sizeof(ACL) + sizeof(ACE) + SidSize;
185  SdSize += AclSize;
186  }
187 
189  {
191  }
192 
193  if (*BufferLength < SdSize)
194  {
195  *BufferLength = SdSize;
197  }
198 
199  *BufferLength = SdSize;
200 
203  if (!NT_SUCCESS(Status))
204  return Status;
205 
206  RelSd->Control |= Control;
207  RelSd->Owner = Owner;
208  RelSd->Group = Group;
209  RelSd->Dacl = Dacl;
210 
211  if (Owner)
212  RtlCopyMemory((PUCHAR)RelSd + Owner,
213  SeWorldSid,
214  SidSize);
215 
216  if (Group)
217  RtlCopyMemory((PUCHAR)RelSd + Group,
218  SeWorldSid,
219  SidSize);
220 
221  if (Dacl)
222  {
223  Status = RtlCreateAcl((PACL)((PUCHAR)RelSd + Dacl),
224  AclSize,
225  ACL_REVISION);
226  if (NT_SUCCESS(Status))
227  {
229  ACL_REVISION,
230  GENERIC_ALL,
231  SeWorldSid);
232  }
233  }
234 
236  return Status;
237 }
#define SE_SACL_PRESENT
Definition: setypes.h:769
#define GENERIC_ALL
Definition: nt_native.h:92
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptorRelative(_Out_ PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor, _In_ ULONG Revision)
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:182
#define DBG_UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:325
_In_opt_ PSID Group
Definition: rtlfuncs.h:1605
unsigned char * PUCHAR
Definition: retypes.h:3
LONG NTSTATUS
Definition: precomp.h:26
#define GROUP_SECURITY_INFORMATION
Definition: setypes.h:124
#define SE_DACL_PRESENT
Definition: setypes.h:767
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL, DWORD, DWORD, PSID)
#define STATUS_BUFFER_TOO_SMALL
Definition: shellext.h:69
NTSYSAPI NTSTATUS NTAPI RtlCreateAcl(PACL Acl, ULONG AclSize, ULONG AclRevision)
#define SECURITY_DESCRIPTOR_REVISION
Definition: setypes.h:58
_In_ ULONG BufferLength
Definition: usbdlib.h:225
WORD SECURITY_DESCRIPTOR_CONTROL
Definition: lsa.idl:37
struct _ACL ACL
void DPRINT(...)
Definition: polytest.cpp:61
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1339
NTSYSAPI ULONG NTAPI RtlLengthSid(IN PSID Sid)
Definition: sid.c:150
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define SACL_SECURITY_INFORMATION
Definition: setypes.h:126
#define STATUS_ACCESS_DENIED
Definition: udferr_usr.h:145
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL Dacl
Definition: rtlfuncs.h:1552
PSID SeWorldSid
Definition: sid.c:31
static const WCHAR Control[]
Definition: interface.c:27
Status
Definition: gdiplustypes.h:24
SECURITY_DESCRIPTOR_CONTROL Control
Definition: setypes.h:785
#define OWNER_SECURITY_INFORMATION
Definition: setypes.h:123
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID Owner
Definition: rtlfuncs.h:1556
#define ACL_REVISION
Definition: setypes.h:39
unsigned int ULONG
Definition: retypes.h:1
return STATUS_SUCCESS
Definition: btrfs.c:3014
Definition: rtltypes.h:990
#define DACL_SECURITY_INFORMATION
Definition: setypes.h:125

Referenced by CmpSecurityMethod().

◆ CmpSecurityMethod()

NTSTATUS NTAPI CmpSecurityMethod ( IN PVOID  ObjectBody,
IN SECURITY_OPERATION_CODE  OperationCode,
IN PSECURITY_INFORMATION  SecurityInformation,
IN OUT PSECURITY_DESCRIPTOR  SecurityDescriptor,
IN OUT PULONG  BufferLength,
IN OUT PSECURITY_DESCRIPTOR OldSecurityDescriptor,
IN POOL_TYPE  PoolType,
IN PGENERIC_MAPPING  GenericMapping 
)

Definition at line 261 of file cmse.c.

269 {
272 
273  DBG_UNREFERENCED_PARAMETER(OldSecurityDescriptor);
275 
276  Kcb = ((PCM_KEY_BODY)ObjectBody)->KeyControlBlock;
277 
278  /* Acquire the hive lock */
279  CmpLockRegistry();
280 
281  /* Acquire the KCB lock */
282  if (OperationCode == QuerySecurityDescriptor)
283  {
285  }
286  else
287  {
289  }
290 
291  /* Don't touch deleted keys */
292  if (Kcb->Delete)
293  {
294  /* Release the KCB lock */
295  CmpReleaseKcbLock(Kcb);
296 
297  /* Release the hive lock */
299  return STATUS_KEY_DELETED;
300  }
301 
302  switch (OperationCode)
303  {
304  case SetSecurityDescriptor:
305  DPRINT("Set security descriptor\n");
310  PoolType,
312  break;
313 
314  case QuerySecurityDescriptor:
315  DPRINT("Query security descriptor\n");
319  BufferLength);
320  break;
321 
322  case DeleteSecurityDescriptor:
323  DPRINT("Delete security descriptor\n");
324  /* HACK */
325  break;
326 
327  case AssignSecurityDescriptor:
328  DPRINT("Assign security descriptor\n");
331  break;
332 
333  default:
334  KeBugCheckEx(SECURITY_SYSTEM, 0, STATUS_INVALID_PARAMETER, 0, 0);
335  }
336 
337  /* Release the KCB lock */
338  CmpReleaseKcbLock(Kcb);
339 
340  /* Release the hive lock */
342 
343  return Status;
344 }
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:182
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
#define DBG_UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:325
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS CmpQuerySecurityDescriptor(IN PCM_KEY_CONTROL_BLOCK Kcb, IN SECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG BufferLength)
Definition: cmse.c:140
#define CmpAcquireKcbLockShared(k)
Definition: cm_x.h:121
_In_ ULONG BufferLength
Definition: usbdlib.h:225
void DPRINT(...)
Definition: polytest.cpp:61
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1339
#define STATUS_KEY_DELETED
Definition: ntstatus.h:599
FORCEINLINE VOID CmpReleaseKcbLock(PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cm_x.h:169
VOID NTAPI CmpUnlockRegistry(VOID)
Definition: cmsysini.c:1993
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
Status
Definition: gdiplustypes.h:24
static GENERIC_MAPPING GenericMapping
Definition: SeInheritance.c:11
NTSTATUS CmpSetSecurityDescriptor(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PSECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN POOL_TYPE PoolType, IN PGENERIC_MAPPING GenericMapping)
Definition: cmse.c:240
FORCEINLINE VOID CmpAcquireKcbLockExclusive(PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cm_x.h:102
struct _CM_KEY_BODY * PCM_KEY_BODY
NTSTATUS CmpAssignSecurityDescriptor(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
Definition: cmse.c:251
return STATUS_SUCCESS
Definition: btrfs.c:3014
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T _In_ POOL_TYPE PoolType
Definition: fltkernel.h:1444
VOID NTAPI CmpLockRegistry(VOID)
Definition: cmsysini.c:1907
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
Definition: rtlcompat.c:108

Referenced by CmpCreateObjectTypes(), and CmpDoCreateChild().

◆ CmpSetSecurityDescriptor()

NTSTATUS CmpSetSecurityDescriptor ( IN PCM_KEY_CONTROL_BLOCK  Kcb,
IN PSECURITY_INFORMATION  SecurityInformation,
IN PSECURITY_DESCRIPTOR  SecurityDescriptor,
IN POOL_TYPE  PoolType,
IN PGENERIC_MAPPING  GenericMapping 
)

Definition at line 240 of file cmse.c.

245 {
246  DPRINT("CmpSetSecurityDescriptor()\n");
247  return STATUS_SUCCESS;
248 }
void DPRINT(...)
Definition: polytest.cpp:61
return STATUS_SUCCESS
Definition: btrfs.c:3014

Referenced by CmpSecurityMethod().