1537 lines
37 KiB
Plaintext
1537 lines
37 KiB
Plaintext
// Full IDL (ms-drsr.idl) has been taken from MSDN:
|
|
// https://msdn.microsoft.com/en-us/library/cc228531.aspx
|
|
// A few modifications have been made though:
|
|
// - We do not use ms-dtyp.idl, because its definitions conflict with Windows header files.
|
|
// Wtypesbase.idl is used instead.
|
|
// - The RPC_UNICODE_STRING has been copied from ms-dtyp.idl.
|
|
// - Custom drsr_imports.idl is used to import the ntdsapi.h file.
|
|
// - Types that are already defined in ntdsapi.h have been dropped from this IDL in order to prevent redefinitions.
|
|
// This IDL file corresponds to Windows Server 2016 TP4. Newer servers will add more calls, so this IDL will have to be updated.
|
|
|
|
import "wtypesbase.idl";
|
|
import "drsr_imports.idl";
|
|
|
|
[
|
|
uuid (e3514235-4b06-11d1-ab04-00c04fc2dcd2), version(4.0),
|
|
pointer_default (unique)
|
|
]
|
|
interface drsuapi
|
|
{
|
|
// TODO: Maybe use "typedef UNICODE_STRING RPC_UNICODE_STRING" instead of RPC_UNICODE_STRING definition.
|
|
typedef struct _RPC_UNICODE_STRING {
|
|
unsigned short Length;
|
|
unsigned short MaximumLength;
|
|
[size_is(MaximumLength / 2), length_is(Length / 2)]
|
|
WCHAR* Buffer;
|
|
} RPC_UNICODE_STRING, *PRPC_UNICODE_STRING;
|
|
|
|
typedef LONGLONG DSTIME;
|
|
|
|
typedef[context_handle] void * DRS_HANDLE;
|
|
|
|
typedef struct {
|
|
char Data[28];
|
|
} NT4SID;
|
|
|
|
typedef struct {
|
|
unsigned long structLen;
|
|
unsigned long SidLen;
|
|
GUID Guid;
|
|
NT4SID Sid;
|
|
unsigned long NameLen;
|
|
[range(0, 10485761)] [size_is(NameLen + 1)] WCHAR StringName[];
|
|
} DSNAME;
|
|
|
|
typedef LONGLONG USN;
|
|
|
|
typedef struct {
|
|
USN usnHighObjUpdate;
|
|
USN usnReserved;
|
|
USN usnHighPropUpdate;
|
|
} USN_VECTOR;
|
|
|
|
typedef struct {
|
|
UUID uuidDsa;
|
|
USN usnHighPropUpdate;
|
|
} UPTODATE_CURSOR_V1;
|
|
|
|
typedef struct {
|
|
DWORD dwVersion;
|
|
DWORD dwReserved1;
|
|
[range(0, 1048576)] DWORD cNumCursors;
|
|
DWORD dwReserved2;
|
|
[size_is(cNumCursors)] UPTODATE_CURSOR_V1 rgCursors[];
|
|
} UPTODATE_VECTOR_V1_EXT;
|
|
|
|
typedef struct {
|
|
[range(0, 10000)] unsigned int length;
|
|
[size_is(length)] BYTE *elements;
|
|
} OID_t;
|
|
|
|
typedef struct {
|
|
unsigned long ndx;
|
|
OID_t prefix;
|
|
} PrefixTableEntry;
|
|
|
|
typedef struct {
|
|
[range(0, 1048576)] DWORD PrefixCount;
|
|
[size_is(PrefixCount)] PrefixTableEntry *pPrefixEntry;
|
|
} SCHEMA_PREFIX_TABLE;
|
|
|
|
typedef ULONG ATTRTYP;
|
|
|
|
typedef struct {
|
|
DWORD dwVersion;
|
|
DWORD dwReserved1;
|
|
[range(1, 1048576)] DWORD cAttrs;
|
|
[size_is(cAttrs)] ATTRTYP rgPartialAttr[];
|
|
} PARTIAL_ATTR_VECTOR_V1_EXT;
|
|
|
|
typedef struct {
|
|
[range(1, 256)] unsigned long mtx_namelen;
|
|
[size_is(mtx_namelen)] char mtx_name[];
|
|
} MTX_ADDR;
|
|
|
|
typedef struct {
|
|
[range(0, 26214400)] ULONG valLen;
|
|
[size_is(valLen)] UCHAR *pVal;
|
|
} ATTRVAL;
|
|
|
|
typedef struct {
|
|
[range(0, 10485760)] ULONG valCount;
|
|
[size_is(valCount)] ATTRVAL *pAVal;
|
|
} ATTRVALBLOCK;
|
|
|
|
typedef struct {
|
|
ATTRTYP attrTyp;
|
|
ATTRVALBLOCK AttrVal;
|
|
} ATTR;
|
|
|
|
typedef struct {
|
|
[range(0, 1048576)] ULONG attrCount;
|
|
[size_is(attrCount)] ATTR *pAttr;
|
|
} ATTRBLOCK;
|
|
|
|
typedef struct {
|
|
DSNAME *pName;
|
|
unsigned long ulFlags;
|
|
ATTRBLOCK AttrBlock;
|
|
} ENTINF;
|
|
|
|
typedef struct {
|
|
DWORD dwVersion;
|
|
DSTIME timeChanged;
|
|
UUID uuidDsaOriginating;
|
|
USN usnOriginating;
|
|
} PROPERTY_META_DATA_EXT;
|
|
|
|
typedef struct {
|
|
[range(0, 1048576)] DWORD cNumProps;
|
|
[size_is(cNumProps)] PROPERTY_META_DATA_EXT rgMetaData[];
|
|
} PROPERTY_META_DATA_EXT_VECTOR;
|
|
|
|
typedef struct REPLENTINFLIST {
|
|
struct REPLENTINFLIST * pNextEntInf;
|
|
ENTINF Entinf;
|
|
BOOL fIsNCPrefix;
|
|
UUID* pParentGuid;
|
|
PROPERTY_META_DATA_EXT_VECTOR* pMetaDataExt;
|
|
} REPLENTINFLIST;
|
|
|
|
typedef struct {
|
|
UUID uuidDsa;
|
|
USN usnHighPropUpdate;
|
|
DSTIME timeLastSyncSuccess;
|
|
} UPTODATE_CURSOR_V2;
|
|
|
|
typedef struct {
|
|
DWORD dwVersion;
|
|
DWORD dwReserved1;
|
|
[range(0, 1048576)] DWORD cNumCursors;
|
|
DWORD dwReserved2;
|
|
[size_is(cNumCursors)] UPTODATE_CURSOR_V2 rgCursors[];
|
|
} UPTODATE_VECTOR_V2_EXT;
|
|
|
|
typedef struct {
|
|
DSTIME timeCreated;
|
|
PROPERTY_META_DATA_EXT MetaData;
|
|
} VALUE_META_DATA_EXT_V1;
|
|
|
|
typedef struct {
|
|
DSTIME timeCreated;
|
|
PROPERTY_META_DATA_EXT MetaData;
|
|
DWORD unused1;
|
|
DWORD unused2;
|
|
DWORD unused3;
|
|
DSTIME timeExpired;
|
|
} VALUE_META_DATA_EXT_V3;
|
|
|
|
typedef struct {
|
|
DSNAME *pObject;
|
|
ATTRTYP attrTyp;
|
|
ATTRVAL Aval;
|
|
BOOL fIsPresent;
|
|
VALUE_META_DATA_EXT_V1 MetaData;
|
|
} REPLVALINF_V1;
|
|
|
|
typedef struct {
|
|
DSNAME *pObject;
|
|
ATTRTYP attrTyp;
|
|
ATTRVAL Aval;
|
|
BOOL fIsPresent;
|
|
VALUE_META_DATA_EXT_V3 MetaData;
|
|
} REPLVALINF_V3;
|
|
|
|
typedef struct {
|
|
UCHAR rgTimes[84];
|
|
} REPLTIMES;
|
|
|
|
typedef struct {
|
|
DWORD IPAddress;
|
|
DWORD NotificationCount;
|
|
DWORD secTimeConnected;
|
|
DWORD Flags;
|
|
DWORD TotalRequests;
|
|
DWORD Reserved1;
|
|
[string, unique] WCHAR *UserName;
|
|
} DS_DOMAIN_CONTROLLER_INFO_FFFFFFFFW;
|
|
|
|
typedef struct ENTINFLIST {
|
|
struct ENTINFLIST *pNextEntInf;
|
|
ENTINF Entinf;
|
|
} ENTINFLIST;
|
|
|
|
typedef struct {
|
|
DWORD dsid;
|
|
DWORD extendedErr;
|
|
DWORD extendedData;
|
|
USHORT problem;
|
|
ATTRTYP type;
|
|
BOOL valReturned;
|
|
ATTRVAL Val;
|
|
} INTFORMPROB_DRS_WIRE_V1;
|
|
|
|
typedef struct _PROBLEMLIST_DRS_WIRE_V1 {
|
|
struct _PROBLEMLIST_DRS_WIRE_V1 *pNextProblem;
|
|
INTFORMPROB_DRS_WIRE_V1 intprob;
|
|
} PROBLEMLIST_DRS_WIRE_V1;
|
|
|
|
typedef struct {
|
|
DSNAME *pObject;
|
|
ULONG count;
|
|
PROBLEMLIST_DRS_WIRE_V1 FirstProblem;
|
|
} ATRERR_DRS_WIRE_V1;
|
|
|
|
typedef struct {
|
|
DWORD dsid;
|
|
DWORD extendedErr;
|
|
DWORD extendedData;
|
|
USHORT problem;
|
|
DSNAME *pMatched;
|
|
} NAMERR_DRS_WIRE_V1;
|
|
|
|
typedef struct {
|
|
UCHAR nameRes;
|
|
UCHAR unusedPad;
|
|
USHORT nextRDN;
|
|
} NAMERESOP_DRS_WIRE_V1;
|
|
|
|
typedef struct _DSA_ADDRESS_LIST_DRS_WIRE_V1 {
|
|
struct _DSA_ADDRESS_LIST_DRS_WIRE_V1 *pNextAddress;
|
|
RPC_UNICODE_STRING *pAddress;
|
|
} DSA_ADDRESS_LIST_DRS_WIRE_V1;
|
|
|
|
typedef struct CONTREF_DRS_WIRE_V1 {
|
|
DSNAME *pTarget;
|
|
NAMERESOP_DRS_WIRE_V1 OpState;
|
|
USHORT aliasRDN;
|
|
USHORT RDNsInternal;
|
|
USHORT refType;
|
|
USHORT count;
|
|
DSA_ADDRESS_LIST_DRS_WIRE_V1 *pDAL;
|
|
struct CONTREF_DRS_WIRE_V1 *pNextContRef;
|
|
BOOL bNewChoice;
|
|
UCHAR choice;
|
|
} CONTREF_DRS_WIRE_V1;
|
|
|
|
typedef struct {
|
|
DWORD dsid;
|
|
DWORD extendedErr;
|
|
DWORD extendedData;
|
|
CONTREF_DRS_WIRE_V1 Refer;
|
|
} REFERR_DRS_WIRE_V1;
|
|
|
|
typedef struct {
|
|
DWORD dsid;
|
|
DWORD extendedErr;
|
|
DWORD extendedData;
|
|
USHORT problem;
|
|
} SECERR_DRS_WIRE_V1;
|
|
|
|
typedef struct {
|
|
DWORD dsid;
|
|
DWORD extendedErr;
|
|
DWORD extendedData;
|
|
USHORT problem;
|
|
} SVCERR_DRS_WIRE_V1;
|
|
|
|
typedef struct {
|
|
DWORD dsid;
|
|
DWORD extendedErr;
|
|
DWORD extendedData;
|
|
USHORT problem;
|
|
} UPDERR_DRS_WIRE_V1;
|
|
|
|
typedef struct {
|
|
DWORD dsid;
|
|
DWORD extendedErr;
|
|
DWORD extendedData;
|
|
USHORT problem;
|
|
} SYSERR_DRS_WIRE_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] ATRERR_DRS_WIRE_V1 AtrErr;
|
|
[case(2)] NAMERR_DRS_WIRE_V1 NamErr;
|
|
[case(3)] REFERR_DRS_WIRE_V1 RefErr;
|
|
[case(4)] SECERR_DRS_WIRE_V1 SecErr;
|
|
[case(5)] SVCERR_DRS_WIRE_V1 SvcErr;
|
|
[case(6)] UPDERR_DRS_WIRE_V1 UpdErr;
|
|
[case(7)] SYSERR_DRS_WIRE_V1 SysErr;
|
|
} DIRERR_DRS_WIRE_V1;
|
|
|
|
typedef struct {
|
|
[range(1, 10000)] DWORD cb;
|
|
[size_is(cb)] BYTE rgb[];
|
|
} DRS_EXTENSIONS;
|
|
|
|
typedef struct {
|
|
UUID uuidDsaObjDest;
|
|
UUID uuidInvocIdSrc;
|
|
[ref] DSNAME *pNC;
|
|
USN_VECTOR usnvecFrom;
|
|
[unique] UPTODATE_VECTOR_V1_EXT *pUpToDateVecDestV1;
|
|
[unique] PARTIAL_ATTR_VECTOR_V1_EXT *pPartialAttrVecDestV1;
|
|
SCHEMA_PREFIX_TABLE PrefixTableDest;
|
|
ULONG ulFlags;
|
|
ULONG cMaxObjects;
|
|
ULONG cMaxBytes;
|
|
ULONG ulExtendedOp;
|
|
} DRS_MSG_GETCHGREQ_V3;
|
|
|
|
typedef struct {
|
|
UUID uuidTransportObj;
|
|
[ref] MTX_ADDR *pmtxReturnAddress;
|
|
DRS_MSG_GETCHGREQ_V3 V3;
|
|
} DRS_MSG_GETCHGREQ_V4;
|
|
|
|
typedef struct {
|
|
UUID uuidTransportObj;
|
|
[ref] MTX_ADDR *pmtxReturnAddress;
|
|
DRS_MSG_GETCHGREQ_V3 V3;
|
|
[unique] PARTIAL_ATTR_VECTOR_V1_EXT *pPartialAttrSet;
|
|
[unique] PARTIAL_ATTR_VECTOR_V1_EXT *pPartialAttrSetEx;
|
|
SCHEMA_PREFIX_TABLE PrefixTableDest;
|
|
} DRS_MSG_GETCHGREQ_V7;
|
|
|
|
typedef struct {
|
|
UUID uuidDsaObjSrc;
|
|
UUID uuidInvocIdSrc;
|
|
[unique] DSNAME *pNC;
|
|
USN_VECTOR usnvecFrom;
|
|
USN_VECTOR usnvecTo;
|
|
[unique] UPTODATE_VECTOR_V1_EXT *pUpToDateVecSrcV1;
|
|
SCHEMA_PREFIX_TABLE PrefixTableSrc;
|
|
ULONG ulExtendedRet;
|
|
ULONG cNumObjects;
|
|
ULONG cNumBytes;
|
|
[unique] REPLENTINFLIST* pObjects;
|
|
BOOL fMoreData;
|
|
} DRS_MSG_GETCHGREPLY_V1;
|
|
|
|
typedef struct {
|
|
UUID uuidDsaObjSrc;
|
|
UUID uuidInvocIdSrc;
|
|
[unique] DSNAME *pNC;
|
|
USN_VECTOR usnvecFrom;
|
|
USN_VECTOR usnvecTo;
|
|
[unique] UPTODATE_VECTOR_V2_EXT *pUpToDateVecSrc;
|
|
SCHEMA_PREFIX_TABLE PrefixTableSrc;
|
|
ULONG ulExtendedRet;
|
|
ULONG cNumObjects;
|
|
ULONG cNumBytes;
|
|
[unique] REPLENTINFLIST *pObjects;
|
|
BOOL fMoreData;
|
|
ULONG cNumNcSizeObjects;
|
|
ULONG cNumNcSizeValues;
|
|
[range(0, 1048576)] DWORD cNumValues;
|
|
[size_is(cNumValues)] REPLVALINF_V1 *rgValues;
|
|
DWORD dwDRSError;
|
|
} DRS_MSG_GETCHGREPLY_V6;
|
|
|
|
typedef struct {
|
|
UUID uuidDsaObjSrc;
|
|
UUID uuidInvocIdSrc;
|
|
[unique] DSNAME *pNC;
|
|
USN_VECTOR usnvecFrom;
|
|
USN_VECTOR usnvecTo;
|
|
[unique] UPTODATE_VECTOR_V2_EXT *pUpToDateVecSrc;
|
|
SCHEMA_PREFIX_TABLE PrefixTableSrc;
|
|
ULONG ulExtendedRet;
|
|
ULONG cNumObjects;
|
|
ULONG cNumBytes;
|
|
[unique] REPLENTINFLIST *pObjects;
|
|
BOOL fMoreData;
|
|
ULONG cNumNcSizeObjects;
|
|
ULONG cNumNcSizeValues;
|
|
[range(0, 1048576)] DWORD cNumValues;
|
|
[size_is(cNumValues)] REPLVALINF_V3 *rgValues;
|
|
DWORD dwDRSError;
|
|
} DRS_MSG_GETCHGREPLY_V9;
|
|
|
|
typedef struct {
|
|
DWORD cbUncompressedSize;
|
|
DWORD cbCompressedSize;
|
|
[size_is(cbCompressedSize)] BYTE *pbCompressedData;
|
|
} DRS_COMPRESSED_BLOB;
|
|
|
|
typedef struct {
|
|
UUID uuidDsaObjDest;
|
|
UUID uuidInvocIdSrc;
|
|
[ref] DSNAME *pNC;
|
|
USN_VECTOR usnvecFrom;
|
|
[unique] UPTODATE_VECTOR_V1_EXT *pUpToDateVecDestV1;
|
|
ULONG ulFlags;
|
|
ULONG cMaxObjects;
|
|
ULONG cMaxBytes;
|
|
ULONG ulExtendedOp;
|
|
ULARGE_INTEGER liFsmoInfo;
|
|
} DRS_MSG_GETCHGREQ_V5;
|
|
|
|
typedef struct {
|
|
UUID uuidDsaObjDest;
|
|
UUID uuidInvocIdSrc;
|
|
[ref] DSNAME *pNC;
|
|
USN_VECTOR usnvecFrom;
|
|
[unique] UPTODATE_VECTOR_V1_EXT *pUpToDateVecDest;
|
|
ULONG ulFlags;
|
|
ULONG cMaxObjects;
|
|
ULONG cMaxBytes;
|
|
ULONG ulExtendedOp;
|
|
ULARGE_INTEGER liFsmoInfo;
|
|
[unique] PARTIAL_ATTR_VECTOR_V1_EXT *pPartialAttrSet;
|
|
[unique] PARTIAL_ATTR_VECTOR_V1_EXT *pPartialAttrSetEx;
|
|
SCHEMA_PREFIX_TABLE PrefixTableDest;
|
|
} DRS_MSG_GETCHGREQ_V8;
|
|
|
|
typedef struct {
|
|
UUID uuidDsaObjDest;
|
|
UUID uuidInvocIdSrc;
|
|
[ref] DSNAME *pNC;
|
|
USN_VECTOR usnvecFrom;
|
|
[unique] UPTODATE_VECTOR_V1_EXT *pUpToDateVecDest;
|
|
ULONG ulFlags;
|
|
ULONG cMaxObjects;
|
|
ULONG cMaxBytes;
|
|
ULONG ulExtendedOp;
|
|
ULARGE_INTEGER liFsmoInfo;
|
|
[unique] PARTIAL_ATTR_VECTOR_V1_EXT *pPartialAttrSet;
|
|
[unique] PARTIAL_ATTR_VECTOR_V1_EXT *pPartialAttrSetEx;
|
|
SCHEMA_PREFIX_TABLE PrefixTableDest;
|
|
ULONG ulMoreFlags;
|
|
} DRS_MSG_GETCHGREQ_V10;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(4)] DRS_MSG_GETCHGREQ_V4 V4;
|
|
[case(5)] DRS_MSG_GETCHGREQ_V5 V5;
|
|
[case(7)] DRS_MSG_GETCHGREQ_V7 V7;
|
|
[case(8)] DRS_MSG_GETCHGREQ_V8 V8;
|
|
[case(10)] DRS_MSG_GETCHGREQ_V10 V10;
|
|
} DRS_MSG_GETCHGREQ;
|
|
|
|
typedef struct {
|
|
DRS_COMPRESSED_BLOB CompressedV1;
|
|
} DRS_MSG_GETCHGREPLY_V2;
|
|
|
|
typedef enum {
|
|
DRS_COMP_ALG_NONE = 0,
|
|
DRS_COMP_ALG_UNUSED = 1,
|
|
DRS_COMP_ALG_MSZIP = 2,
|
|
DRS_COMP_ALG_WIN2K3 = 3
|
|
} DRS_COMP_ALG_TYPE;
|
|
|
|
typedef struct {
|
|
DWORD dwCompressedVersion;
|
|
DRS_COMP_ALG_TYPE CompressionAlg;
|
|
DRS_COMPRESSED_BLOB CompressedAny;
|
|
} DRS_MSG_GETCHGREPLY_V7;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_GETCHGREPLY_V1 V1;
|
|
[case(2)] DRS_MSG_GETCHGREPLY_V2 V2;
|
|
[case(6)] DRS_MSG_GETCHGREPLY_V6 V6;
|
|
[case(7)] DRS_MSG_GETCHGREPLY_V7 V7;
|
|
[case(9)] DRS_MSG_GETCHGREPLY_V9 V9;
|
|
} DRS_MSG_GETCHGREPLY;
|
|
|
|
typedef struct {
|
|
[ref] DSNAME *pNC;
|
|
UUID uuidDsaSrc;
|
|
[unique] [string] char *pszDsaSrc;
|
|
ULONG ulOptions;
|
|
} DRS_MSG_REPSYNC_V1;
|
|
|
|
typedef[switch_type(DWORD)] union
|
|
{
|
|
[case(1)] DRS_MSG_REPSYNC_V1 V1;
|
|
} DRS_MSG_REPSYNC;
|
|
|
|
typedef struct {
|
|
[ref] DSNAME *pNC;
|
|
[ref] [string] char *pszDsaDest;
|
|
UUID uuidDsaObjDest;
|
|
ULONG ulOptions;
|
|
} DRS_MSG_UPDREFS_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_UPDREFS_V1 V1;
|
|
} DRS_MSG_UPDREFS;
|
|
|
|
typedef struct {
|
|
[ref] DSNAME *pNC;
|
|
[ref] [string] char *pszDsaSrc;
|
|
REPLTIMES rtSchedule;
|
|
ULONG ulOptions;
|
|
} DRS_MSG_REPADD_V1;
|
|
|
|
typedef struct {
|
|
[ref] DSNAME *pNC;
|
|
[unique] DSNAME *pSourceDsaDN;
|
|
[unique] DSNAME *pTransportDN;
|
|
[ref] [string] char *pszSourceDsaAddress;
|
|
REPLTIMES rtSchedule;
|
|
ULONG ulOptions;
|
|
} DRS_MSG_REPADD_V2;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_REPADD_V1 V1;
|
|
[case(2)] DRS_MSG_REPADD_V2 V2;
|
|
} DRS_MSG_REPADD;
|
|
|
|
typedef struct {
|
|
[ref] DSNAME *pNC;
|
|
[string] char *pszDsaSrc;
|
|
ULONG ulOptions;
|
|
} DRS_MSG_REPDEL_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_REPDEL_V1 V1;
|
|
} DRS_MSG_REPDEL;
|
|
|
|
typedef struct {
|
|
[ref] DSNAME *pNC;
|
|
UUID uuidSourceDRA;
|
|
[unique, string] char *pszSourceDRA;
|
|
REPLTIMES rtSchedule;
|
|
ULONG ulReplicaFlags;
|
|
ULONG ulModifyFields;
|
|
ULONG ulOptions;
|
|
} DRS_MSG_REPMOD_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_REPMOD_V1 V1;
|
|
} DRS_MSG_REPMOD;
|
|
|
|
typedef struct {
|
|
DWORD dwFlags;
|
|
[range(1, 10000)] DWORD cNames;
|
|
[size_is(cNames)] DSNAME **rpNames;
|
|
ATTRBLOCK RequiredAttrs;
|
|
SCHEMA_PREFIX_TABLE PrefixTable;
|
|
} DRS_MSG_VERIFYREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_VERIFYREQ_V1 V1;
|
|
} DRS_MSG_VERIFYREQ;
|
|
|
|
typedef struct {
|
|
DWORD error;
|
|
[range(0, 10000)] DWORD cNames;
|
|
[size_is(cNames)] ENTINF *rpEntInf;
|
|
SCHEMA_PREFIX_TABLE PrefixTable;
|
|
} DRS_MSG_VERIFYREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_VERIFYREPLY_V1 V1;
|
|
} DRS_MSG_VERIFYREPLY;
|
|
|
|
typedef enum {
|
|
RevMembGetGroupsForUser = 1,
|
|
RevMembGetAliasMembership,
|
|
RevMembGetAccountGroups,
|
|
RevMembGetResourceGroups,
|
|
RevMembGetUniversalGroups,
|
|
GroupMembersTransitive,
|
|
RevMembGlobalGroupsNonTransitive
|
|
} REVERSE_MEMBERSHIP_OPERATION_TYPE;
|
|
|
|
typedef struct {
|
|
[range(1, 10000)] ULONG cDsNames;
|
|
[size_is(cDsNames, )] DSNAME **ppDsNames;
|
|
DWORD dwFlags;
|
|
[range(1, 7)] REVERSE_MEMBERSHIP_OPERATION_TYPE OperationType;
|
|
DSNAME *pLimitingDomain;
|
|
} DRS_MSG_REVMEMB_REQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_REVMEMB_REQ_V1 V1;
|
|
} DRS_MSG_REVMEMB_REQ;
|
|
|
|
typedef struct {
|
|
ULONG errCode;
|
|
[range(0, 10000)] ULONG cDsNames;
|
|
[range(0, 10000)] ULONG cSidHistory;
|
|
[size_is(cDsNames, )] DSNAME **ppDsNames;
|
|
[size_is(cDsNames)] DWORD *pAttributes;
|
|
[size_is(cSidHistory, )] NT4SID **ppSidHistory;
|
|
} DRS_MSG_REVMEMB_REPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_REVMEMB_REPLY_V1 V1;
|
|
} DRS_MSG_REVMEMB_REPLY;
|
|
|
|
typedef struct {
|
|
char *pSourceDSA;
|
|
ENTINF *pObject;
|
|
UUID *pParentUUID;
|
|
SCHEMA_PREFIX_TABLE PrefixTable;
|
|
ULONG ulFlags;
|
|
} DRS_MSG_MOVEREQ_V1;
|
|
|
|
typedef struct {
|
|
[range(0, 10000)] unsigned long cbBuffer;
|
|
unsigned long BufferType;
|
|
[size_is(cbBuffer)] BYTE *pvBuffer;
|
|
} DRS_SecBuffer;
|
|
|
|
typedef struct {
|
|
unsigned long ulVersion;
|
|
[range(0, 10000)] unsigned long cBuffers;
|
|
[size_is(cBuffers)] DRS_SecBuffer *Buffers;
|
|
} DRS_SecBufferDesc;
|
|
|
|
typedef struct {
|
|
DSNAME *pSrcDSA;
|
|
ENTINF *pSrcObject;
|
|
DSNAME *pDstName;
|
|
DSNAME *pExpectedTargetNC;
|
|
DRS_SecBufferDesc *pClientCreds;
|
|
SCHEMA_PREFIX_TABLE PrefixTable;
|
|
ULONG ulFlags;
|
|
} DRS_MSG_MOVEREQ_V2;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_MOVEREQ_V1 V1;
|
|
[case(2)] DRS_MSG_MOVEREQ_V2 V2;
|
|
} DRS_MSG_MOVEREQ;
|
|
|
|
typedef struct {
|
|
ENTINF **ppResult;
|
|
SCHEMA_PREFIX_TABLE PrefixTable;
|
|
ULONG *pError;
|
|
} DRS_MSG_MOVEREPLY_V1;
|
|
|
|
typedef struct {
|
|
ULONG win32Error;
|
|
[unique] DSNAME *pAddedName;
|
|
} DRS_MSG_MOVEREPLY_V2;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_MOVEREPLY_V1 V1;
|
|
[case(2)] DRS_MSG_MOVEREPLY_V2 V2;
|
|
} DRS_MSG_MOVEREPLY;
|
|
|
|
typedef struct {
|
|
ULONG CodePage;
|
|
ULONG LocaleId;
|
|
DWORD dwFlags;
|
|
DWORD formatOffered;
|
|
DWORD formatDesired;
|
|
[range(1, 10000)] DWORD cNames;
|
|
[string, size_is(cNames)] WCHAR **rpNames;
|
|
} DRS_MSG_CRACKREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_CRACKREQ_V1 V1;
|
|
} DRS_MSG_CRACKREQ;
|
|
|
|
typedef struct {
|
|
DS_NAME_RESULTW *pResult;
|
|
} DRS_MSG_CRACKREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_CRACKREPLY_V1 V1;
|
|
} DRS_MSG_CRACKREPLY;
|
|
|
|
typedef struct {
|
|
DWORD dwFlags;
|
|
DWORD PreferredMaximumLength;
|
|
[range(0, 10485760)] DWORD cbRestart;
|
|
[size_is(cbRestart)] BYTE *pRestart;
|
|
} DRS_MSG_NT4_CHGLOG_REQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_NT4_CHGLOG_REQ_V1 V1;
|
|
} DRS_MSG_NT4_CHGLOG_REQ;
|
|
|
|
typedef struct {
|
|
LARGE_INTEGER SamSerialNumber;
|
|
LARGE_INTEGER SamCreationTime;
|
|
LARGE_INTEGER BuiltinSerialNumber;
|
|
LARGE_INTEGER BuiltinCreationTime;
|
|
LARGE_INTEGER LsaSerialNumber;
|
|
LARGE_INTEGER LsaCreationTime;
|
|
} NT4_REPLICATION_STATE;
|
|
|
|
typedef struct {
|
|
[range(0, 10485760)] DWORD cbRestart;
|
|
[range(0, 10485760)] DWORD cbLog;
|
|
NT4_REPLICATION_STATE ReplicationState;
|
|
DWORD ActualNtStatus;
|
|
[size_is(cbRestart)] BYTE *pRestart;
|
|
[size_is(cbLog)] BYTE *pLog;
|
|
} DRS_MSG_NT4_CHGLOG_REPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_NT4_CHGLOG_REPLY_V1 V1;
|
|
} DRS_MSG_NT4_CHGLOG_REPLY;
|
|
|
|
typedef struct {
|
|
DWORD operation;
|
|
DWORD flags;
|
|
[string] const WCHAR *pwszAccount;
|
|
[range(0, 10000)] DWORD cSPN;
|
|
[string, size_is(cSPN)] const WCHAR **rpwszSPN;
|
|
} DRS_MSG_SPNREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_SPNREQ_V1 V1;
|
|
} DRS_MSG_SPNREQ;
|
|
|
|
typedef struct {
|
|
DWORD retVal;
|
|
} DRS_MSG_SPNREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_SPNREPLY_V1 V1;
|
|
} DRS_MSG_SPNREPLY;
|
|
|
|
typedef struct {
|
|
[string] LPWSTR ServerDN;
|
|
[string] LPWSTR DomainDN;
|
|
BOOL fCommit;
|
|
} DRS_MSG_RMSVRREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_RMSVRREQ_V1 V1;
|
|
} DRS_MSG_RMSVRREQ;
|
|
|
|
typedef struct {
|
|
BOOL fLastDcInDomain;
|
|
} DRS_MSG_RMSVRREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_RMSVRREPLY_V1 V1;
|
|
} DRS_MSG_RMSVRREPLY;
|
|
|
|
typedef struct {
|
|
[string] LPWSTR DomainDN;
|
|
} DRS_MSG_RMDMNREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_RMDMNREQ_V1 V1;
|
|
} DRS_MSG_RMDMNREQ;
|
|
|
|
typedef struct {
|
|
DWORD Reserved;
|
|
} DRS_MSG_RMDMNREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_RMDMNREPLY_V1 V1;
|
|
} DRS_MSG_RMDMNREPLY;
|
|
|
|
typedef struct {
|
|
[string] WCHAR *Domain;
|
|
DWORD InfoLevel;
|
|
} DRS_MSG_DCINFOREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_DCINFOREQ_V1 V1;
|
|
} DRS_MSG_DCINFOREQ, *PDRS_MSG_DCINFOREQ;
|
|
|
|
typedef struct {
|
|
[range(0, 10000)] DWORD cItems;
|
|
[size_is(cItems)] DS_DOMAIN_CONTROLLER_INFO_1W *rItems;
|
|
} DRS_MSG_DCINFOREPLY_V1;
|
|
|
|
typedef struct {
|
|
[range(0, 10000)] DWORD cItems;
|
|
[size_is(cItems)] DS_DOMAIN_CONTROLLER_INFO_2W *rItems;
|
|
} DRS_MSG_DCINFOREPLY_V2;
|
|
|
|
typedef struct {
|
|
[range(0, 10000)] DWORD cItems;
|
|
[size_is(cItems)] DS_DOMAIN_CONTROLLER_INFO_3W* rItems;
|
|
} DRS_MSG_DCINFOREPLY_V3;
|
|
|
|
typedef struct {
|
|
[range(0, 10000)] DWORD cItems;
|
|
[size_is(cItems)] DS_DOMAIN_CONTROLLER_INFO_FFFFFFFFW *rItems;
|
|
} DRS_MSG_DCINFOREPLY_VFFFFFFFF;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_DCINFOREPLY_V1 V1;
|
|
[case(2)] DRS_MSG_DCINFOREPLY_V2 V2;
|
|
[case(3)] DRS_MSG_DCINFOREPLY_V3 V3;
|
|
[case(0xFFFFFFFF)] DRS_MSG_DCINFOREPLY_VFFFFFFFF VFFFFFFFF;
|
|
} DRS_MSG_DCINFOREPLY;
|
|
|
|
typedef struct {
|
|
[ref] DSNAME *pObject;
|
|
ATTRBLOCK AttrBlock;
|
|
} DRS_MSG_ADDENTRYREQ_V1;
|
|
|
|
typedef struct {
|
|
ENTINFLIST EntInfList;
|
|
} DRS_MSG_ADDENTRYREQ_V2;
|
|
|
|
typedef struct {
|
|
ENTINFLIST EntInfList;
|
|
DRS_SecBufferDesc *pClientCreds;
|
|
} DRS_MSG_ADDENTRYREQ_V3;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_ADDENTRYREQ_V1 V1;
|
|
[case(2)] DRS_MSG_ADDENTRYREQ_V2 V2;
|
|
[case(3)] DRS_MSG_ADDENTRYREQ_V3 V3;
|
|
} DRS_MSG_ADDENTRYREQ;
|
|
|
|
typedef struct {
|
|
GUID Guid;
|
|
NT4SID Sid;
|
|
DWORD errCode;
|
|
DWORD dsid;
|
|
DWORD extendedErr;
|
|
DWORD extendedData;
|
|
USHORT problem;
|
|
} DRS_MSG_ADDENTRYREPLY_V1;
|
|
|
|
typedef struct {
|
|
GUID objGuid;
|
|
NT4SID objSid;
|
|
} ADDENTRY_REPLY_INFO;
|
|
|
|
typedef struct {
|
|
[unique] DSNAME *pErrorObject;
|
|
DWORD errCode;
|
|
DWORD dsid;
|
|
DWORD extendedErr;
|
|
DWORD extendedData;
|
|
USHORT problem;
|
|
[range(0, 10000)] ULONG cObjectsAdded;
|
|
[size_is(cObjectsAdded)] ADDENTRY_REPLY_INFO *infoList;
|
|
} DRS_MSG_ADDENTRYREPLY_V2;
|
|
|
|
typedef struct {
|
|
DWORD dwRepError;
|
|
DWORD errCode;
|
|
[switch_is(errCode)] DIRERR_DRS_WIRE_V1 *pErrInfo;
|
|
} DRS_ERROR_DATA_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_ERROR_DATA_V1 V1;
|
|
} DRS_ERROR_DATA;
|
|
|
|
typedef struct {
|
|
DSNAME *pdsErrObject;
|
|
DWORD dwErrVer;
|
|
[switch_is(dwErrVer)] DRS_ERROR_DATA *pErrData;
|
|
[range(0, 10000)] ULONG cObjectsAdded;
|
|
[size_is(cObjectsAdded)] ADDENTRY_REPLY_INFO *infoList;
|
|
} DRS_MSG_ADDENTRYREPLY_V3;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_ADDENTRYREPLY_V1 V1;
|
|
[case(2)] DRS_MSG_ADDENTRYREPLY_V2 V2;
|
|
[case(3)] DRS_MSG_ADDENTRYREPLY_V3 V3;
|
|
} DRS_MSG_ADDENTRYREPLY;
|
|
|
|
typedef struct {
|
|
DWORD dwTaskID;
|
|
DWORD dwFlags;
|
|
} DRS_MSG_KCC_EXECUTE_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_KCC_EXECUTE_V1 V1;
|
|
} DRS_MSG_KCC_EXECUTE;
|
|
|
|
typedef struct {
|
|
ULONGLONG hCtx;
|
|
LONG lReferenceCount;
|
|
BOOL fIsBound;
|
|
UUID uuidClient;
|
|
DSTIME timeLastUsed;
|
|
ULONG IPAddr;
|
|
int pid;
|
|
} DS_REPL_CLIENT_CONTEXT;
|
|
|
|
typedef struct {
|
|
[range(0, 10000)] DWORD cNumContexts;
|
|
DWORD dwReserved;
|
|
[size_is(cNumContexts)] DS_REPL_CLIENT_CONTEXT rgContext[];
|
|
} DS_REPL_CLIENT_CONTEXTS;
|
|
|
|
typedef struct {
|
|
[string] LPWSTR pszServerName;
|
|
BOOL fIsHandleBound;
|
|
BOOL fIsHandleFromCache;
|
|
BOOL fIsHandleInCache;
|
|
DWORD dwThreadId;
|
|
DWORD dwBindingTimeoutMins;
|
|
DSTIME dstimeCreated;
|
|
DWORD dwCallType;
|
|
} DS_REPL_SERVER_OUTGOING_CALL;
|
|
|
|
typedef struct {
|
|
[range(0, 256)] DWORD cNumCalls;
|
|
DWORD dwReserved;
|
|
[size_is(cNumCalls)] DS_REPL_SERVER_OUTGOING_CALL rgCall[];
|
|
} DS_REPL_SERVER_OUTGOING_CALLS;
|
|
|
|
typedef struct {
|
|
DWORD InfoType;
|
|
[string] LPWSTR pszObjectDN;
|
|
UUID uuidSourceDsaObjGuid;
|
|
} DRS_MSG_GETREPLINFO_REQ_V1;
|
|
|
|
typedef struct {
|
|
DWORD InfoType;
|
|
[string] LPWSTR pszObjectDN;
|
|
UUID uuidSourceDsaObjGuid;
|
|
DWORD ulFlags;
|
|
[string] LPWSTR pszAttributeName;
|
|
[string] LPWSTR pszValueDN;
|
|
DWORD dwEnumerationContext;
|
|
} DRS_MSG_GETREPLINFO_REQ_V2;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_GETREPLINFO_REQ_V1 V1;
|
|
[case(2)] DRS_MSG_GETREPLINFO_REQ_V2 V2;
|
|
} DRS_MSG_GETREPLINFO_REQ;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(0)] DS_REPL_NEIGHBORSW *pNeighbors;
|
|
[case(1)] DS_REPL_CURSORS *pCursors;
|
|
[case(2)] DS_REPL_OBJ_META_DATA *pObjMetaData;
|
|
[case(3)] DS_REPL_KCC_DSA_FAILURESW *pConnectFailures;
|
|
[case(4)] DS_REPL_KCC_DSA_FAILURESW *pLinkFailures;
|
|
[case(5)] DS_REPL_PENDING_OPSW *pPendingOps;
|
|
[case(6)] DS_REPL_ATTR_VALUE_META_DATA *pAttrValueMetaData;
|
|
[case(7)] DS_REPL_CURSORS_2 *pCursors2;
|
|
[case(8)] DS_REPL_CURSORS_3W *pCursors3;
|
|
[case(9)] DS_REPL_OBJ_META_DATA_2 *pObjMetaData2;
|
|
[case(10)] DS_REPL_ATTR_VALUE_META_DATA_2 *pAttrValueMetaData2;
|
|
[case(0xFFFFFFFA)]
|
|
DS_REPL_SERVER_OUTGOING_CALLS *pServerOutgoingCalls;
|
|
[case(0xFFFFFFFB)] UPTODATE_VECTOR_V1_EXT *pUpToDateVec;
|
|
[case(0xFFFFFFFC)] DS_REPL_CLIENT_CONTEXTS *pClientContexts;
|
|
[case(0xFFFFFFFE)] DS_REPL_NEIGHBORSW *pRepsTo;
|
|
} DRS_MSG_GETREPLINFO_REPLY;
|
|
|
|
typedef struct {
|
|
DWORD Flags;
|
|
[string] WCHAR *SrcDomain;
|
|
[string] WCHAR *SrcPrincipal;
|
|
[string, ptr] WCHAR *SrcDomainController;
|
|
[range(0, 256)] DWORD SrcCredsUserLength;
|
|
[size_is(SrcCredsUserLength)] WCHAR *SrcCredsUser;
|
|
[range(0, 256)] DWORD SrcCredsDomainLength;
|
|
[size_is(SrcCredsDomainLength)] WCHAR *SrcCredsDomain;
|
|
[range(0, 256)] DWORD SrcCredsPasswordLength;
|
|
[size_is(SrcCredsPasswordLength)] WCHAR *SrcCredsPassword;
|
|
[string] WCHAR *DstDomain;
|
|
[string] WCHAR *DstPrincipal;
|
|
} DRS_MSG_ADDSIDREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_ADDSIDREQ_V1 V1;
|
|
} DRS_MSG_ADDSIDREQ;
|
|
|
|
typedef struct {
|
|
DWORD dwWin32Error;
|
|
} DRS_MSG_ADDSIDREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_ADDSIDREPLY_V1 V1;
|
|
} DRS_MSG_ADDSIDREPLY;
|
|
|
|
typedef struct {
|
|
[range(1, 10000)] ULONG Count;
|
|
[size_is(Count)] DRS_MSG_REVMEMB_REQ_V1 *Requests;
|
|
} DRS_MSG_GETMEMBERSHIPS2_REQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_GETMEMBERSHIPS2_REQ_V1 V1;
|
|
} DRS_MSG_GETMEMBERSHIPS2_REQ;
|
|
|
|
typedef struct {
|
|
[range(0, 10000)] ULONG Count;
|
|
[size_is(Count)] DRS_MSG_REVMEMB_REPLY_V1 *Replies;
|
|
} DRS_MSG_GETMEMBERSHIPS2_REPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_GETMEMBERSHIPS2_REPLY_V1 V1;
|
|
} DRS_MSG_GETMEMBERSHIPS2_REPLY;
|
|
|
|
typedef struct {
|
|
[ref] DSNAME *pNC;
|
|
UUID uuidDsaSrc;
|
|
ULONG ulOptions;
|
|
} DRS_MSG_REPVERIFYOBJ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_REPVERIFYOBJ_V1 V1;
|
|
} DRS_MSG_REPVERIFYOBJ;
|
|
|
|
typedef struct {
|
|
UUID guidStart;
|
|
DWORD cGuids;
|
|
DSNAME *pNC;
|
|
UPTODATE_VECTOR_V1_EXT *pUpToDateVecCommonV1;
|
|
UCHAR Md5Digest[16];
|
|
} DRS_MSG_EXISTREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_EXISTREQ_V1 V1;
|
|
} DRS_MSG_EXISTREQ;
|
|
|
|
typedef struct {
|
|
DWORD dwStatusFlags;
|
|
[range(0, 10485760)] DWORD cNumGuids;
|
|
[size_is(cNumGuids)] UUID *rgGuids;
|
|
} DRS_MSG_EXISTREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_EXISTREPLY_V1 V1;
|
|
} DRS_MSG_EXISTREPLY;
|
|
|
|
typedef struct {
|
|
[string] const WCHAR *pwszFromSite;
|
|
[range(1, 10000)] DWORD cToSites;
|
|
[string, size_is(cToSites)] WCHAR **rgszToSites;
|
|
DWORD dwFlags;
|
|
} DRS_MSG_QUERYSITESREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_QUERYSITESREQ_V1 V1;
|
|
} DRS_MSG_QUERYSITESREQ;
|
|
|
|
typedef struct {
|
|
DWORD dwErrorCode;
|
|
DWORD dwCost;
|
|
} DRS_MSG_QUERYSITESREPLYELEMENT_V1;
|
|
|
|
typedef struct {
|
|
[range(0, 10000)] DWORD cToSites;
|
|
[size_is(cToSites)] DRS_MSG_QUERYSITESREPLYELEMENT_V1 *rgCostInfo;
|
|
DWORD dwFlags;
|
|
} DRS_MSG_QUERYSITESREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_QUERYSITESREPLY_V1 V1;
|
|
} DRS_MSG_QUERYSITESREPLY;
|
|
|
|
typedef struct {
|
|
DWORD dwReserved;
|
|
} DRS_MSG_INIT_DEMOTIONREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_INIT_DEMOTIONREQ_V1 V1;
|
|
} DRS_MSG_INIT_DEMOTIONREQ;
|
|
|
|
typedef struct {
|
|
DWORD dwOpError;
|
|
} DRS_MSG_INIT_DEMOTIONREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_INIT_DEMOTIONREPLY_V1 V1;
|
|
} DRS_MSG_INIT_DEMOTIONREPLY;
|
|
|
|
typedef struct {
|
|
DWORD dwFlags;
|
|
UUID uuidHelperDest;
|
|
[ref] DSNAME* pNC;
|
|
} DRS_MSG_REPLICA_DEMOTIONREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_REPLICA_DEMOTIONREQ_V1 V1;
|
|
} DRS_MSG_REPLICA_DEMOTIONREQ;
|
|
|
|
typedef struct {
|
|
DWORD dwOpError;
|
|
} DRS_MSG_REPLICA_DEMOTIONREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_REPLICA_DEMOTIONREPLY_V1 V1;
|
|
} DRS_MSG_REPLICA_DEMOTIONREPLY;
|
|
|
|
typedef struct {
|
|
DWORD dwOperations;
|
|
UUID uuidHelperDest;
|
|
[string] LPWSTR szScriptBase;
|
|
} DRS_MSG_FINISH_DEMOTIONREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_FINISH_DEMOTIONREQ_V1 V1;
|
|
} DRS_MSG_FINISH_DEMOTIONREQ;
|
|
|
|
typedef struct {
|
|
DWORD dwOperationsDone;
|
|
DWORD dwOpFailed;
|
|
DWORD dwOpError;
|
|
} DRS_MSG_FINISH_DEMOTIONREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_FINISH_DEMOTIONREPLY_V1 V1;
|
|
} DRS_MSG_FINISH_DEMOTIONREPLY;
|
|
|
|
typedef struct {
|
|
[string] const WCHAR *pwszCloneDCName;
|
|
[string] const WCHAR *pwszSite;
|
|
} DRS_MSG_ADDCLONEDCREQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_ADDCLONEDCREQ_V1 V1;
|
|
} DRS_MSG_ADDCLONEDCREQ;
|
|
|
|
typedef struct {
|
|
[string] WCHAR *pwszCloneDCName;
|
|
[string] WCHAR *pwszSite;
|
|
[range(0, 1024)] DWORD cPasswordLength;
|
|
[size_is(cPasswordLength)] WCHAR *pwsNewDCAccountPassword;
|
|
} DRS_MSG_ADDCLONEDCREPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_ADDCLONEDCREPLY_V1 V1;
|
|
} DRS_MSG_ADDCLONEDCREPLY;
|
|
|
|
typedef struct _DRS_MSG_WRITENGCKEYREQ_V1{
|
|
[string] const WCHAR* pwszAccount;
|
|
[range(0, 0xFFFF)] DWORD cNgcKey;
|
|
[size_is(cNgcKey)] UCHAR * pNgcKey;
|
|
} DRS_MSG_WRITENGCKEYREQ_V1;
|
|
|
|
typedef
|
|
[switch_type(DWORD)]
|
|
union {
|
|
[case(1)]
|
|
DRS_MSG_WRITENGCKEYREQ_V1 V1;
|
|
} DRS_MSG_WRITENGCKEYREQ;
|
|
|
|
typedef struct _DRS_MSG_WRITENGCKEYREPLY_V1{
|
|
DWORD retVal;
|
|
} DRS_MSG_WRITENGCKEYREPLY_V1;
|
|
|
|
typedef
|
|
[switch_type(DWORD)]
|
|
union {
|
|
[case(1)]
|
|
DRS_MSG_WRITENGCKEYREPLY_V1 V1;
|
|
} DRS_MSG_WRITENGCKEYREPLY;
|
|
|
|
typedef struct _DRS_MSG_READNGCKEYREQ_V1{
|
|
[string] const WCHAR* pwszAccount;
|
|
} DRS_MSG_READNGCKEYREQ_V1;
|
|
|
|
typedef
|
|
[switch_type(DWORD)]
|
|
union {
|
|
[case(1)]
|
|
DRS_MSG_READNGCKEYREQ_V1 V1;
|
|
} DRS_MSG_READNGCKEYREQ;
|
|
|
|
typedef struct _DRS_MSG_READNGCKEYREPLY_V1{
|
|
DWORD retVal;
|
|
[range(0, 0xFFFF)] DWORD cNgcKey;
|
|
[size_is(cNgcKey)] UCHAR * pNgcKey;
|
|
} DRS_MSG_READNGCKEYREPLY_V1;
|
|
|
|
typedef
|
|
[switch_type(DWORD)]
|
|
union {
|
|
[case(1)]
|
|
DRS_MSG_READNGCKEYREPLY_V1 V1;
|
|
} DRS_MSG_READNGCKEYREPLY;
|
|
|
|
// opnum 0
|
|
ULONG
|
|
IDL_DRSBind(
|
|
[in] handle_t rpc_handle,
|
|
[in, unique] UUID *puuidClientDsa,
|
|
[in, unique] DRS_EXTENSIONS *pextClient,
|
|
[out] DRS_EXTENSIONS **ppextServer,
|
|
[out, ref] DRS_HANDLE *phDrs);
|
|
|
|
// opnum 1
|
|
ULONG
|
|
IDL_DRSUnbind(
|
|
[in, out, ref] DRS_HANDLE *phDrs);
|
|
|
|
// opnum 2
|
|
ULONG
|
|
IDL_DRSReplicaSync(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwVersion,
|
|
[in, ref, switch_is(dwVersion)] DRS_MSG_REPSYNC *pmsgSync);
|
|
|
|
// opnum 3
|
|
ULONG
|
|
IDL_DRSGetNCChanges(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_GETCHGREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_GETCHGREPLY *pmsgOut);
|
|
|
|
// opnum 4
|
|
ULONG
|
|
IDL_DRSUpdateRefs(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwVersion,
|
|
[in, ref, switch_is(dwVersion)] DRS_MSG_UPDREFS *pmsgUpdRefs);
|
|
|
|
// opnum 5
|
|
ULONG
|
|
IDL_DRSReplicaAdd(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwVersion,
|
|
[in, ref, switch_is(dwVersion)] DRS_MSG_REPADD *pmsgAdd);
|
|
|
|
// opnum 6
|
|
ULONG
|
|
IDL_DRSReplicaDel(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwVersion,
|
|
[in, ref, switch_is(dwVersion)] DRS_MSG_REPDEL *pmsgDel);
|
|
|
|
// opnum 7
|
|
ULONG
|
|
IDL_DRSReplicaModify(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwVersion,
|
|
[in, ref, switch_is(dwVersion)] DRS_MSG_REPMOD *pmsgMod);
|
|
|
|
// opnum 8
|
|
ULONG
|
|
IDL_DRSVerifyNames(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_VERIFYREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_VERIFYREPLY *pmsgOut);
|
|
|
|
// opnum 9
|
|
ULONG
|
|
IDL_DRSGetMemberships(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_REVMEMB_REQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_REVMEMB_REPLY *pmsgOut);
|
|
|
|
// opnum 10
|
|
ULONG
|
|
IDL_DRSInterDomainMove(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_MOVEREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)] DRS_MSG_MOVEREPLY *pmsgOut);
|
|
|
|
// opnum 11
|
|
ULONG
|
|
IDL_DRSGetNT4ChangeLog(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_NT4_CHGLOG_REQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_NT4_CHGLOG_REPLY *pmsgOut);
|
|
|
|
// opnum 12
|
|
ULONG
|
|
IDL_DRSCrackNames(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_CRACKREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_CRACKREPLY *pmsgOut);
|
|
|
|
// opnum 13
|
|
ULONG
|
|
IDL_DRSWriteSPN(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_SPNREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)] DRS_MSG_SPNREPLY *pmsgOut);
|
|
|
|
// opnum 14
|
|
ULONG
|
|
IDL_DRSRemoveDsServer(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_RMSVRREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_RMSVRREPLY *pmsgOut);
|
|
|
|
// opnum 15
|
|
ULONG
|
|
IDL_DRSRemoveDsDomain(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_RMDMNREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_RMDMNREPLY *pmsgOut);
|
|
|
|
// opnum 16
|
|
ULONG
|
|
IDL_DRSDomainControllerInfo(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_DCINFOREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_DCINFOREPLY *pmsgOut);
|
|
|
|
// opnum 17
|
|
ULONG
|
|
IDL_DRSAddEntry(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_ADDENTRYREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_ADDENTRYREPLY *pmsgOut);
|
|
|
|
// opnum 18
|
|
ULONG
|
|
IDL_DRSExecuteKCC(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_KCC_EXECUTE *pmsgIn);
|
|
|
|
// opnum 19
|
|
ULONG
|
|
IDL_DRSGetReplInfo(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_GETREPLINFO_REQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_GETREPLINFO_REPLY *pmsgOut);
|
|
|
|
// opnum 20
|
|
ULONG
|
|
IDL_DRSAddSidHistory(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_ADDSIDREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_ADDSIDREPLY *pmsgOut);
|
|
|
|
// opnum 21
|
|
ULONG
|
|
IDL_DRSGetMemberships2(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)]
|
|
DRS_MSG_GETMEMBERSHIPS2_REQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_GETMEMBERSHIPS2_REPLY *pmsgOut);
|
|
|
|
// opnum 22
|
|
ULONG
|
|
IDL_DRSReplicaVerifyObjects(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwVersion,
|
|
[in, ref, switch_is(dwVersion)] DRS_MSG_REPVERIFYOBJ *pmsgVerify);
|
|
|
|
// opnum 23
|
|
ULONG
|
|
IDL_DRSGetObjectExistence(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_EXISTREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_EXISTREPLY *pmsgOut);
|
|
|
|
// opnum 24
|
|
ULONG
|
|
IDL_DRSQuerySitesByCost(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)] DRS_MSG_QUERYSITESREQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_QUERYSITESREPLY *pmsgOut);
|
|
|
|
// opnum 25
|
|
ULONG
|
|
IDL_DRSInitDemotion(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)]
|
|
DRS_MSG_INIT_DEMOTIONREQ* pmsgIn,
|
|
[out, ref] DWORD* pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_INIT_DEMOTIONREPLY* pmsgOut);
|
|
|
|
// opnum 26
|
|
ULONG
|
|
IDL_DRSReplicaDemotion(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)]
|
|
DRS_MSG_REPLICA_DEMOTIONREQ* pmsgIn,
|
|
[out, ref] DWORD* pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_REPLICA_DEMOTIONREPLY* pmsgOut);
|
|
|
|
// opnum 27
|
|
ULONG
|
|
IDL_DRSFinishDemotion(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)]
|
|
DRS_MSG_FINISH_DEMOTIONREQ* pmsgIn,
|
|
[out, ref] DWORD* pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_FINISH_DEMOTIONREPLY* pmsgOut);
|
|
|
|
// opnum 28
|
|
ULONG
|
|
IDL_DRSAddCloneDC(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)]
|
|
DRS_MSG_ADDCLONEDCREQ* pmsgIn,
|
|
[out, ref] DWORD * pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_ADDCLONEDCREPLY* pmsgOut
|
|
);
|
|
|
|
// opnum 29
|
|
ULONG
|
|
IDL_DRSWriteNgcKey(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)]
|
|
DRS_MSG_WRITENGCKEYREQ* pmsgIn,
|
|
[out, ref] DWORD* pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_WRITENGCKEYREPLY* pmsgOut
|
|
);
|
|
|
|
// opnum 30
|
|
ULONG
|
|
IDL_DRSReadNgcKey(
|
|
[in, ref] DRS_HANDLE hDrs,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)]
|
|
DRS_MSG_READNGCKEYREQ* pmsgIn,
|
|
[out, ref] DWORD* pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DRS_MSG_READNGCKEYREPLY* pmsgOut
|
|
);
|
|
}
|
|
|
|
// This is the "real" ntdscript interface.
|
|
[
|
|
uuid(7c44d7d4-31d5-424c-bd5e-2b3e1f323d22), version(1.0),
|
|
pointer_default (unique)
|
|
]
|
|
interface dsaop
|
|
{
|
|
typedef struct {
|
|
DWORD Flags;
|
|
[range(1, 1024)] DWORD cbPassword;
|
|
[size_is(cbPassword)] BYTE *pbPassword;
|
|
} DSA_MSG_EXECUTE_SCRIPT_REQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DSA_MSG_EXECUTE_SCRIPT_REQ_V1 V1;
|
|
} DSA_MSG_EXECUTE_SCRIPT_REQ;
|
|
|
|
typedef struct {
|
|
DWORD dwOperationStatus;
|
|
[string] LPWSTR pwErrMessage;
|
|
} DSA_MSG_EXECUTE_SCRIPT_REPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DSA_MSG_EXECUTE_SCRIPT_REPLY_V1 V1;
|
|
} DSA_MSG_EXECUTE_SCRIPT_REPLY;
|
|
|
|
typedef struct {
|
|
DWORD Reserved;
|
|
} DSA_MSG_PREPARE_SCRIPT_REQ_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DSA_MSG_PREPARE_SCRIPT_REQ_V1 V1;
|
|
} DSA_MSG_PREPARE_SCRIPT_REQ;
|
|
|
|
typedef struct {
|
|
DWORD dwOperationStatus;
|
|
[string] LPWSTR pwErrMessage;
|
|
[range(0, 1024)] DWORD cbPassword;
|
|
[size_is(cbPassword)] BYTE *pbPassword;
|
|
[range(0, 10485760)] DWORD cbHashBody;
|
|
[size_is(cbHashBody)] BYTE *pbHashBody;
|
|
[range(0, 10485760)] DWORD cbHashSignature;
|
|
[size_is(cbHashSignature)] BYTE *pbHashSignature;
|
|
} DSA_MSG_PREPARE_SCRIPT_REPLY_V1;
|
|
|
|
typedef[switch_type(DWORD)] union {
|
|
[case(1)] DSA_MSG_PREPARE_SCRIPT_REPLY_V1 V1;
|
|
} DSA_MSG_PREPARE_SCRIPT_REPLY;
|
|
|
|
// opnum 0
|
|
ULONG
|
|
IDL_DSAPrepareScript(
|
|
[in] handle_t hRpc,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)]
|
|
DSA_MSG_PREPARE_SCRIPT_REQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DSA_MSG_PREPARE_SCRIPT_REPLY *pmsgOut);
|
|
|
|
// opnum 1
|
|
ULONG
|
|
IDL_DSAExecuteScript(
|
|
[in] handle_t hRpc,
|
|
[in] DWORD dwInVersion,
|
|
[in, ref, switch_is(dwInVersion)]
|
|
DSA_MSG_EXECUTE_SCRIPT_REQ *pmsgIn,
|
|
[out, ref] DWORD *pdwOutVersion,
|
|
[out, ref, switch_is(*pdwOutVersion)]
|
|
DSA_MSG_EXECUTE_SCRIPT_REPLY *pmsgOut);
|
|
} |