1562 lines
39 KiB
Plaintext
1562 lines
39 KiB
Plaintext
// Full IDL (ms-drsr.idl) has been taken from
|
|
// https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/3f5d9495-9563-44de-876a-ce6f880e3fb2
|
|
// 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 v1803. 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
|
|
{
|
|
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 struct {
|
|
ULONG ulVersion;
|
|
ULONG cbByteBuffer;
|
|
ULONGLONG ullPadding;
|
|
[size_is(cbByteBuffer)] BYTE rgbBuffer[];
|
|
} VAR_SIZE_BUFFER_WITH_VERSION;
|
|
|
|
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;
|
|
GUID correlationID;
|
|
[unique] VAR_SIZE_BUFFER_WITH_VERSION* pReservedBuffer;
|
|
} DRS_MSG_GETCHGREQ_V11;
|
|
|
|
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;
|
|
[case(11)] DRS_MSG_GETCHGREQ_V11 V11;
|
|
} 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 struct {
|
|
[ref] DSNAME* pNC;
|
|
UUID uuidDsaSrc;
|
|
[unique] [string] char* pszDsaSrc;
|
|
ULONG ulOptions;
|
|
GUID correlationID;
|
|
[unique] VAR_SIZE_BUFFER_WITH_VERSION* pReservedBuffer;
|
|
} DRS_MSG_REPSYNC_V2;
|
|
|
|
typedef [switch_type(DWORD)] union
|
|
{
|
|
[case(1)] DRS_MSG_REPSYNC_V1 V1;
|
|
[case(2)] DRS_MSG_REPSYNC_V2 V2;
|
|
} DRS_MSG_REPSYNC;
|
|
|
|
typedef struct {
|
|
[ref] DSNAME* pNC;
|
|
[ref] [string] char* pszDsaDest;
|
|
UUID uuidDsaObjDest;
|
|
ULONG ulOptions;
|
|
} DRS_MSG_UPDREFS_V1;
|
|
|
|
typedef struct {
|
|
[ref] DSNAME* pNC;
|
|
[ref] [string] char* pszDsaDest;
|
|
UUID uuidDsaObjDest;
|
|
ULONG ulOptions;
|
|
GUID correlationID;
|
|
[unique] VAR_SIZE_BUFFER_WITH_VERSION* pReservedBuffer;
|
|
} DRS_MSG_UPDREFS_V2;
|
|
|
|
typedef [switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_UPDREFS_V1 V1;
|
|
[case(2)] DRS_MSG_UPDREFS_V2 V2;
|
|
} 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 struct {
|
|
[ref] DSNAME* pNC;
|
|
[unique] DSNAME* pSourceDsaDN;
|
|
[unique] DSNAME* pTransportDN;
|
|
[ref] [string] char* pszSourceDsaAddress;
|
|
REPLTIMES rtSchedule;
|
|
ULONG ulOptions;
|
|
GUID correlationID;
|
|
[unique] VAR_SIZE_BUFFER_WITH_VERSION* pReservedBuffer;
|
|
} DRS_MSG_REPADD_V3;
|
|
|
|
typedef [switch_type(DWORD)] union {
|
|
[case(1)] DRS_MSG_REPADD_V1 V1;
|
|
[case(2)] DRS_MSG_REPADD_V2 V2;
|
|
[case(3)] DRS_MSG_REPADD_V3 V3;
|
|
} 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);
|
|
}
|