Win32 API 日本語リファレンス
ホームNetworking.ActiveDirectory › IDsAdminNewObjExt

IDsAdminNewObjExt

COM
IID6088eae2-e7bf-11d2-82af-00c04f68928b継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IDsAdminNewObjExt インターフェイスは、オブジェクト作成ウィザードの拡張機能によって実装されます。

メソッド 6

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Initialize(IADsContainer* pADsContainerObj, IADs* pADsCopySource, LPWSTR lpszClassName, IDsAdminNewObj* pDsAdminNewObj, DSA_NEWOBJ_DISPINFO* pDispInfo)

IDsAdminNewObjExt::Initialize メソッドは、オブジェクト作成ウィザードの拡張機能を初期化します。

pADsContainerObjIADsContainer*inオブジェクトが作成される既存のコンテナーの IADsContainer インターフェイスへのポインター。このパラメーターを NULL にすることはできません。このオブジェクトをこのメソッドのスコープを越えて保持する場合は、IUnknown::AddRef または IUnknown::QueryInterface を呼び出して参照カウントをインクリメントする必要があります。
pADsCopySourceIADs*inコピー元となるオブジェクトの IADs インターフェイスへのポインター。新しいオブジェクトが別のオブジェクトからコピーされない場合、このパラメーターは NULL になります。コピー操作の詳細については、「解説」セクションを参照してください。このオブジェクトをこのメソッドのスコープを越えて保持する場合は、IUnknown::AddRef または IUnknown::QueryInterface を呼び出して参照カウントをインクリメントする必要があります。
lpszClassNameLPWSTRin作成するオブジェクトクラスの LDAP 名を格納した WCHAR 文字列へのポインター。このパラメーターを NULL にすることはできません。サポートされる値は次のとおりです: "user"、"computer"、"printQueue"、"group"、"contact"。
pDsAdminNewObjIDsAdminNewObj*inウィザードに関する追加データを格納した IDsAdminNewObj インターフェイスへのポインター。このインターフェイスに対して IID_IDsAdminNewObjPrimarySite を指定して QueryInterface を呼び出すことで、プライマリ拡張機能の IDsAdminNewObjPrimarySite インターフェイスを取得することもできます。このオブジェクトをこのメソッドのスコープを越えて保持する場合は、IUnknown::AddRef または IUnknown::QueryInterface を呼び出して参照カウントをインクリメントする必要があります。
pDispInfoDSA_NEWOBJ_DISPINFO*inoutオブジェクト作成ウィザードに関する追加データを格納した DSA_NEWOBJ_DISPINFO 構造体へのポインター。

戻り値

成功した場合は S_OK を、それ以外の場合は OLE で定義されたエラーコードを返します。

解説(Remarks)

Active Directory Domain Services のオブジェクトは、新規に作成することも、既存のオブジェクトからコピーすることもできます。新しいオブジェクトを既存のオブジェクトから作成する場合、pADsCopySource にはコピー元のオブジェクトへのポインターが格納されます。新しいオブジェクトを別のオブジェクトからコピーしない場合、pADsCopySourceNULL になります。コピー操作はユーザーオブジェクトに対してのみサポートされます。

vtbl 4 HRESULT AddPages(LPFNSVADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam)

IDsAdminNewObjExt::AddPages メソッドは、オブジェクト作成ウィザードの拡張機能が目的のページをウィザードに追加できるようにするために呼び出されます。

lpfnAddPageLPFNSVADDPROPSHEETPAGEin

オブジェクト作成ウィザードの拡張機能がウィザードにページを追加するために呼び出す関数へのポインター。この関数は次の形式を取ります。

BOOL fnAddPage(HPROPSHEETPAGE hPage, LPARAM lParam);

hPage には、CreatePropertySheetPage を呼び出して作成されたウィザードページのハンドルが格納されます。

lParam は、AddPages に渡された lParam の値です。

lParamLPARAMin管理スナップインに固有のデータを格納します。この値は lpfnAddPage の 2 番目のパラメーターとして渡されます。

戻り値

メソッドが成功した場合は S_OK が返されます。メソッドが失敗した場合は、OLE で定義されたエラーコードが返されます。

解説(Remarks)

ウィザード拡張機能がウィザードに追加する各ページについて、拡張機能は PROPSHEETPAGE 構造体に値を設定し、CreatePropertySheetPage 関数を呼び出してページハンドルを作成し、続いてページハンドルと lParam を指定して lpfnAddPage 関数を呼び出します。

このメソッドは、形式と動作の点で IShellPropSheetExt::AddPages メソッドと同一です。

vtbl 5 HRESULT SetObject(IADs* pADsObj)

IDsAdminNewObjExt::SetObject メソッドは、作成されたディレクトリオブジェクトへのポインターをオブジェクト作成拡張機能に提供します。

pADsObjIADs*inオブジェクトの IADs インターフェイスへのポインター。このパラメーターは NULL になることがあります。このオブジェクトをこのメソッドのスコープを越えて保持する場合は、IUnknown::AddRef または IUnknown::QueryInterface を呼び出して参照カウントをインクリメントする必要があります。

戻り値

このメソッドは常に S_OK を返す必要があります。

vtbl 6 HRESULT WriteData(HWND hWnd, DWORD uContext)

オブジェクト作成ウィザードの拡張機能が、そのデータを Active Directory Domain Services のオブジェクトに書き込めるようにします。

hWndHWNDinエラーメッセージが表示される場合に親ウィンドウとして使用されるウィンドウハンドル。
uContextDWORDin

WriteData が呼び出されるコンテキストを指定します。これは次の値のいずれかになります。

DSA_NEWOBJ_CTX_PRECOMMIT

WriteData は、新しいオブジェクトが永続ストレージにコミットされる前に呼び出されます。これは、セカンダリのオブジェクト作成拡張機能がそのデータを書き込む必要があるコンテキストです。

DSA_NEWOBJ_CTX_POSTCOMMIT

WriteData は、新しいオブジェクトが永続ストレージにコミットされた後に呼び出されます。

DSA_NEWOBJ_CTX_CLEANUP

一時オブジェクトの書き込み処理中に失敗が発生し、一時オブジェクトが再作成されます。

戻り値

成功した場合は S_OK を、それ以外の場合は OLE で定義されたエラーコードを返します。

解説(Remarks)

一時ディレクトリオブジェクトへのポインターは、IDsAdminNewObjExt::SetObject メソッドが呼び出されたときに拡張機能に渡されます。

セカンダリのオブジェクト作成拡張機能は、WriteData メソッドの実行中に設定したデータを IADs::SetInfo を呼び出してコミットしてはいけません。すべての拡張機能がそれぞれのデータを追加した後で、プライマリのオブジェクト作成拡張機能がオブジェクトのすべてのデータをコミットします。

vtbl 7 HRESULT OnError(HWND hWnd, HRESULT hr, DWORD uContext)

ウィザードページでエラーが発生したときに呼び出されます。

hWndHWNDinエラーメッセージが表示される場合に親ウィンドウとして使用されるウィンドウハンドル。
hrHRESULTin発生したエラーの HRESULT
uContextDWORDin

OnError が呼び出されるコンテキストを指定します。これは次の値のいずれかになります。

DSA_NEWOBJ_CTX_PRECOMMIT

新しいオブジェクトが永続ストレージにコミットされる前にエラーが発生しました。

DSA_NEWOBJ_CTX_COMMIT

新しいオブジェクトが永続ストレージにコミットされている間にエラーが発生しました。

DSA_NEWOBJ_CTX_POSTCOMMIT

新しいオブジェクトが永続ストレージにコミットされた後にエラーが発生しました。

DSA_NEWOBJ_CTX_CLEANUP

新しいオブジェクトが永続ストレージにコミットされている間にエラーが発生しました。

戻り値

プライマリの作成拡張機能は、エラーが拡張機能によって処理されたことを示すために S_OK を返すか、システムにエラーメッセージを表示させるために OLE で定義されたエラーコードを返します。

セカンダリの作成拡張機能では、戻り値は無視されます。

vtbl 8 HRESULT GetSummaryInfo(LPWSTR* pBstrText)

IDsAdminNewObjExt::GetSummaryInfo メソッドは、新しいオブジェクトのウィザード拡張ページで収集されたデータの概要を含む文字列を取得します。この文字列はウィザードの完了ページに表示されます。

pBstrTextLPWSTR*inout概要テキストを受け取る BSTR 値へのポインター。この値を割り当てるには、SysAllocString を呼び出します。呼び出し元は、SysFreeString を呼び出してこのメモリを解放する必要があります。

戻り値

メソッドが成功した場合は S_OK が返されます。メソッドが失敗した場合は、OLE で定義されたエラーコードが返されます。拡張機能が概要文字列を提供しない場合、このメソッドは E_NOTIMPL を返す必要があります。

解説(Remarks)

このメソッドのサポートは任意です。拡張機能が概要情報を提供しない場合は、このメソッドから E_NOTIMPL を返す必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDsAdminNewObjExt "{6088EAE2-E7BF-11D2-82AF-00C04F68928B}"
#usecom global IDsAdminNewObjExt IID_IDsAdminNewObjExt "{}"
#comfunc global IDsAdminNewObjExt_Initialize      3 sptr,sptr,wstr,sptr,var
#comfunc global IDsAdminNewObjExt_AddPages        4 sptr,sptr
#comfunc global IDsAdminNewObjExt_SetObject       5 sptr
#comfunc global IDsAdminNewObjExt_WriteData       6 sptr,int
#comfunc global IDsAdminNewObjExt_OnError         7 sptr,int,int
#comfunc global IDsAdminNewObjExt_GetSummaryInfo  8 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。