BOOLEAN CmpCheckCreateAccess( IN PUNICODE_STRING RelativeName, IN PSECURITY_DESCRIPTOR Descriptor, IN PACCESS_STATE AccessState, IN KPROCESSOR_MODE PreviousMode, IN ACCESS_MASK AdditionalAccess, OUT PNTSTATUS AccessStatus ); Routine Description: This routine checks to see if we are allowed to create a sub-key in the given key, and performs auditing as appropriate. Arguments: RelativeName - Supplies the relative name of the key being created. Descriptor - Supplies the security descriptor of the key in which the sub-key is to be created. CreateAccess - The access mask corresponding to create access for this directory type. AccessState - Checks for traverse access will typically be incidental to some other access attempt. Information on the current state of that access attempt is required so that the constituent access attempts may be associated with each other in the audit log. PreviousMode - The previous processor mode. AdditionalAccess - access rights in addition to KEY_CREATE_SUB_KEY that are required. (e.g. KEY_CREATE_LINK) AccessStatus - Pointer to a variable to return the status code of the access attempt. In the case of failure this status code must be propagated back to the user. Return Value: BOOLEAN - TRUE if access is allowed and FALSE otherwise. AccessStatus contains the status code to be passed back to the caller. It is not correct to simply pass back STATUS_ACCESS_DENIED, since this will have to change with the advent of mandatory access control.