PCM_POST_BLOCK CmpAllocatePostBlock( IN POST_BLOCK_TYPE BlockType, IN ULONG PostFlags, IN PCM_KEY_BODY KeyBody, IN PCM_POST_BLOCK MasterBlock ); Routine Description: Allocates a post block from pool. The non-pageable stuff comes from NonPagedPool, the pageable stuff from paged pool. Quota will be charged. Arguments: BlockType - specifies the type of the post block to be allocated i.e. : PostSyncrhronous, PostAsyncUser, PostAsyncKernel PostFlags - specifies the flags to be set on the allocated post block valid flags: - REG_NOTIFY_MASTER_POST - the post block to be allocated is a master post block. KeyBody - The Key object to whom this post block is attached. On master blocks this is NULL. When the post object is freed, the KeyBody object is dereferenced (if not NULL - i.e. for slave blocks). This allow us to perform back-end cleanup for "fake-slave" keys opened by NtNotifyMultipleKeys MasterBlock - the post block to be allocated is a slave of this master block. valid only when PostFlags == REG_NOTIFY_MASTER_POST Obs: The Sync.SystemEvent and AsyncUser.Apc members are allocated only for master post blocks Return Value: Pointer to the CM_POST_BLOCK if successful NULL if there were not enough resources available.