da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CDDL HEADER START
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The contents of this file are subject to the terms of the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Common Development and Distribution License (the "License").
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * You may not use this file except in compliance with the License.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * or http://www.opensolaris.org/os/licensing.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * See the License for the specific language governing permissions
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * and limitations under the License.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * When distributing Covered Code, include this CDDL HEADER in each
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * If applicable, add the following below this CDDL HEADER, with the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * fields enclosed by brackets "[]" replaced with your own identifying
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * information: Portions Copyright [yyyy] [name of copyright owner]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CDDL HEADER END
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#ifndef _MLSVC_LSA_NDL_
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define _MLSVC_LSA_NDL_
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Local Security Authority RPC (LSARPC) interface definition.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * Names containing a backslash ('\') are known as qualified or composite
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * names. The string preceding the backslash is assumed to be the domain
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * name and the string following the slash is assumed to be name to be
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * resolved within that domain.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * Names that do not contain a backslash are known as isolated names.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * An isolated name may be a single label, such as john, or may be in
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * user principal name (UPN) form, such as john@example.com.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include "ndrtypes.ndl"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CloseHandle 0x00
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_Delete 0x01
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_EnumPrivileges 0x02
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QuerySecurityObject 0x03
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetSecurityObject 0x04
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_ChangePassword 0x05
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_OpenPolicy 0x06
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QueryInfoPolicy 0x07
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetInfoPolicy 0x08
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_ClearAuditLog 0x09
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CreateAccount 0x0a
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_EnumerateAccounts 0x0b
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CreateTrustedDomain 0x0c
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_EnumTrustedDomain 0x0d
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupNames 0x0e
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupSids 0x0f
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CreateSecret 0x10
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_OpenAccount 0x11
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_EnumPrivsAccount 0x12
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_AddAccountPrivs 0x13
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_RemoveAccountPrivs 0x14
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_GetAccountQuota 0x15
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetAccountQuota 0x16
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_GetSystemAccessAccount 0x17
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetSystemAccessAccount 0x18
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_OpenTrustedDomain 0x19
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QueryInfoTrustedDomain 0x1a
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetinfoTrustedDomain 0x1b
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_OpenSecret 0x1c
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetSecret 0x1d
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QuerySecret 0x1e
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupPrivValue 0x1f
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupPrivName 0x20
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupPrivDisplayName 0x21
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_DeleteObject 0x22
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_EnumAccountsWithUserRight 0x23
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_EnumAccountRights 0x24
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_AddAccountRights 0x25
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_RemoveAccountRights 0x26
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QueryTrustedDomainInfo 0x27
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetTrustedDomainInfo 0x28
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb/* Windows 2000 */
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_DeleteTrustedDomain 0x29
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_StorePrivateData 0x2a
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_RetrievePrivateData 0x2b
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_OpenPolicy2 0x2c
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_GetConnectedUser 0x2d
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QueryInfoPolicy2 0x2e
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetInfoPolicy2 0x2f
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QueryTrustedDomainInfoByName 0x30
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetTrustedDomainInfoByName 0x31
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_EnumTrustedDomainsEx 0x32
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CreateTrustedDomainEx 0x33
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CloseTrustedDomainEx 0x34
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QueryDomainInfoPolicy 0x35
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetDomainInfoPolicy 0x36
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_OpenTrustedDomainByName 0x37
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_TestCall 0x38
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupSids2 0x39
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupNames2 0x3a
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CreateTrustedDomainEx2 0x3b
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb/* Windows 2000 SP3 */
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredWrite 0x3c
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredRead 0x3d
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredEnumerate 0x3e
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredWriteDomainCreds 0x3f
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredReadDomainCreds 0x40
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredDelete 0x41
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredGetTargetInfo 0x42
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredProfileLoaded 0x43
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupNames3 0x44
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredGetSessionTypes 0x45
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_RegisterAuditEvent 0x46
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_GenAuditEvent 0x47
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_UnregisterAuditEvent 0x48
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QueryForestTrustInfo 0x49
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetForestTrustInfo 0x4a
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredRename 0x4b
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupSids3 0x4c
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupNames4 0x4d
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_OpenPolicySce 0x4e
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb/* Windows Server 2003 */
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_AdtRegisterSecurityEventSource 0x4f
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_AdtUnregisterSecurityEventSource 0x50
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_AdtReportSecurityEvent 0x51
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb/* Windows Vista */
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredFindBestCredential 0x52
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetAuditPolicy 0x53
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QueryAuditPolicy 0x54
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_EnumerateAuditPolicy 0x55
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_EnumerateAuditCategories 0x56
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_EnumerateAuditSubCategories 0x57
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupAuditCategoryName 0x58
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_LookupAuditSubCategoryName 0x59
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_SetAuditSecurity 0x5a
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_QueryAuditSecurity 0x5b
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredReadByTokenHandle 0x5c
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredRestoreCredentials 0x5d
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSARPC_OPNUM_CredBackupCredentials 0x5e
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * Lookup levels. Level 1 appears to mean only look on the local host and
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * level 2 means forward the request to the PDC. On the PDC it probably
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * doesn't matter which level you use but on a BDC a level 1 lookup will
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * fail if the BDC doesn't have the info whereas a level 2 lookup will also
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * check with the PDC.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_WKSTA 1 /* Windows NT 3.1 */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_PDC 2
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_TDL 3
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_GC 4 /* Windows 2000 */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_XFORESTREFERRAL 5 /* Windows XP */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_XFORESTRESOLVE 6
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_RODCREFERRALTOFULLDC 7 /* Windows Vista */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier/*
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * Name/SID lookup flags
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_NAME_NOT_SPN 0x00000001
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_NAME_MAYBE_XFOREST 0x00000002
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_NAME_IN_DBVIEW 0x00000004
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier/*
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * Name/SID lookup options
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * 0x00000000 Lookup isolated names both locally and in domains/forests.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * 0x80000000 Lookup isolated names (except for UPNs) only in the local
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * account database. Do not lookup UPNs.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_OPT_ALL 0x00000000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_LOOKUP_OPT_LOCAL 0x80000000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier/*
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * Client revision
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * 0x00000001 Client does not understand DNS names or forests.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * 0x00000002 Client understands DNS names and forests.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * Notes:
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * 0 means the same as 1
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * Anything greater than 2 means the same as 2
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_CLIENT_REVISION_NT 0x00000001
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define LSA_CLIENT_REVISION_AD 0x00000002
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Definition for a SID. The ndl compiler won't allow a typedef of
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * a structure containing variable size members.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_sid {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE Revision;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE SubAuthCount;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE Authority[6];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(SubAuthCount)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD SubAuthority[ANY_SIZE_ARRAY];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_string_desc {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD allosize;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw LPTSTR str;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct mslsa_string_desc mslsa_string_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
8d7e41661dc4633488e93b13363137523ce59977jose borregoCONTEXT_HANDLE(mslsa_handle) mslsa_handle_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_luid {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD low_part;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD high_part;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct mslsa_luid mslsa_luid_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
8d7e41661dc4633488e93b13363137523ce59977jose borregostruct mslsa_guid {
8d7e41661dc4633488e93b13363137523ce59977jose borrego DWORD data1;
8d7e41661dc4633488e93b13363137523ce59977jose borrego WORD data2;
8d7e41661dc4633488e93b13363137523ce59977jose borrego WORD data3;
8d7e41661dc4633488e93b13363137523ce59977jose borrego BYTE data4[8];
8d7e41661dc4633488e93b13363137523ce59977jose borrego};
8d7e41661dc4633488e93b13363137523ce59977jose borregotypedef struct mslsa_guid mslsa_guid_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * OpenPolicy2 obtains a handle for a remote LSA. This handle is
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * required for all subsequent LSA requests.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The server name should be the name of the target PDC or BDC, with
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * the double backslash prefix.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * As far as I can tell, the mslsa_object_attributes structure can be
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * all zero except for the length, which should be set to sizeof(struct
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * mslsa_object_attributes).
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * For read access, the desired access mask should contain the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * READ_CONTROL standard right and whatever policy rights are required.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * I haven't tried any update operations but if you get the access mask
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * wrong you can crash the domain controller.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * From netmon:
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * length = 12
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * impersonation_level = 2
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * context_tracking_mode = 1
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * effective_only = 0
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_quality_of_service {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD impersonation_level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE context_tracking_mode;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE effective_only;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_object_attributes {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD rootDirectory;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD objectName;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD attributes;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD securityDescriptor;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_quality_of_service *qualityOfService;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_OpenPolicy)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_OpenPolicy {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD *servername;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct mslsa_object_attributes attributes;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD desiredAccess;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT mslsa_handle_t domain_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_OpenPolicy2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_OpenPolicy2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR servername;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct mslsa_object_attributes attributes;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD desiredAccess;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT mslsa_handle_t domain_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CloseHandle closes an association with the LSA. The returned handle
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * will be all zero.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_CloseHandle)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_CloseHandle {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT mslsa_handle_t result_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * EnumPrivileges
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Obtain a list of privilege names. This interface is not implemented
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * yet The definition below has not been tested. This is a guess based
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * on data available from netmon.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_PrivDef {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mslsa_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mslsa_luid_t luid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_PrivEnumBuf {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD entries_read;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(entries_read)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_PrivDef *def;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_EnumPrivileges)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_EnumPrivileges {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT DWORD enum_context;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD max_length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT REFERENCE struct mslsa_PrivEnumBuf *enum_buf;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * QuerySecurityObject. I'm not entirely sure how to set this up yet.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * I used the discovery RPC to scope it out. The structures are set up
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * according to netmon and the assumption that a security descriptor
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * on the wire looks like the regular user level security descriptor.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_SecurityDescriptor {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE revision;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE sbz1;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD control;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD owner;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD group;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD sacl;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD dacl;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_SecurityDescInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(length)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE *desc; /* temporary */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /* struct mslsa_SecurityDescriptor *desc; */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_QuerySecurityObject)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_QuerySecurityObject {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD security_info;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct mslsa_SecurityDescInfo *desc_info;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * EnumerateAccounts and EnumerateTrustedDomain.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_AccountInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_sid *sid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_EnumAccountBuf {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD entries_read;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(entries_read)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_AccountInfo *info;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_EnumerateAccounts)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_EnumerateAccounts {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT DWORD enum_context;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD max_length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT REFERENCE struct mslsa_EnumAccountBuf *enum_buf;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_TrustedDomainInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mslsa_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_sid *sid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_EnumTrustedDomainBuf {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD entries_read;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(entries_read)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_TrustedDomainInfo *info;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_EnumTrustedDomain)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_EnumTrustedDomain {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT DWORD enum_context;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD max_length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT REFERENCE struct mslsa_EnumTrustedDomainBuf *enum_buf;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wrightstruct mslsa_TrustedDomainInfoEx {
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright mslsa_string_t dns_name;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright mslsa_string_t nb_name;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright struct mslsa_sid *sid;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright DWORD trust_direction;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright DWORD trust_type;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright DWORD trust_attrs;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright};
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wrightstruct mslsa_EnumTrustedDomainBufEx {
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright DWORD entries_read;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright SIZE_IS(entries_read)
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright struct mslsa_TrustedDomainInfoEx *info;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright};
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan WrightOPERATION(LSARPC_OPNUM_EnumTrustedDomainsEx)
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wrightstruct mslsa_EnumTrustedDomainEx {
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright IN mslsa_handle_t handle;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright INOUT DWORD enum_context;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright IN DWORD max_length;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright OUT REFERENCE struct mslsa_EnumTrustedDomainBufEx *enum_buf;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright OUT DWORD status;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Definitions common to both LookupSids and LookupNames. Both return
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * an mslsa_domain_table[]. Each interface also returns a specific
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * table with entries which index the mslsa_domain_table[].
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_domain_entry {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mslsa_string_t domain_name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_sid *domain_sid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct mslsa_domain_entry mslsa_domain_entry_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_domain_table {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mslsa_domain_entry_t *entries;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD max_n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Definitions for LookupSids.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The input parameters are:
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * A valid LSA handle obtained from an LsarOpenPolicy.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The table of SIDs to be looked up.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * A table of names (probably empty).
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The lookup level (local=1 or PDC=2).
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * An enumeration counter (used for continuation operations).
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The output results are:
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * A table of referenced domains.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * A table of usernames.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The updated value of the enumeration counter.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The result status.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_lup_sid_entry {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_sid *psid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_lup_sid_table {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_lup_sid_entry *entries;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_name_entry {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD sid_name_use;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD unknown_flags;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mslsa_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD domain_ix; /* -1 means none */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_name_table {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_name_entry *entries;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_LookupSids)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_LookupSids {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct mslsa_lup_sid_table lup_sid_table;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct mslsa_domain_table *domain_table;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT struct mslsa_name_table name_table;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh IN WORD lookup_level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT DWORD mapped_count;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
faa1795a28a5c712eed6d0a3f84d98c368a316c6jbOPERATION(LSARPC_OPNUM_CreateSecret)
faa1795a28a5c712eed6d0a3f84d98c368a316c6jbstruct mslsa_CreateSecret {
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb IN mslsa_handle_t handle;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb IN mslsa_string_t name;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb IN DWORD access_mask;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb OUT mslsa_handle_t secret_handle;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb OUT DWORD status;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Definitions for LookupNames.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * LookupNames requires the following input parameters.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * A valid LSA handle obtained from an LsarOpenPolicy.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The table of names to be looked up.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * A table of translated sids (probably empty).
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The lookup level (local=1 or PDC=2).
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * An enumeration counter (used for continuation operations).
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The outputs are as follows.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * A table of referenced domains.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * A table of translated sids (actually rids).
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The updated value of the enumeration counter.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The result status.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_lup_name_table {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mslsa_string_t names[ANY_SIZE_ARRAY];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_rid_entry {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD sid_name_use;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD pad;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD domain_index;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_rid_table {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_rid_entry *rids;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_LookupNames)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_LookupNames {
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN REFERENCE struct mslsa_lup_name_table *name_table;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh OUT struct mslsa_domain_table *domain_table;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT struct mslsa_rid_table translated_sids;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh IN WORD lookup_level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT DWORD mapped_count;
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * QueryInfoPolicy returns various pieces of policy information. The
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * desired information is specified using a class value, as defined
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * below.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define MSLSA_POLICY_AUDIT_LOG_INFO 1
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define MSLSA_POLICY_AUDIT_EVENTS_INFO 2
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define MSLSA_POLICY_PRIMARY_DOMAIN_INFO 3
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define MSLSA_POLICY_UNKNOWN_4_INFO 4
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define MSLSA_POLICY_ACCOUNT_DOMAIN_INFO 5
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define MSLSA_POLICY_SERVER_ROLE_INFO 6
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define MSLSA_POLICY_REPLICA_SOURCE_INFO 7
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define MSLSA_POLICY_DEFAULT_QUOTA_INFO 8
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define MSLSA_POLICY_DB_INFO 9
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define MSLSA_POLICY_AUDIT_SET_INFO 10
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define MSLSA_POLICY_AUDIT_QUERY_INFO 11
8d7e41661dc4633488e93b13363137523ce59977jose borrego#define MSLSA_POLICY_DNS_DOMAIN_INFO 12
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSA_ROLE_STANDALONE_WORKSTATION 0
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSA_ROLE_MEMBER_WORKSTATION 1
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSA_ROLE_STANDALONE_SERVER 2
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSA_ROLE_MEMBER_SERVER 3
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSA_ROLE_BACKUP_DC 4
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb#define LSA_ROLE_PRIMARY_DC 5
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb/*
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb * MSLSA_POLICY_AUDIT_EVENTS_INFO
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb */
faa1795a28a5c712eed6d0a3f84d98c368a316c6jbstruct mslsa_AuditEventsInfo {
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb DWORD enabled;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb SIZE_IS (count)
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb DWORD *settings;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb DWORD count;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb/*
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb * MSLSA_POLICY_PRIMARY_DOMAIN_INFO
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_PrimaryDomainInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_string_desc name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_sid *sid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb/*
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb * MSLSA_POLICY_ACCOUNT_DOMAIN_INFO
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_AccountDomainInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_string_desc name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_sid *sid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb * MSLSA_POLICY_SERVER_ROLE_INFO
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_ServerRoleInfo {
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb DWORD role;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb DWORD pad;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
8d7e41661dc4633488e93b13363137523ce59977jose borregostruct mslsa_DnsDomainInfo {
8d7e41661dc4633488e93b13363137523ce59977jose borrego struct mslsa_string_desc nb_domain;
8d7e41661dc4633488e93b13363137523ce59977jose borrego struct mslsa_string_desc dns_domain;
8d7e41661dc4633488e93b13363137523ce59977jose borrego struct mslsa_string_desc forest;
8d7e41661dc4633488e93b13363137523ce59977jose borrego struct mslsa_guid guid;
8d7e41661dc4633488e93b13363137523ce59977jose borrego struct mslsa_sid *sid;
8d7e41661dc4633488e93b13363137523ce59977jose borrego};
8d7e41661dc4633488e93b13363137523ce59977jose borrego
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion mslsa_PolicyInfoResUnion {
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb CASE(2) struct mslsa_AuditEventsInfo audit_events;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb CASE(3) struct mslsa_PrimaryDomainInfo pd_info;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb CASE(5) struct mslsa_AccountDomainInfo ad_info;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb CASE(6) struct mslsa_ServerRoleInfo server_role;
8d7e41661dc4633488e93b13363137523ce59977jose borrego CASE(12) struct mslsa_DnsDomainInfo dns_info;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DEFAULT char *nullptr;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
8d7e41661dc4633488e93b13363137523ce59977jose borrego/*
8d7e41661dc4633488e93b13363137523ce59977jose borrego * This structure needs to be declared, even though it can't be used in
8d7e41661dc4633488e93b13363137523ce59977jose borrego * mslsa_QueryInfoPolicy, in order to get the appropriate size to calculate
8d7e41661dc4633488e93b13363137523ce59977jose borrego * the correct fixup offsets. If ndrgen did the right thing,
8d7e41661dc4633488e93b13363137523ce59977jose borrego * mslsa_PolicyInfoRes would be one of the out parameters. However, if
8d7e41661dc4633488e93b13363137523ce59977jose borrego * we do it that way, the switch_value isn't known early enough to do
8d7e41661dc4633488e93b13363137523ce59977jose borrego * the fixup calculation. So it all has to go in mslsa_QueryInfoPolicy.
8d7e41661dc4633488e93b13363137523ce59977jose borrego */
8d7e41661dc4633488e93b13363137523ce59977jose borregostruct mslsa_PolicyInfoRes {
8d7e41661dc4633488e93b13363137523ce59977jose borrego DWORD address;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD switch_value;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb SWITCH(switch_value)
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb union mslsa_PolicyInfoResUnion ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_QueryInfoPolicy)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_QueryInfoPolicy {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN WORD info_class;
8d7e41661dc4633488e93b13363137523ce59977jose borrego /*
8d7e41661dc4633488e93b13363137523ce59977jose borrego * Can't use this form because we need to include members explicitly.
8d7e41661dc4633488e93b13363137523ce59977jose borrego * OUT struct mslsa_PolicyInfoRes result;
8d7e41661dc4633488e93b13363137523ce59977jose borrego */
8d7e41661dc4633488e93b13363137523ce59977jose borrego OUT DWORD address;
8d7e41661dc4633488e93b13363137523ce59977jose borrego OUT WORD switch_value;
8d7e41661dc4633488e93b13363137523ce59977jose borrego SWITCH(switch_value)
8d7e41661dc4633488e93b13363137523ce59977jose borrego OUT union mslsa_PolicyInfoResUnion ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
8d7e41661dc4633488e93b13363137523ce59977jose borrego
8d7e41661dc4633488e93b13363137523ce59977jose borrego
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * OpenAccount.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Returns a handle that can be used to access the account specified
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * by a SID. This handle can be used to enumerate account privileges.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_OpenAccount)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_OpenAccount {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN REFERENCE struct mslsa_sid *sid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD access_mask;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT mslsa_handle_t account_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
8d7e41661dc4633488e93b13363137523ce59977jose borrego
8d7e41661dc4633488e93b13363137523ce59977jose borrego /*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * EnumPrivilegesAccount.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Enumerate the list of privileges held by the specified account. The
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * handle must be a valid account handle obtained via OpenAccount. The
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * luid values returned will be probably only be relevant on the domain
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * controller so we'll need to find a way to convert them to the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * actual privilege names.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_LuidAndAttributes {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_luid luid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD attributes;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_PrivilegeSet {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD privilege_count;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD control;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(privilege_count)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_LuidAndAttributes privilege[ANY_SIZE_ARRAY];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_EnumPrivsAccount)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_EnumPrivsAccount {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t account_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct mslsa_PrivilegeSet *privileges;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
faa1795a28a5c712eed6d0a3f84d98c368a316c6jbOPERATION(LSARPC_OPNUM_OpenSecret)
faa1795a28a5c712eed6d0a3f84d98c368a316c6jbstruct mslsa_OpenSecret {
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb IN mslsa_handle_t handle;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb IN mslsa_string_t name;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb IN DWORD access_mask;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb OUT mslsa_handle_t secret_handle;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb OUT DWORD status;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb};
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * LookupPrivValue
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Map a privilege name to a local unique id (LUID). Privilege names
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * are consistent across the network. LUIDs are machine specific.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The privilege list is provided as a set of LUIDs so the privilege
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * lookup functions must be used to identify which the privilege to
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * which each LUID refers. The handle here is a policy handle.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_LookupPrivValue)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_LookupPrivValue {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct mslsa_luid luid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * LookupPrivName
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Map a privilege value (LUID) to a privilege name. Privilege names
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * are consistent across the network. LUIDs are machine specific.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The privilege list is provided as a set of LUIDs so the privilege
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * lookup functions must be used to identify which the privilege to
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * which each LUID refers. The handle here is a policy handle.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_LookupPrivName)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_LookupPrivName {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct mslsa_luid luid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT mslsa_string_t *name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * LookupPrivDisplayName
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Map a privilege name to a local unique id (LUID). Privilege names
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * are consistent across the network. LUIDs are machine specific.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The privilege list is provided as a set of LUIDs so the privilege
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * lookup functions must be used to identify which the privilege to
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * which each LUID refers. The handle here is a policy handle.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_LookupPrivDisplayName)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_LookupPrivDisplayName {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN WORD client_language;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN WORD default_language;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT mslsa_string_t *display_name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT WORD language_ret;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * GetConnectedUser
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * Return the account name and NetBIOS domain name for the user making
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * the request. All input fields should be ignored by the server.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_DomainName {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_string_desc *name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_GetConnectedUser)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct mslsa_GetConnectedUser {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR hostname;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN BYTE *owner_in;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN BYTE *domain_in;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct mslsa_string_desc *owner;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct mslsa_DomainName *domain;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * LSARPC_OPNUM_LookupSids2
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * SID lookup function that appeared in Windows 2000. It appears to be
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * very similar to the original SID lookup RPC. There are two extra IN
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * parameters, which we don't care about. The OUT name structure has
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * an extra field, in which zero seems to be okay.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct lsar_name_entry2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD sid_name_use;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD padding;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mslsa_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD domain_ix; /* -1 means none */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD flags;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Kriertypedef struct lsar_name_entry2 lsar_translated_name_ex_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct lsar_name_table2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct lsar_name_entry2 *entries;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Kriertypedef struct lsar_name_table2 lsar_translated_names_ex_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_LookupSids2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct lsar_lookup_sids2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t policy_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct mslsa_lup_sid_table lup_sid_table;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct mslsa_domain_table *domain_table;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT struct lsar_name_table2 name_table;
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh IN WORD lookup_level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT DWORD mapped_count;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN DWORD lookup_options;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN DWORD client_revision;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fe1c642d06e14b412cd83ae2179303186ab08972Bill KrierOPERATION(LSARPC_OPNUM_LookupSids3)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct lsar_lookup_sids3 {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN struct mslsa_lup_sid_table lup_sid_table;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier OUT struct mslsa_domain_table *domain_table;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier INOUT lsar_translated_names_ex_t name_table;
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh IN WORD lookup_level;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier INOUT DWORD mapped_count;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN DWORD lookup_options;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN DWORD client_revision;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier OUT DWORD status;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * LSARPC_OPNUM_LookupNames2
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Name lookup function that appeared in Windows 2000. It appears to be
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * very similar to the original name lookup RPC. There are two extra IN
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * parameters, which we don't care about. The lsar_rid_entry2 structure
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * has an extra field, in which zero seems to be okay.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct lsar_rid_entry2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD sid_name_use;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD pad;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD domain_index; /* -1 means none */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD flags;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct lsar_rid_table2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct lsar_rid_entry2 *rids;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(LSARPC_OPNUM_LookupNames2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct lsar_LookupNames2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN mslsa_handle_t policy_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN REFERENCE struct mslsa_lup_name_table *name_table;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct mslsa_domain_table *domain_table;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT struct lsar_rid_table2 translated_sids;
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh IN WORD lookup_level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT DWORD mapped_count;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN DWORD lookup_options;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN DWORD client_revision;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct lsar_translated_sid_ex2 {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD sid_name_use;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD pad;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier struct mslsa_sid *sid;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD domain_index; /* -1 means none */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD flags;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Kriertypedef struct lsar_translated_sid_ex2 lsar_translated_sid_ex2_t;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct lsar_sid_ex2_table {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD n_entry;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier SIZE_IS(n_entry)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier struct lsar_translated_sid_ex2 *sids;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Kriertypedef struct lsar_sid_ex2_table lsar_sid_ex2_table_t;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
fe1c642d06e14b412cd83ae2179303186ab08972Bill KrierOPERATION(LSARPC_OPNUM_LookupNames3)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct lsar_LookupNames3 {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN mslsa_handle_t policy_handle;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN REFERENCE struct mslsa_lup_name_table *name_table;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier OUT struct mslsa_domain_table *domain_table;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier INOUT struct lsar_sid_ex2_table translated_sids;
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh IN WORD lookup_level;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier INOUT DWORD mapped_count;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN DWORD lookup_options;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN DWORD client_revision;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier OUT DWORD status;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
fe1c642d06e14b412cd83ae2179303186ab08972Bill KrierOPERATION(LSARPC_OPNUM_LookupNames4)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct lsar_LookupNames4 {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN REFERENCE struct mslsa_lup_name_table *name_table;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier OUT struct mslsa_domain_table *domain_table;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier INOUT struct lsar_sid_ex2_table translated_sids;
fd9ee8b58485b20072eeef1310a88ff348d5e7fajoyce mcintosh IN WORD lookup_level;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier INOUT DWORD mapped_count;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN DWORD lookup_options;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier IN DWORD client_revision;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier OUT DWORD status;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The LSARPC interface definition.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwINTERFACE(0)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion lsarpc_interface {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_CloseHandle)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_CloseHandle CloseHandle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_QuerySecurityObject)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_QuerySecurityObject QuerySecurityObj;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_EnumerateAccounts)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_EnumerateAccounts EnumAccounts;
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright CASE(LSARPC_OPNUM_EnumTrustedDomainsEx)
29bd28862cfb8abbd3a0f0a4b17e08bbc3652836Alan Wright struct mslsa_EnumTrustedDomainEx EnumTrustedDomainEx;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_EnumTrustedDomain)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_EnumTrustedDomain EnumTrustedDomain;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_OpenAccount)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_OpenAccount OpenAccount;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_EnumPrivsAccount)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_EnumPrivsAccount EnumPrivsAccount;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_LookupPrivValue)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_LookupPrivValue LookupPrivValue;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_LookupPrivName)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_LookupPrivName LookupPrivName;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_LookupPrivDisplayName)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_LookupPrivDisplayName LookupPrivDisplayName;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb CASE(LSARPC_OPNUM_CreateSecret)
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb struct mslsa_CreateSecret CreateSecret;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb CASE(LSARPC_OPNUM_OpenSecret)
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb struct mslsa_OpenSecret OpenSecret;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_QueryInfoPolicy)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_QueryInfoPolicy QueryInfoPolicy;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_OpenPolicy)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_OpenPolicy OpenPolicy;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_OpenPolicy2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_OpenPolicy2 OpenPolicy2;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_LookupSids)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_LookupSids LookupSids;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_LookupNames)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_LookupNames LookupNames;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_GetConnectedUser)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct mslsa_GetConnectedUser GetConnectedUser;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_LookupSids2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct lsar_lookup_sids2 LookupSids2;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier CASE(LSARPC_OPNUM_LookupSids3)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier struct lsar_lookup_sids3 LookupSids3;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(LSARPC_OPNUM_LookupNames2)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct lsar_LookupNames2 LookupNames2;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier CASE(LSARPC_OPNUM_LookupNames3)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier struct lsar_LookupNames3 LookupNames3;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier CASE(LSARPC_OPNUM_LookupNames4)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier struct lsar_LookupNames4 LookupNames4;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef union lsarpc_interface lsarpc_interface_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwEXTERNTYPEINFO(lsarpc_interface)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#endif /* _MLSVC_LSA_NDL_ */