📄 drsuapi.idl
字号:
[range(0,0x00A00000)] uint32 length; [size_is(length)] uint8 *data; } drsuapi_DsGetNT4ChangeLogRequest1; typedef [switch_type(uint32)] union { [case(1)] drsuapi_DsGetNT4ChangeLogRequest1 req1; } drsuapi_DsGetNT4ChangeLogRequest; typedef struct { [range(0,0x00A00000)] uint32 length1; [range(0,0x00A00000)] uint32 length2; hyper unknown1; NTTIME time2; hyper unknown3; NTTIME time4; hyper unknown5; NTTIME time6; NTSTATUS status; [size_is(length1)] uint8 *data1; [size_is(length2)] uint8 *data2; } drsuapi_DsGetNT4ChangeLogInfo1; typedef [switch_type(uint32)] union { [case(1)] drsuapi_DsGetNT4ChangeLogInfo1 info1; } drsuapi_DsGetNT4ChangeLogInfo; [todo] WERROR drsuapi_DsGetNT4ChangeLog( [in] policy_handle *bind_handle, [in,out] uint32 level, [in] [switch_is(level)] drsuapi_DsGetNT4ChangeLogRequest req, [out] [switch_is(level)] drsuapi_DsGetNT4ChangeLogInfo info ); /*****************/ /* Function 0x0c */ typedef [v1_enum] enum { DRSUAPI_DS_NAME_STATUS_OK = 0, DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR = 1, DRSUAPI_DS_NAME_STATUS_NOT_FOUND = 2, DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE = 3, DRSUAPI_DS_NAME_STATUS_NO_MAPPING = 4, DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY = 5, DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING = 6, DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL = 7 } drsuapi_DsNameStatus; typedef [v1_enum] enum { DRSUAPI_DS_NAME_FLAG_NO_FLAGS = 0x0, DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY = 0x1, DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC = 0x2, DRSUAPI_DS_NAME_FLAG_GCVERIFY = 0x4, DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL = 0x8 } drsuapi_DsNameFlags; typedef [v1_enum] enum { DRSUAPI_DS_NAME_FORMAT_UKNOWN = 0, DRSUAPI_DS_NAME_FORMAT_FQDN_1779 = 1, DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT = 2, DRSUAPI_DS_NAME_FORMAT_DISPLAY = 3, DRSUAPI_DS_NAME_FORMAT_GUID = 6, DRSUAPI_DS_NAME_FORMAT_CANONICAL = 7, DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL = 8, DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX = 9, DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL = 10, DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY = 11, DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN = 12 } drsuapi_DsNameFormat; typedef struct { [string,charset(UTF16)] uint16 *str; } drsuapi_DsNameString; typedef struct { uint32 codepage; /* 0x000004e4 - 1252 is german codepage*/ uint32 language; /* 0x00000407 - german language ID*/ drsuapi_DsNameFlags format_flags; drsuapi_DsNameFormat format_offered; drsuapi_DsNameFormat format_desired; [range(1,10000)] uint32 count; [size_is(count)] drsuapi_DsNameString *names; } drsuapi_DsNameRequest1; typedef [switch_type(int32)] union { [case(1)] drsuapi_DsNameRequest1 req1; } drsuapi_DsNameRequest; typedef struct { drsuapi_DsNameStatus status; [charset(UTF16),string] uint16 *dns_domain_name; [charset(UTF16),string] uint16 *result_name; } drsuapi_DsNameInfo1; typedef struct { uint32 count; [size_is(count)] drsuapi_DsNameInfo1 *array; } drsuapi_DsNameCtr1; typedef [switch_type(int32)] union { [case(1)] drsuapi_DsNameCtr1 *ctr1; } drsuapi_DsNameCtr; WERROR drsuapi_DsCrackNames( [in] policy_handle *bind_handle, [in, out] int32 level, [in,switch_is(level)] drsuapi_DsNameRequest req, [out,switch_is(level)] drsuapi_DsNameCtr ctr ); /*****************/ /* Function 0x0d */ typedef [v1_enum] enum { DRSUAPI_DS_SPN_OPERATION_ADD = 0, DRSUAPI_DS_SPN_OPERATION_REPLACE= 1, DRSUAPI_DS_SPN_OPERATION_DELETE = 2 } drsuapi_DsSpnOperation; typedef struct { drsuapi_DsSpnOperation operation; uint32 unknown1; [charset(UTF16),string] uint16 *object_dn; [range(0,10000)] uint32 count; [size_is(count)] drsuapi_DsNameString *spn_names; } drsuapi_DsWriteAccountSpnRequest1; typedef [switch_type(int32)] union { [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1; } drsuapi_DsWriteAccountSpnRequest; typedef struct { WERROR status; } drsuapi_DsWriteAccountSpnResult1; typedef [switch_type(int32)] union { [case(1)] drsuapi_DsWriteAccountSpnResult1 res1; } drsuapi_DsWriteAccountSpnResult; WERROR drsuapi_DsWriteAccountSpn( [in] policy_handle *bind_handle, [in,out] int32 level, [in,switch_is(level)] drsuapi_DsWriteAccountSpnRequest req, [out,switch_is(level)] drsuapi_DsWriteAccountSpnResult res ); /*****************/ /* Function 0x0e */ typedef struct { [charset(UTF16),string] uint16 *server_dn; [charset(UTF16),string] uint16 *domain_dn; uint32 unknown; /* 0x000000001 */ } drsuapi_DsRemoveDSServerRequest1; typedef [switch_type(int32)] union { [case(1)] drsuapi_DsRemoveDSServerRequest1 req1; } drsuapi_DsRemoveDSServerRequest; typedef struct { WERROR status; } drsuapi_DsRemoveDSServerResult1; typedef [switch_type(int32)] union { [case(1)] drsuapi_DsRemoveDSServerResult1 res1; } drsuapi_DsRemoveDSServerResult; WERROR drsuapi_DsRemoveDSServer( [in] policy_handle *bind_handle, [in,out] int32 level, [in,switch_is(level)] drsuapi_DsRemoveDSServerRequest req, [out,switch_is(level)] drsuapi_DsRemoveDSServerResult res ); /*****************/ /* Function 0x0f */ [todo] WERROR DRSUAPI_REMOVE_DS_DOMAIN(); /*****************/ /* Function 0x10 */ typedef struct { [charset(UTF16),string] uint16 *domain_name; /* netbios or dns */ int32 level; /* specifies the switch level for the request */ } drsuapi_DsGetDCInfoRequest1; typedef [switch_type(int32)] union { [case(1)] drsuapi_DsGetDCInfoRequest1 req1; } drsuapi_DsGetDCInfoRequest; typedef struct { [charset(UTF16),string] uint16 *netbios_name; [charset(UTF16),string] uint16 *dns_name; [charset(UTF16),string] uint16 *site_name; [charset(UTF16),string] uint16 *computer_dn; [charset(UTF16),string] uint16 *server_dn; uint32 is_pdc; uint32 is_enabled; } drsuapi_DsGetDCInfo1; typedef struct { [range(0,10000)] uint32 count; [size_is(count)] drsuapi_DsGetDCInfo1 *array; } drsuapi_DsGetDCInfoCtr1; typedef struct { [charset(UTF16),string] uint16 *netbios_name; [charset(UTF16),string] uint16 *dns_name; [charset(UTF16),string] uint16 *site_name; [charset(UTF16),string] uint16 *site_dn; [charset(UTF16),string] uint16 *computer_dn; [charset(UTF16),string] uint16 *server_dn; [charset(UTF16),string] uint16 *ntds_dn; uint32 is_pdc; uint32 is_enabled; uint32 is_gc; GUID site_guid; GUID computer_guid; GUID server_guid; GUID ntds_guid; } drsuapi_DsGetDCInfo2; typedef struct { [range(0,10000)] uint32 count; [size_is(count)] drsuapi_DsGetDCInfo2 *array; } drsuapi_DsGetDCInfoCtr2; /* * this represents an active connection to the * Directory System Agent (DSA) * this can be via LDAP or DRSUAPI */ typedef struct { [flag(NDR_BIG_ENDIAN)] ipv4address client_ip_address; uint32 unknown2; uint32 connection_time; /* in seconds */ uint32 unknown4; uint32 unknown5; uint32 unknown6; /* * client_account can be the following: * "W2K3\Administrator" * "Administrator@W2K3" * "cn=Administrator,cn=Users,DC=w2k3,DC=vmnet1,DC=vm,DC=base" * "" * or NULL */ [charset(UTF16),string] uint16 *client_account; } drsuapi_DsGetDCConnection01; typedef struct { [range(0,10000)] uint32 count; [size_is(count)] drsuapi_DsGetDCConnection01 *array; } drsuapi_DsGetDCConnectionCtr01; typedef [v1_enum] enum { DRSUAPI_DC_INFO_CTR_1 = 1, DRSUAPI_DC_INFO_CTR_2 = 2, DRSUAPI_DC_CONNECTION_CTR_01 = -1 } drsuapi_DsGetDCInfoCtrLevels; typedef [switch_type(int32)] union { [case(DRSUAPI_DC_INFO_CTR_1)] drsuapi_DsGetDCInfoCtr1 ctr1; [case(DRSUAPI_DC_INFO_CTR_2)] drsuapi_DsGetDCInfoCtr2 ctr2; [case(DRSUAPI_DC_CONNECTION_CTR_01)] drsuapi_DsGetDCConnectionCtr01 ctr01; } drsuapi_DsGetDCInfoCtr; WERROR drsuapi_DsGetDomainControllerInfo( [in] policy_handle *bind_handle, [in] int32 level, [in,switch_is(level)] drsuapi_DsGetDCInfoRequest req, [out] int32 level_out, [out,switch_is(level_out)] drsuapi_DsGetDCInfoCtr ctr ); /*****************/ /* Function 0x11 */ typedef [public,noprint] struct { drsuapi_DsReplicaObjectListItem *next_object; drsuapi_DsReplicaObject object; } drsuapi_DsReplicaObjectListItem; /* * The DsAddEntry() call which creates a nTDSDSA object, * also adds a servicePrincipalName in the following form * to the computer account of the new domain controller * referenced by the "serverReferenece" attribute. * * E3514235-4B06-11D1-AB04-00C04FC2DCD2/<new-ntdsdsa-object-guid-as-string>/<domain-dns-name> * * also note that the "serverReference" isn't added to the new object! */ const char *DRSUAPI_NTDSDSA_KRB5_SERVICE_GUID = "E3514235-4B06-11D1-AB04-00C04FC2DCD2"; /* * please note the the current idl * for DsAddEntry does only parse * what I saw between 2 w2k3 boxes * in my dssync experiments I got some other replies * so all I want to say is that this is very incomplete yet... * --metze */ typedef struct { drsuapi_DsReplicaObjectListItem first_object; } drsuapi_DsAddEntryRequest2; typedef [switch_type(int32)] union { [case(2)] drsuapi_DsAddEntryRequest2 req2; } drsuapi_DsAddEntryRequest; typedef struct { uint32 unknown1; WERROR status; uint32 unknown2; uint16 unknown3; } drsuapi_DsAddEntryErrorInfoX; typedef struct { [range(0,10485760)] uint32 size; [size_is(size)] uint8 *data; } drsuapi_DsAddEntryExtraErrorBuffer; typedef struct { drsuapi_DsAddEntryErrorInfoX error; drsuapi_DsAttributeId attid; uint32 unknown2; drsuapi_DsAddEntryExtraErrorBuffer buffer; } drsuapi_DsAddEntryExtraError1; typedef /*[noprint]*/ struct { drsuapi_DsAddEntryErrorListItem1 *next; drsuapi_DsAddEntryExtraError1 error; } drsuapi_DsAddEntryErrorListItem1; typedef struct { drsuapi_DsReplicaObjectIdentifier *id; WERROR status; drsuapi_DsAddEntryErrorListItem1 first; } drsuapi_DsAddEntryErrorInfo1; typedef [switch_type(uint32)] union { [case(1)] drsuapi_DsAddEntryErrorInfo1 error1;/* [case(2)] drsuapi_DsAddEntryErrorInfo2 error2; [case(3)] drsuapi_DsAddEntryErrorInfo3 error3;*/ [case(4)] drsuapi_DsAddEntryErrorInfoX errorX; [case(5)] drsuapi_DsAddEntryErrorInfoX errorX; [case(6)] drsuapi_DsAddEntryErrorInfoX errorX; [case(7)] drsuapi_DsAddEntryErrorInfoX errorX; } drsuapi_DsAddEntryErrorInfo; typedef struct { WERROR status; uint32 level; [switch_is(level)] drsuapi_DsAddEntryErrorInfo *info; } drsuapi_DsAddEntryError1; typedef [switch_type(uint32)] union { [case(1)] drsuapi_DsAddEntryError1 info1; } drsuapi_DsAddEntryError; typedef struct { GUID guid; dom_sid28 sid; } drsuapi_DsReplicaObjectIdentifier2; typedef struct { drsuapi_DsReplicaObjectIdentifier *id; uint32 unknown1; drsuapi_DsAddEntryErrorInfoX error; [range(0,10000)] uint32 count; [size_is(count)] drsuapi_DsReplicaObjectIdentifier2 *objects; } drsuapi_DsAddEntryCtr2; typedef struct { drsuapi_DsReplicaObjectIdentifier *id; uint32 level; [switch_is(level)] drsuapi_DsAddEntryError *error; [range(0,10000)] uint32 count; [size_is(count)] drsuapi_DsReplicaObjectIdentifier2 *objects; } drsuapi_DsAddEntryCtr3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -