3.1.4.4.9 LsarOpenPolicy3 (Opnum 130)
The LsarOpenPolicy3 method, as specified below, opens a context handle to the RPC server. This is the first function that MUST be called to contact the Local Security Authority (Domain Policy) (LSAD) Remote Protocol database.
-
NTSTATUS LsarOpenPolicy3( [in,unique,string] PLSAPR_SERVER_NAME SystemName, [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes, [in] ACCESS_MASK DesiredAccess, [in] ULONG InVersion, [in] [switch_is(InVersion)] LSAPR_REVISION_INFO* InRevisionInfo, [out] ULONG* OutVersion, [out] [switch_is(*OutVersion)] LSAPR_REVISION_INFO* OutRevisionInfo, [out] LSAPR_HANDLE* PolicyHandle );
SystemName: This parameter has no effect on message processing in any environment. It MUST be ignored on receipt.
ObjectAttributes: This parameter has no effect on message processing in any environment. All fields MUST<67> be ignored except RootDirectory, which MUST be NULL.
DesiredAccess: An ACCESS_MASK value (section 2.2.1.1) that specifies the requested access rights that MUST be granted on the returned PolicyHandle, if the request is successful.
InVersion: Indicates which field of the InRevisionInfo union is used.
InRevisionInfo: Revision information. For details, see the definition of the LSAPR_REVISION_INFO_V1 structure (section 2.2.2.6), which is contained in the LSAPR_REVISION_INFO union (section 2.2.2.7).
OutVersion: Indicates which field of the OutRevisionInfo union is used.
OutRevisionInfo: Revision information. For details, see the definition of the LSAPR_REVISION_INFO_V1 structure (section 2.2.2.6), which is contained in the LSAPR_REVISION_INFO union (section 2.2.2.7).
PolicyHandle: An RPC context handle (section 2.2.2.1) that represents a reference to the abstract data model of a policy object, as specified in section 3.1.1.1.
Return Values: The following is a summary of the return values that an implementation MUST return, as specified by the message processing below.
-
Return value/code
Description
0x00000000
STATUS_SUCCESS
The request was successfully completed.
0xC0000022
STATUS_ACCESS_DENIED
The caller does not have the permissions to perform this operation.
0xC000000D
STATUS_INVALID_PARAMETER
One of the supplied parameters is incorrect. For example, this can happen when ObjectAttributes is NULL or DesiredAccess is zero.
0xC00000BB
STATUS_NOT_SUPPORTED
The operation is not supported for this object.
Server processing instructions upon receiving this message are the same as LsarOpenPolicy2 with exception of the following:
If InVersion is not equal to 1, the server MUST return STATUS_NOT_SUPPORTED (0xC00000BB).
The server MUST set OutVersion to 1 and OutRevisionInfo.Revision to 1.
To indicate support for AES encryption of trust authentication information (sections 2.2.7.29 and 2.2.7.30), the OutRevisionInfo.SupportedFeatures field MUST be set to 1.
To indicate support for name lookups with authentication other than RPC_C_AUTHN_NETLOGON security provider, the OutRevisionInfo.SupportedFeatures field MUST be set to 2.<68>
To indicate support for AES encryption of secrets (section 2.2.6.2), the OutRevisionInfo.SupportedFeatures field MUST be set to 4.
Note: LsarOpenPolicy3 supersedes LsarOpenPolicy2 and MUST be used whenever possible.