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 */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#ifndef _MLSVC_SAM_NDL_
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define _MLSVC_SAM_NDL_
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Security Accounts Manager RPC (SAMR) interface definition.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include "ndrtypes.ndl"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright/* Windows NT */
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh#define SAMR_OPNUM_Connect 0x00 /* SamrConnect */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_CloseHandle 0x01
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_SetSecObject 0x02
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_QuerySecObject 0x03
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_ShutdownSamServer 0x04 /* NotUsedOnWire */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_LookupDomain 0x05
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_EnumLocalDomains 0x06
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_OpenDomain 0x07
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_QueryDomainInfo 0x08
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_SetDomainInfo 0x09
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_CreateDomainGroup 0x0a
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_QueryDomainGroups 0x0b
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_CreateDomainUser 0x0c
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_EnumDomainUsers 0x0d
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_CreateDomainAlias 0x0e
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_EnumDomainAliases 0x0f
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_LookupIds 0x10 /* GetAliasMembership */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_LookupNames 0x11
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_LookupDomainIds 0x12
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_OpenGroup 0x13
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_QueryGroupInfo 0x14
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_StoreGroupInfo 0x15
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_AddGroupMember 0x16
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_DeleteDomainGroup 0x17
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_DeleteGroupMember 0x18
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_ListGroupMembers 0x19
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_SetGroupMemberAttributes 0x1a
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_OpenAlias 0x1b
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_QueryAliasInfo 0x1c
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_SetAliasInfo 0x1d
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_DeleteDomainAlias 0x1e
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_AddAliasMember 0x1f
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_DeleteAliasMember 0x20
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai#define SAMR_OPNUM_ListAliasMembers 0x21
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_OpenUser 0x22
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_DeleteUser 0x23
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_QueryUserInfo 0x24
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_SetUserInfo0 0x25 /* SetUserInfo */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_ChangeUserPassword0 0x26 /* ChangeUserPassword */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_QueryUserGroups 0x27
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_QueryDispInfo 0x28 /* QueryDispInfo1 */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_GetDisplayEnumIndex 0x29
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_TestPrivateDomainFunctions 0x2a /* NotUsedOnWire */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_TestPrivateUserFunctions 0x2b /* NotUsedOnWire */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_GetUserPwInfo 0x2c
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright/* Windows 2000 */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_RemoveMemberFromForeignDomain 0x2d
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_QueryInfoDomain2 0x2e
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_QueryInfoUser2 0x2f
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_EnumDomainGroups 0x30 /* QueryDispInfo2 */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_GetDisplayEnumIndex2 0x31
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_CreateUser 0x32
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_QueryDispInfo4 0x33
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_AddMultipleAliasMembers 0x34
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_RemoveMultipleAliasMembers 0x35
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_ChangeUserOemPassword 0x36
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define SAMR_OPNUM_ChangePasswordUser2 0x37 /* UnicodePasswd */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_OPNUM_GetDomainPwInfo 0x38
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh#define SAMR_OPNUM_Connect2 0x39 /* SamrConnect2 */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define SAMR_OPNUM_SetUserInfo 0x3a /* SetInfoUser2 */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_SetBootKeyInformation 0x3b
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_GetBootKeyInformation 0x3c
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh#define SAMR_OPNUM_Connect3 0x3d /* NotUsedOnWire */
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh#define SAMR_OPNUM_Connect4 0x3e /* SamrConnect4 */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_ChangeUserUnicodePassword3 0x3f
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright/* Windows XP and Windows Server 2003 */
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh#define SAMR_OPNUM_Connect5 0x40 /* SamrConnect5 */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_RidToSid 0x41
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_SetDSRMPassword 0x42
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_ValidatePassword 0x43
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright/* Windows Vista */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_QueryLocalizableAccountsInDomain 0x44
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_OPNUM_PerformGenericOperation 0x45
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Sam account flags used when creating an account. These flags seem
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * to be very similar to the USER_INFO_X flags (UF_XXX) in lmaccess.h
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * but the values are different.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_ACCOUNTDISABLE 0x0001
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_HOMEDIR_REQUIRED 0x0002
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_PASSWD_NOTREQD 0x0004
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_TEMP_DUPLICATE_ACCOUNT 0x0008
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_NORMAL_ACCOUNT 0x0010
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_MNS_LOGON_ACCOUNT 0x0020
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_INTERDOMAIN_TRUST_ACCOUNT 0x0040
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_WORKSTATION_TRUST_ACCOUNT 0x0080
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_SERVER_TRUST_ACCOUNT 0x0100
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_DONT_EXPIRE_PASSWD 0x0200
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_ACCOUNT_AUTOLOCK 0x0400
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_MACHINE_ACCOUNT_MASK ( \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SAMR_AF_INTERDOMAIN_TRUST_ACCOUNT \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw | SAMR_AF_WORKSTATION_TRUST_ACCOUNT \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw | SAMR_AF_SERVER_TRUST_ACCOUNT)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_AF_ACCOUNT_TYPE_MASK ( \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SAMR_AF_TEMP_DUPLICATE_ACCOUNT \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw | SAMR_AF_NORMAL_ACCOUNT \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw | SAMR_AF_INTERDOMAIN_TRUST_ACCOUNT \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw | SAMR_AF_WORKSTATION_TRUST_ACCOUNT \
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw | SAMR_AF_SERVER_TRUST_ACCOUNT)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier/*
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * QueryUserInfo UserAllInformation WhichFields
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_USERNAME 0x00000001
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_FULLNAME 0x00000002
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_USERID 0x00000004
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_PRIMARYGROUPID 0x00000008
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_ADMINCOMMENT 0x00000010
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_USERCOMMENT 0x00000020
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_HOMEDIRECTORY 0x00000040
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_HOMEDIRECTORYDRIVE 0x00000080
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_SCRIPTPATH 0x00000100
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_PROFILEPATH 0x00000200
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_WORKSTATIONS 0x00000400
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_LASTLOGON 0x00000800
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_LASTLOGOFF 0x00001000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_LOGONHOURS 0x00002000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_BADPASSWORDCOUNT 0x00004000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_LOGONCOUNT 0x00008000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_PASSWORDCANCHANGE 0x00010000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_PASSWORDMUSTCHANGE 0x00020000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_PASSWORDLASTSET 0x00040000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_ACCOUNTEXPIRES 0x00080000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_USERACCOUNTCONTROL 0x00100000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_PARAMETERS 0x00200000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_COUNTRYCODE 0x00400000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_CODEPAGE 0x00800000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_NTPASSWORDPRESENT 0x01000000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_LMPASSWORDPRESENT 0x02000000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_PRIVATEDATA 0x04000000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_PASSWORDEXPIRED 0x08000000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_SECURITYDESCRIPTOR 0x10000000
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define SAMR_USER_ALL_OWF_PASSWORD 0x20000000
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_USER_ALL_UNDEFINED_MASK 0xC0000000
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai * Alias Access Mask values for SAMR
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai * Section 2.2.1.6 of MS-SAMR
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai#define SAMR_ALIAS_ACCESS_EXECUTE 0x00020008
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai#define SAMR_ALIAS_ACCESS_WRITE 0x00020013
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai#define SAMR_ALIAS_ACCESS_READ 0x00020004
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai#define SAMR_ALIAS_ACCESS_ALL_ACCESS 0x000F001F
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai#define SAMR_ALIAS_ACCESS_WRITE_ACCOUNT 0x00000010
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai#define SAMR_ALIAS_ACCESS_READ_INFO 0x00000008
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai#define SAMR_ALIAS_ACCESS_LIST_MEMBERS 0x00000004
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai#define SAMR_ALIAS_ACCESS_REMOVE_MEMBER 0x00000002
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_ALIAS_ACCESS_ADD_MEMBER 0x00000001
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_REVISION_1 1 /* Pre Windows 2000 */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_REVISION_2 2 /* Windows 2000 */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright#define SAMR_REVISION_3 3 /* Post Windows 2000 */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Definition for a SID. The ndl compiler does not allow a typedef of
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * a structure containing variable size members.
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * Note: cast compatible with smb_sid_t, and code depends on that.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_sid {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE Revision;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE SubAuthCount;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE Authority[6];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(SubAuthCount)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD SubAuthority[ANY_SIZE_ARRAY];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * SAMR definition of a security_descriptor.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_sec_desc {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE Revision;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw BYTE Sbz1;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD Control;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_sid *owner;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_sid *group;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_sid *sacl;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_sid *dacl;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct samr_sd {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD length;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier SIZE_IS(length)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier BYTE *data;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Kriertypedef struct samr_sd samr_sd_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * See RPC_STRING in the MS IDL.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Definition for a string. The length and allosize should be set to
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * twice the string length (i.e. strlen(str) * 2). The runtime code
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * will perform the appropriate string to a wide-char conversions,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * so str should point to a regular char * string.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_string {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD allosize;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw LPTSTR str;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct samr_string samr_string_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Alternative varying/conformant string definition - for
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * non-null terminated strings. This definition must match
8d7e41661dc4633488e93b13363137523ce59977jose borrego * ndr_vcbuf_t.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_vcb {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * size_is (actually a copy of length_is) will
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * be inserted here by the marshalling library.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD vc_first_is;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD vc_length_is;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(vc_length_is)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD buffer[ANY_SIZE_ARRAY];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_vcbuf {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD wclen;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD wcsize;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_vcb *vcb;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct samr_vcbuf samr_vcbuf_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
8d7e41661dc4633488e93b13363137523ce59977jose borregoCONTEXT_HANDLE(samr_handle) samr_handle_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * OLD_LARGE_INTEGER: a 64-bit value.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_quad {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD low;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD high;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef struct samr_quad samr_quad_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier/*
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * Blob used for the NT and LM OWF passwords.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * The length and maxlen should be 16.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct samr_short_blob {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD length;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD maxlen;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier SIZE_IS(length / 2)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD *buf;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright#define DOMAIN_PASSWORD_COMPLEX 0x00000001
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright#define DOMAIN_PASSWORD_NO_ANON_CHANGE 0x00000002
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright#define DOMAIN_PASSWORD_NO_CLEAR_CHANGE 0x00000004
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright#define DOMAIN_LOCKOUT_ADMINS 0x00000008
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright#define DOMAIN_PASSWORD_STORE_CLEARTEXT 0x00000010
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright#define DOMAIN_REFUSE_PASSWORD_CHANGE 0x00000020
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wrightstruct samr_password_info {
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright WORD min_length;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright DWORD properties;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright};
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wrighttypedef struct samr_password_info samr_password_info_t;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier/*
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * There is some sort of logon bitmap structure in here, which I
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * think is a varying and conformant array, i.e.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * struct samr_logon_hours {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * DWORD size_is; (1260)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * DWORD first_is; (zero)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * DWORD length_is; (168)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * BYTE bitmap[21];
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * };
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * struct samr_logon_info {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * DWORD length;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * SIZE_IS(length / 8)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * struct samr_logon_hours *hours;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * };
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * There are 10080 minutes/week => 10080/8 = 1260 (0x04EC).
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * So size_is is set as some sort of maximum.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * There are 168 hours/week => 168/8 = 21 (0xA8). Since there are 21
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * bytes (all set to 0xFF), this is is probably the default setting.
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_MINS_PER_WEEK 10080
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_HOURS_PER_WEEK 168
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_HOURS_MAX_SIZE (SAMR_MINS_PER_WEEK / 8)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_HOURS_SET_LEN(LEN) ((LEN) / 8)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_SET_USER_HOURS_SZ 21
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct samr_logon_hours {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD size;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD first;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD length;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier BYTE bitmap[SAMR_SET_USER_HOURS_SZ];
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct samr_logon_info {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD units;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD hours;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct samr_logon_hours_all {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD units_per_week;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier SIZE_IS(units_per_week / 8)
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier BYTE *hours;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross/*
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * SAMPR_USER_PASSWORD (in the MS Net API) or
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * struct samr_user_password (internal use) is
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * the "clear" form of struct samr_encr_passwd
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * (SAMPR_ENCRYPTED_USER_PASSWORD in MS Net).
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * It's not used by ndrgen, but is declared here
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * to help clarify the relationship between these,
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * and for the benefit of our client-side code.
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#ifndef NDRGEN
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define SAMR_USER_PWLEN 256
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct samr_user_password {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross smb_wchar_t Buffer[SAMR_USER_PWLEN];
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross DWORD Length;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross};
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#endif /* NDRGEN */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross/* SAMPR_ENCRYPTED_USER_PASSWORD */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define SAMR_ENCR_PWLEN 516 /* sizeof samr_user_password */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct samr_encr_passwd {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross BYTE data[SAMR_ENCR_PWLEN];
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross};
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross/* ENCRYPTED_NT_OWF_PASSWORD */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define SAMR_PWHASH_LEN 16
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct samr_encr_hash {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross BYTE data[SAMR_PWHASH_LEN];
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * SamrConnect.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshOPERATION(SAMR_OPNUM_Connect)
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshstruct samr_Connect {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD *servername;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD access_mask;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * SamrConnect2.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshOPERATION(SAMR_OPNUM_Connect2)
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshstruct samr_Connect2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR servername;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD access_mask;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * SamrConnect4. A new form of connect first seen with Windows 2000.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * A new field has been added to the input request. Value: 0x00000002.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshOPERATION(SAMR_OPNUM_Connect4)
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshstruct samr_Connect4 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR servername;
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright IN DWORD revision;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD access_mask;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * SamrConnect5. A new form of connect first seen with Windows XP.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The server name is the fully qualified domain name, i.e.
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * \\server.sun.com.
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright *
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * [in] DWORD InVersion,
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * [in] [switch_is(InVersion)] samr_revision_info *InRevisionInfo
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * [out] DWORD *OutVersion
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * [out] [switch_is(*OutVersion)] *samr_revision_info *OutRevisionInfo
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright *
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * SupportedFeatures (see notes in [MS-SAMR]
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * 0x00000001 RID values returned from the server must not be
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * concatenated with the domain SID.
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * 0x00000002 Reserved
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * 0x00000004 Reserved
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wrightstruct samr_revision_info1 {
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright DWORD revision;
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright DWORD supported_features;
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright};
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wrighttypedef struct samr_revision_info1 samr_revision_info1_t;
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wrightunion samr_revision_info {
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright UNION_INFO_ENT(1,samr_revision_info);
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright DEFAULT char *nullptr;
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright};
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshOPERATION(SAMR_OPNUM_Connect5)
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshstruct samr_Connect5 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN LPTSTR servername;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD access_mask;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross /*
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * This should be a union, but instead this is
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * done this way because unions are hard to
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * express in this RPC implementation.
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross INOUT DWORD unknown2_00000001; /* V1 */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross INOUT DWORD unknown3_00000001; /* V1 */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross /* SAMPR_REVISION_INFO_V1 */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross INOUT DWORD unknown4_00000003; /* Revision */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross INOUT DWORD unknown5_00000000; /* SupportedFeatures */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CloseHandle closes an association with the SAM. Using the same
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * structure as the LSA seems to work.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_CloseHandle)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_CloseHandle {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t result_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * LookupDomain: lookup up the domain SID.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_LookupDomain)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_LookupDomain {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_string_t domain_name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct samr_sid *sid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * EnumLocalDomain
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * This looks like a request to get the local domains supported by a
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * remote server. NT always seems to return 2 domains: the local
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * domain (hostname) and the Builtin domain.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The max_length field is set to 0x2000.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Enum_context is set to 0 in the request and set to entries_read in
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * the reply. Like most of these enums, total_entries is the same as
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * entries_read.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_LocalDomainEntry {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_LocalDomainInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD entries_read;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(entries_read)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_LocalDomainEntry *entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_EnumLocalDomains)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_EnumLocalDomain {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT DWORD enum_context;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD max_length;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct samr_LocalDomainInfo *info;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD total_entries;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * OpenDomain
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Open a specific domain within the SAM. From this I assume that each
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * SAM can handle multiple domains so you need to identify the one with
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * which you want to work. Working with a domain handle does appear to
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * offer the benefit that you can then use RIDs instead of full SIDs,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * which simplifies things a bit. The domain handle can be used to get
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * user and group handles.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_OpenDomain)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_OpenDomain {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD access_mask;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN REFERENCE struct samr_sid *sid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t domain_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * QueryDomainInfo
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Windows 95 Server Manager sends requests for levels 6 and 7 when
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * the services menu item is selected.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_QUERY_DOMAIN_INFO_2 2
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_QUERY_DOMAIN_INFO_6 6
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_QUERY_DOMAIN_INFO_7 7
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryDomainInfo2 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown1; /* 00 00 00 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown2; /* 00 00 00 80 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t s1;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t domain;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t s2;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD sequence_num; /* 2B 00 00 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown3; /* 00 00 00 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown4; /* 01 00 00 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown5; /* 03 00 00 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown6; /* 01 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD num_users;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD num_groups;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD num_aliases;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryDomainInfo6 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown1; /* 00 00 00 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown2; /* B0 7F 14 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown3; /* 00 00 00 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown4; /* 00 00 00 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown5; /* 00 00 00 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryDomainInfo7 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD unknown1; /* 03 00 00 00 */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion samr_QueryDomainInfo_ru {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(2,samr_QueryDomainInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(6,samr_QueryDomainInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(7,samr_QueryDomainInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DEFAULT char *nullptr;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryDomainInfoRes {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD switch_value;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(switch_value)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw union samr_QueryDomainInfo_ru ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_QueryDomainInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryDomainInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t domain_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN WORD info_level;
faa1795a28a5c712eed6d0a3f84d98c368a316c6jb OUT struct samr_QueryDomainInfoRes *info;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright/*
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright * Identical to SAMR_OPNUM_QueryDomainInfo.
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright */
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan WrightOPERATION(SAMR_OPNUM_QueryInfoDomain2)
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wrightstruct samr_QueryInfoDomain2 {
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright IN samr_handle_t domain_handle;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright IN WORD info_level;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright OUT struct samr_QueryDomainInfoRes *info;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright OUT DWORD status;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright};
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross#define SAMR_QUERY_ALIAS_INFO_GENERAL 1
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross#define SAMR_QUERY_ALIAS_INFO_NAME 2
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross#define SAMR_QUERY_ALIAS_INFO_COMMENT 3
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
eef90b8611c0908d0d8deb269e914563046e39ddGordon Rossstruct samr_QueryAliasInfoGeneral {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t name;
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross DWORD member_count;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t desc;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
eef90b8611c0908d0d8deb269e914563046e39ddGordon Rossstruct samr_QueryAliasInfoName {
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross WORD level;
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross samr_string_t name;
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross};
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross
eef90b8611c0908d0d8deb269e914563046e39ddGordon Rossstruct samr_QueryAliasInfoComment {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t desc;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion samr_QueryAliasInfo_ru {
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross CASE(1) struct samr_QueryAliasInfoGeneral info1;
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross CASE(2) struct samr_QueryAliasInfoName info2;
eef90b8611c0908d0d8deb269e914563046e39ddGordon Ross CASE(3) struct samr_QueryAliasInfoComment info3;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DEFAULT char *nullptr;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryAliasInfoRes {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD address;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD switch_value;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(switch_value)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw union samr_QueryAliasInfo_ru ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_QueryAliasInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryAliasInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t alias_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN WORD level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD address;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH (level)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT union samr_QueryAliasInfo_ru ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_CreateDomainAlias)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_CreateDomainAlias {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t domain_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_string_t alias_name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD access_mask;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t alias_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_SetAliasInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_SetAliasInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t alias_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN WORD level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /* TBD */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_DeleteDomainAlias)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_DeleteDomainAlias {
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai INOUT samr_handle_t alias_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_OpenAlias)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_OpenAlias {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t domain_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD access_mask;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t alias_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct name_rid {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct aliases_info {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD count;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD address;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(count)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct name_rid info[ANY_SIZE_ARRAY];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_EnumDomainAliases)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_EnumDomainAliases {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t domain_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD resume_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD mask;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD out_resume;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct aliases_info *aliases;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD entries;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct user_acct_info {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD index;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD ctrl;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t fullname;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t desc;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct user_disp_info {
3db3f65c6274eb042354801a308c8e9bc4994553amw OUT DWORD total_size;
3db3f65c6274eb042354801a308c8e9bc4994553amw OUT DWORD returned_size;
3db3f65c6274eb042354801a308c8e9bc4994553amw OUT WORD switch_value;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD count;
3db3f65c6274eb042354801a308c8e9bc4994553amw SIZE_IS(count)
3db3f65c6274eb042354801a308c8e9bc4994553amw struct user_acct_info *acct;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_QueryDispInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryDispInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t domain_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN WORD level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD start_idx;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD max_entries;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD pref_maxsize;
3db3f65c6274eb042354801a308c8e9bc4994553amw OUT struct user_disp_info users;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct group_acct_info {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD index;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD ctrl;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t desc;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct group_disp_info {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD count;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /* right now we just need one entry */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct group_acct_info acct[1];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_EnumDomainGroups)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_EnumDomainGroups {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t domain_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN WORD level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD start_idx;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD max_entries;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD pref_maxsize;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD total_size;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD returned_size;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT WORD switch_value;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD count;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct group_disp_info *groups;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * OpenUser
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Input must be a domain handle obtained via SAMR_OPNUM_OpenDomain,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * an access mask and the appropriate user rid. The output will be a
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * handle for use with the specified user.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_OpenUser)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_OpenUser {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD access_mask;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t user_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * DeleteUser
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_DeleteUser)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_DeleteUser {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw INOUT samr_handle_t user_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * QueryUserInfo
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Provides various pieces of information on a specific user (see
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * SAM_Q_QUERY_USERINFO and SAM_R_QUERY_USERINFO). The handle must
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * be a valid SAM user handle.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * QueryUserInfo (
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * IN samr_handle_t user_handle,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * IN WORD switch_value,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * OUT union switch(switch_value) {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * case 1: struct QueryUserInfo1 *info1;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * } bufptr,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * OUT DWORD status
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * )
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * typedef enum _USER_INFORMATION_CLASS {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserGeneralInformation = 1,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserPreferencesInformation = 2,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserLogonInformation = 3,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserLogonHoursInformation = 4,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserAccountInformation = 5,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserNameInformation = 6,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserAccountNameInformation = 7,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserFullNameInformation = 8,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserPrimaryGroupInformation = 9,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserHomeInformation = 10,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserScriptInformation = 11,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserProfileInformation = 12,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserAdminCommentInformation = 13,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserWorkStationsInformation = 14,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserControlInformation = 16,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserExpiresInformation = 17,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserInternal1Information = 18,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserParametersInformation = 20,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserAllInformation = 21,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserInternal4Information = 23,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserInternal5Information = 24,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserInternal4InformationNew = 25,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * UserInternal5InformationNew = 26,
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * } USER_INFORMATION_CLASS;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * 1 = username, fullname, description and some other stuff.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * 3 = large structure containing user rid, group rid, username
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * and fullname.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * 5 = large structure (like 3) containing user rid, group rid,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * username, fullname and description.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * 6 = username and fullname
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * 7 = username
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * 8 = fullname
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * 9 = group rid
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * 16 = used after creating a new account
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Due to an ndrgen bug, a function must be provided to to patch the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * offsets used by the unmarshalling code at runtime. In order to
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * simplify things it is useful to use a naming convention that
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * indicates the switch value for each structure.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_QUERY_USER_INFO_1 1
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_QUERY_USER_UNAME_AND_FNAME 6
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_QUERY_USER_USERNAME 7
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_QUERY_USER_FULLNAME 8
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#define SAMR_QUERY_USER_GROUPRID 9
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_QUERY_USER_CONTROL_INFO 16
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier#define SAMR_QUERY_USER_ALL_INFO 21
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryUserInfo1 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t username;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t fullname;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD group_rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t description;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t unknown;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryUserInfo6 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t username;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t fullname;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryUserInfo7 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t username;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryUserInfo8 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t fullname;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryUserInfo9 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD group_rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryUserInfo16 {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross DWORD UserAccountControl;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier/*
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier * SAMR_USER_ALL_INFORMATION
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier */
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krierstruct samr_QueryUserInfo21 {
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_quad_t LastLogon;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_quad_t LastLogoff;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_quad_t PasswordLastSet;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_quad_t AccountExpires;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_quad_t PasswordCanChange;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_quad_t PasswordMustChange;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t UserName;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t FullName;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t HomeDirectory;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t HomeDirectoryDrive;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t ScriptPath;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t ProfilePath;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t AdminComment;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t WorkStations;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t UserComment;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t Parameters;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier struct samr_short_blob LmOwfPassword;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier struct samr_short_blob NtOwfPassword;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_string_t PrivateData;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier samr_sd_t SecurityDescriptor;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD UserId;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD PrimaryGroupId;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD UserAccountControl;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier DWORD WhichFields;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier struct samr_logon_hours_all LogonHours;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD BadPasswordCount;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD LogonCount;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD CountryCode;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier WORD CodePage;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier BYTE LmPasswordPresent;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier BYTE NtPasswordPresent;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier BYTE PasswordExpired;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier BYTE PrivateDataSensitive;
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross/* See also: fixup_samr_QueryUserInfo() */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion QueryUserInfo_result_u {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(1,samr_QueryUserInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(6,samr_QueryUserInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(7,samr_QueryUserInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(8,samr_QueryUserInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(9,samr_QueryUserInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(16,samr_QueryUserInfo);
fe1c642d06e14b412cd83ae2179303186ab08972Bill Krier UNION_INFO_ENT(21,samr_QueryUserInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DEFAULT char *nullptr;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * This structure needs to be declared, even though it can't be used in
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * samr_QueryUserInfo, in order to get the appropriate size to calculate
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * the correct fixup offsets. If ndrgen did the right thing,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * QueryUserInfo_result would be one of the out parameters. However, if
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * we do it that way, the switch_value isn't known early enough to do
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * the fixup calculation. So it all has to go in samr_QueryUserInfo.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct QueryUserInfo_result {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD address;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD switch_value;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(switch_value)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw union QueryUserInfo_result_u ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_QueryUserInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryUserInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t user_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN WORD switch_value;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Can't use this form because we need to include members explicitly.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * OUT struct QueryUserInfo_result result;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD address;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT WORD switch_index;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(switch_value)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT union QueryUserInfo_result_u ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * QueryUserGroups
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_UserGroups {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD attr;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_UserGroupInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_UserGroups *groups;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_QueryUserGroups)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryUserGroups {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t user_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct samr_UserGroupInfo *info;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * LookupName
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_LookupNameTable {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t names[ANY_SIZE_ARRAY];
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_LookupRidTable {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD *rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_RidType {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SIZE_IS(n_entry)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD *rid_type;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_LookupNames)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_LookupNames {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD max_n_entry;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD index;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD total;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_string_t name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct samr_LookupRidTable rids;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT struct samr_RidType rid_types;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * OpenGroup
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Input must be a domain handle obtained via SAMR_OPNUM_OpenDomain,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * an access mask and the appropriate group rid. The output will be a
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * handle for use with the specified group.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_OpenGroup)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_OpenGroup {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD access_mask;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t group_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * QueryGroupInfo
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Input must be a group handle obtained via SAMR_OPNUM_OpenGroup,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * an access mask and the appropriate group rid. The output will
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * be a handle for use with the specified group.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryGroupInfo1 {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw samr_string_t groupname;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion samr_QueryGroupInfo_result_u {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(1,samr_QueryGroupInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DEFAULT char *nullptr;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryGroupInfo_result {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DWORD address;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD switch_index;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(switch_index)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw union samr_QueryGroupInfo_result_u ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_QueryGroupInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_QueryGroupInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t group_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD switch_value;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD address;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT WORD switch_index;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(switch_index)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT union samr_QueryGroupInfo_result_u ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * StoreGroupInfo
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * This definition is mostly just a place holder in case this is useful
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * in the future. Note that it may not be correct. The information is
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * from a netmon trace captured when I added a group description. I
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * haven't implemented it because we don't have to update anything on
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * the PDC. The description should almost certainly be in a separate
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * structure.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_StoreGroupInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_StoreGroupInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t group_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD switch_value;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_string_t group_description;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai/*
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai * AddAliasMember
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai */
c586600796766c83eb9485c446886fd9ed2359a9Keyur DesaiOPERATION(SAMR_OPNUM_AddAliasMember)
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desaistruct samr_AddAliasMember {
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai IN samr_handle_t alias_handle;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai IN REFERENCE struct samr_sid *sid;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai OUT DWORD status;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai};
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai/*
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai * DeleteAliasMember
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai */
c586600796766c83eb9485c446886fd9ed2359a9Keyur DesaiOPERATION(SAMR_OPNUM_DeleteAliasMember)
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desaistruct samr_DeleteAliasMember {
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai IN samr_handle_t alias_handle;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai IN REFERENCE struct samr_sid *sid;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai OUT DWORD status;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai};
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desaistruct samr_SidList {
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai struct samr_sid *sid;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai};
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desaistruct samr_SidInfo {
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai DWORD n_entry;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai SIZE_IS(n_entry)
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai struct samr_SidList *sidlist;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai};
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai/*
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai * ListAliasMembers
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai */
c586600796766c83eb9485c446886fd9ed2359a9Keyur DesaiOPERATION(SAMR_OPNUM_ListAliasMembers)
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desaistruct samr_ListAliasMembers {
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai IN samr_handle_t alias_handle;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai OUT struct samr_SidInfo info;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai OUT DWORD status;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright * GetUserDomainPasswordInformation
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_GetUserPwInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_GetUserPwInfo {
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright IN samr_handle_t user_handle;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright OUT REFERENCE samr_password_info_t *pwinfo;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CreateUser
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Create a user in the domain specified by the domain handle. The
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * domain handle is obtained obtained via SAMR_OPNUM_OpenDomain.
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * DesiredAccess: 0xe00500b0.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The output will be a handle for use with the specified user and the
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright * user's RID. I think the RID may be a unique pointer (it can be null).
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_CreateUser)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_CreateUser {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_vcbuf_t username;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN DWORD account_flags;
a0aa776e20803c84edd153d9cb584fd67163aef3Alan Wright IN DWORD desired_access;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT samr_handle_t user_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD maybe_ptr;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD rid;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * ChangePasswordUser2 - See:
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * SamrUnicodeChangePasswordUser2 [MS-SAMR 3.1.5.10.3]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon RossOPERATION(SAMR_OPNUM_ChangePasswordUser2)
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct samr_ChangePasswordUser2 {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN samr_string_t *servername;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN REF samr_string_t *username;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN struct samr_encr_passwd *nt_newpw;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN struct samr_encr_hash *nt_oldpw;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN BYTE lm_present;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN struct samr_encr_passwd *lm_newpw;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross IN struct samr_encr_hash *lm_oldpw;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * GetDomainPwInfo
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_GetDomainPwInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_GetDomainPwInfo {
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright IN DWORD unused;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright OUT REFERENCE samr_password_info_t *pwinfo;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * SetUserInfo
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * [MS-SAMR] SamrSetInformationUser2
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross/* USER_CONTROL_INFORMATION */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct samr_SetUserInfo16 {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross DWORD UserAccountControl;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross};
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross/*
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * samr_SetUserInfo21, a.k.a
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * SAMR_USER_ALL_INFORMATION
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross *
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * We now know this is the same as samr_QueryUserInfo21
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * Could merge, except for the samr_vcbuf_t mess.
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define SAMR_SET_USER_INFO_21 21
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct samr_SetUserInfo21 {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_quad_t LastLogon;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_quad_t LastLogoff;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_quad_t PasswordLastSet;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_quad_t AccountExpires;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_quad_t PasswordCanChange;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_quad_t PasswordMustChange;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t UserName;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t FullName;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t HomeDirectory;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t HomeDirectoryDrive;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t ScriptPath;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t ProfilePath;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t AdminComment;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t WorkStations;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t UserComment;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t Parameters;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross struct samr_short_blob LmOwfPassword;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross struct samr_short_blob NtOwfPassword;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_vcbuf_t PrivateData;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross samr_sd_t SecurityDescriptor;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross DWORD UserId; /* RID */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross DWORD PrimaryGroupId;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross DWORD UserAccountControl;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross DWORD WhichFields;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /*
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * This should be samr_logon_hours_all, but apparently
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * ndrgen doesn't get that quite right, so instead, the
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * client-side code patches this up.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross struct samr_logon_info LogonHours;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross WORD BadPasswordCount;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross WORD LogonCount;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross WORD CountryCode;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross WORD CodePage;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross BYTE LmPasswordPresent;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross BYTE NtPasswordPresent;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross BYTE PasswordExpired;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross BYTE PrivateDataSensitive;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross};
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross/*
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * SAMPR_USER_INTERNAL4_INFORMATION
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * UserInternal4Information (23)
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define SAMR_SET_USER_INFO_23 23
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct samr_SetUserInfo23 {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross struct samr_SetUserInfo21 info21;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross struct samr_encr_passwd encr_pw;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross};
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross/*
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * SAMPR_USER_INTERNAL5_INFORMATION
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross * UserInternal5Information (24)
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross */
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross#define SAMR_SET_USER_INFO_24 24
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Rossstruct samr_SetUserInfo24 {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross struct samr_encr_passwd encr_pw;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross BYTE password_expired;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion samr_SetUserInfo_u {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross UNION_INFO_ENT(16,samr_SetUserInfo);
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross UNION_INFO_ENT(21,samr_SetUserInfo);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw UNION_INFO_ENT(23,samr_SetUserInfo);
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross UNION_INFO_ENT(24,samr_SetUserInfo);
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross DEFAULT DWORD nothing;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_SetUserInfo_s {
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross WORD info_level;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw WORD switch_value;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw SWITCH(switch_value)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw union samr_SetUserInfo_u ru;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwOPERATION(SAMR_OPNUM_SetUserInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstruct samr_SetUserInfo {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN samr_handle_t user_handle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw IN struct samr_SetUserInfo_s info;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw OUT DWORD status;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The SAMR interface definition.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw ***********************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwINTERFACE(0)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwunion samr_interface {
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh CASE(SAMR_OPNUM_Connect)
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh struct samr_Connect Connect;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_CloseHandle)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_CloseHandle CloseHandle;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_LookupDomain)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_LookupDomain LookupDomain;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_EnumLocalDomains)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_EnumLocalDomain EnumLocalDomain;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_OpenDomain)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_OpenDomain OpenDomain;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_QueryDomainInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_QueryDomainInfo QueryDomainInfo;
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright CASE(SAMR_OPNUM_QueryInfoDomain2)
f96bd5c800e73e351b0b6e4bd7f00b578dad29bbAlan Wright struct samr_QueryInfoDomain2 QueryInfoDomain2;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_LookupNames)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_LookupNames LookupNames;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_OpenUser)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_OpenUser OpenUser;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_DeleteUser)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_DeleteUser DeleteUser;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_QueryUserInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_QueryUserInfo QueryUserInfo;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_QueryUserGroups)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_QueryUserGroups QueryUserGroups;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_OpenGroup)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_OpenGroup OpenGroup;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai CASE(SAMR_OPNUM_AddAliasMember)
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai struct samr_AddAliasMember AddAliasMember;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai CASE(SAMR_OPNUM_DeleteAliasMember)
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai struct samr_DeleteAliasMember DeleteAliasMember;
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai CASE(SAMR_OPNUM_ListAliasMembers)
c586600796766c83eb9485c446886fd9ed2359a9Keyur Desai struct samr_ListAliasMembers ListAliasMembers;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_GetUserPwInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_GetUserPwInfo GetUserPwInfo;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_CreateUser)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_CreateUser CreateUser;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross CASE(SAMR_OPNUM_ChangePasswordUser2)
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross struct samr_ChangePasswordUser2 ChangePasswordUser2;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_GetDomainPwInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_GetDomainPwInfo GetDomainPwInfo;
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh CASE(SAMR_OPNUM_Connect2)
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh struct samr_Connect2 Connect2;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_SetUserInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_SetUserInfo SetUserInfo;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_Connect4)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_Connect4 Connect4;
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh CASE(SAMR_OPNUM_Connect5)
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh struct samr_Connect5 Connect5;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_QueryDispInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_QueryDispInfo QueryDispInfo;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_OpenAlias)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_OpenAlias OpenAlias;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_CreateDomainAlias)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_CreateDomainAlias CreateDomainAlias;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_SetAliasInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_SetAliasInfo SetAliasInfo;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_QueryAliasInfo)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_QueryAliasInfo QueryAliasInfo;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_DeleteDomainAlias)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_DeleteDomainAlias DeleteDomainAlias;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_EnumDomainAliases)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_EnumDomainAliases EnumDomainAliases;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw CASE(SAMR_OPNUM_EnumDomainGroups)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw struct samr_EnumDomainGroups EnumDomainGroups;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw};
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef union samr_interface samr_interface_t;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwEXTERNTYPEINFO(samr_interface)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#endif /* _MLSVC_SAM_NDL_ */