NTSTATUS SamrSrvConnect( /* [in] */ handle_t hBinding, /* [in] */ PCWSTR pwszSystemName, /* [in] */ DWORD dwAccessMask, /* [out] */ CONNECT_HANDLE *hConn ) { const DWORD dwConnectVersion = 2; NTSTATUS ntStatus = STATUS_SUCCESS; DWORD dwError = 0; PCONNECT_CONTEXT pConnCtx = NULL; ntStatus = SamrSrvConnectInternal(hBinding, pwszSystemName, dwAccessMask, dwConnectVersion, 0, NULL, NULL, NULL, &pConnCtx); BAIL_ON_NTSTATUS_ERROR(ntStatus); *hConn = (CONNECT_HANDLE)pConnCtx; cleanup: if (ntStatus == STATUS_SUCCESS && dwError != ERROR_SUCCESS) { ntStatus = LwWin32ErrorToNtStatus(dwError); } return ntStatus; error: if (pConnCtx) { SamrSrvConnectContextFree(pConnCtx); } *hConn = NULL; goto cleanup; }
NTSTATUS SamrSrvConnect4( /* [in] */ handle_t hBinding, /* [in] */ PCWSTR pwszSystemName, /* [in] */ DWORD dwUnknown1, /* [in] */ DWORD dwAccessMask, /* [out] */ CONNECT_HANDLE *hConn ) { const DWORD dwConnectVersion = 4; NTSTATUS ntStatus = STATUS_SUCCESS; PCONNECT_CONTEXT pConnCtx = NULL; ntStatus = SamrSrvConnectInternal(hBinding, pwszSystemName, dwAccessMask, dwConnectVersion, 0, NULL, NULL, NULL, &pConnCtx); BAIL_ON_NTSTATUS_ERROR(ntStatus); *hConn = (CONNECT_HANDLE)pConnCtx; cleanup: return ntStatus; error: if (pConnCtx) { SamrSrvConnectContextFree(pConnCtx); } *hConn = NULL; goto cleanup; }