離線網域加入IDL定義
描述
離線網域聯結 (ODJ) 資料結構未定義在 C\C++頭檔中。 相反地,結構會以介面定義語言 (IDL) 格式定義,編譯之後會用於串行化和還原串行化。 在 Windows 平臺上,這些結構的串行化和還原串行化是由下列 Win32 API 自動處理:
NetRequestProvisioningPackageInstall
在某些情況下,例如與非 Windows 平臺的 Interop,可能需要進行手動串行化和還原串行化。 本主題包含單一 IDL 編譯單位中所有 ODJ 數據結構的定義,而且為了方便起見, 也會定義相符的應用程式組態檔 (ACF) 定義。 此內容不會作為任何 SDK 的一部分提供。 因此,您應該將下列內容複製到您的程式代碼,並使用IDL編譯程式進行編譯。 IDL 編譯程式會產生必要的串行化\還原串行化存根函式,然後連結至您的應用程式。 如需類型串行化和還原串行化運作方式的詳細資訊,請參閱 類型串行化。
如需詳細的成員檔,請參閱個別結構章節。
如果您使用 Microsoft MIDL 編譯程式,您應該指定下列旗標來最大化相容性:
/char unsigned
/ms_ext
/c_ext
ODJ IDL 檔案
include "dsgetdc.h";
interface ODJ
{
typedef struct _ODJ_BLOB
{
ULONG ulODJFormat;
ULONG cbBlob;
[size_is(cbBlob)] PBYTE pBlob;
} ODJ_BLOB, *PODJ_BLOB;
typedef struct _ODJ_PROVISION_DATA
{
ULONG ulVersion;
ULONG ulcBlobs;
[size_is(ulcBlobs)] PODJ_BLOB pBlobs;
} ODJ_PROVISION_DATA;
typedef ODJ_PROVISION_DATA *PODJ_PROVISION_DATA;
typedef struct _OP_BLOB
{
ULONG cbBlob;
[size_is(cbBlob)] PBYTE pBlob;
} OP_BLOB, *POP_BLOB;
typedef struct _OP_PACKAGE_PART
{
GUID PartType;
ULONG ulFlags;
OP_BLOB Part;
OP_BLOB Extension;
} OP_PACKAGE_PART, *POP_PACKAGE_PART;
typedef struct _OP_PACKAGE_PART_COLLECTION
{
ULONG cParts;
[size_is(cParts)] POP_PACKAGE_PART pParts;
OP_BLOB Extension;
} OP_PACKAGE_PART_COLLECTION, *POP_PACKAGE_PART_COLLECTION;
typedef struct _OP_PACKAGE
{
GUID EncryptionType;
OP_BLOB EncryptionContext;
OP_BLOB WrappedPartCollection;
ULONG cbDecryptedPartCollection;
OP_BLOB Extension;
} OP_PACKAGE, *POP_PACKAGE;
typedef struct _SID_IDENTIFIER_AUTHORITY
{
UCHAR Value[6];
} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
typedef struct _ODJ_SID
{
UCHAR Revision;
UCHAR SubAuthorityCount;
SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
[size_is(SubAuthorityCount)] ULONG SubAuthority[*];
} ODJ_SID, *PODJ_SID;
typedef struct _ODJ_UNICODE_STRING
{
USHORT Length;
USHORT MaximumLength;
[size_is(MaximumLength/2), length_is(Length/2)] PWSTR Buffer;
} ODJ_UNICODE_STRING, *PODJ_UNICODE_STRING;
typedef struct _ODJ_POLICY_DNS_DOMAIN_INFO
{
ODJ_UNICODE_STRING Name;
ODJ_UNICODE_STRING DnsDomainName;
ODJ_UNICODE_STRING DnsForestName;
GUID DomainGuid;
PODJ_SID Sid;
} ODJ_POLICY_DNS_DOMAIN_INFO;
typedef struct _ODJ_WIN7BLOB
{
[string] wchar_t *lpDomain;
[string] wchar_t *lpMachineName;
[string] wchar_t *lpMachinePassword;
ODJ_POLICY_DNS_DOMAIN_INFO DnsDomainInfo;
DOMAIN_CONTROLLER_INFOW DcInfo;
DWORD Options;
} ODJ_WIN7BLOB;
typedef ODJ_WIN7BLOB *PODJ_WIN7BLOB;
cpp_quote("#define OP_JP2_FLAG_PERSISTENTSITE 0x00000001")
typedef struct _OP_JOINPROV2_PART
{
DWORD dwFlags;
[string] wchar_t *lpNetbiosName;
[string] wchar_t *lpSiteName;
[string] wchar_t *lpPrimaryDNSDomain;
DWORD dwReserved;
[string] wchar_t *lpReserved;
} OP_JOINPROV2_PART, *POP_JOINPROV2_PART;
typedef struct _OP_JOINPROV3_PART
{
DWORD Rid;
[string] wchar_t *lpSid;
} OP_JOINPROV3_PART, *POP_JOINPROV3_PART;
typedef struct _OP_JOINPROV4_PART
{
DWORD Rid;
[string] wchar_t *lpSid;
GUID ObjectGuid;
} OP_JOINPROV4_PART, *POP_JOINPROV4_PART;
typedef struct _OP_POLICY_ELEMENT
{
[string] wchar_t *pKeyPath;
[string] wchar_t *pValueName;
ULONG ulValueType;
ULONG cbValueData;
[size_is(cbValueData)] PBYTE pValueData;
} OP_POLICY_ELEMENT, *POP_POLICY_ELEMENT;
typedef struct _OP_POLICY_ELEMENT_LIST
{
[string] wchar_t *pSource;
ULONG ulRootKeyId;
ULONG cElements;
[size_is(cElements)] POP_POLICY_ELEMENT pElements;
} OP_POLICY_ELEMENT_LIST, *POP_POLICY_ELEMENT_LIST;
typedef struct _OP_POLICY_PART
{
ULONG cElementLists;
[size_is(cElementLists)] POP_POLICY_ELEMENT_LIST pElementLists;
OP_BLOB Extension;
} OP_POLICY_PART, *POP_POLICY_PART;
typedef struct _OP_CERT_PFX_STORE
{
[string] wchar_t *pTemplateName;
ULONG ulPrivateKeyExportPolicy;
[string] wchar_t *pPolicyServerUrl;
ULONG ulPolicyServerUrlFlags;
[string] wchar_t *pPolicyServerId;
ULONG cbPfx;
[size_is(cbPfx)] PBYTE pPfx;
} OP_CERT_PFX_STORE, *POP_CERT_PFX_STORE;
typedef struct _OP_CERT_SST_STORE
{
ULONG StoreLocation;
[string] wchar_t *pStoreName;
ULONG cbSst;
[size_is(cbSst)] PBYTE pSst;
} OP_CERT_SST_STORE, *POP_CERT_SST_STORE;
typedef struct _OP_CERT_PART
{
ULONG cPfxStores;
[size_is(cPfxStores)] POP_CERT_PFX_STORE pPfxStores;
ULONG cSstStores;
[size_is(cSstStores)] POP_CERT_SST_STORE pSstStores;
OP_BLOB Extension;
} OP_CERT_PART, *POP_CERT_PART;
}
ODJ ACF 檔案
[
// If necessary for your application, see MIDL documentation for alternatives to explicit_handle
explicit_handle
]
interface ODJ
{
typedef [encode, decode] PODJ_WIN7BLOB;
typedef [encode, decode] POP_JOINPROV2_PART;
typedef [encode, decode] POP_JOINPROV3_PART;
typedef [encode, decode] POP_JOINPROV4_PART;
typedef [encode, decode] PODJ_PROVISION_DATA;
typedef [encode, decode] POP_PACKAGE_PART;
typedef [encode, decode] POP_PACKAGE_PART_COLLECTION;
typedef [encode, decode] POP_PACKAGE;
typedef [encode, decode] POP_POLICY_PART;
typedef [encode, decode] POP_CERT_PART;
}