IDsAdminNewObjExt
COM公式ドキュメント
IDsAdminNewObjExt インターフェイスは、オブジェクト作成ウィザードの拡張機能によって実装されます。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IDsAdminNewObjExt::Initialize メソッドは、オブジェクト作成ウィザードの拡張機能を初期化します。
| pADsContainerObj | IADsContainer* | in | オブジェクトが作成される既存のコンテナーの IADsContainer インターフェイスへのポインター。このパラメーターを NULL にすることはできません。このオブジェクトをこのメソッドのスコープを越えて保持する場合は、IUnknown::AddRef または IUnknown::QueryInterface を呼び出して参照カウントをインクリメントする必要があります。 |
| pADsCopySource | IADs* | in | コピー元となるオブジェクトの IADs インターフェイスへのポインター。新しいオブジェクトが別のオブジェクトからコピーされない場合、このパラメーターは NULL になります。コピー操作の詳細については、「解説」セクションを参照してください。このオブジェクトをこのメソッドのスコープを越えて保持する場合は、IUnknown::AddRef または IUnknown::QueryInterface を呼び出して参照カウントをインクリメントする必要があります。 |
| lpszClassName | LPWSTR | in | 作成するオブジェクトクラスの LDAP 名を格納した WCHAR 文字列へのポインター。このパラメーターを NULL にすることはできません。サポートされる値は次のとおりです: "user"、"computer"、"printQueue"、"group"、"contact"。 |
| pDsAdminNewObj | IDsAdminNewObj* | in | ウィザードに関する追加データを格納した IDsAdminNewObj インターフェイスへのポインター。このインターフェイスに対して IID_IDsAdminNewObjPrimarySite を指定して QueryInterface を呼び出すことで、プライマリ拡張機能の IDsAdminNewObjPrimarySite インターフェイスを取得することもできます。このオブジェクトをこのメソッドのスコープを越えて保持する場合は、IUnknown::AddRef または IUnknown::QueryInterface を呼び出して参照カウントをインクリメントする必要があります。 |
| pDispInfo | DSA_NEWOBJ_DISPINFO* | inout | オブジェクト作成ウィザードに関する追加データを格納した DSA_NEWOBJ_DISPINFO 構造体へのポインター。 |
戻り値
成功した場合は S_OK を、それ以外の場合は OLE で定義されたエラーコードを返します。
解説(Remarks)
Active Directory Domain Services のオブジェクトは、新規に作成することも、既存のオブジェクトからコピーすることもできます。新しいオブジェクトを既存のオブジェクトから作成する場合、pADsCopySource にはコピー元のオブジェクトへのポインターが格納されます。新しいオブジェクトを別のオブジェクトからコピーしない場合、pADsCopySource は NULL になります。コピー操作はユーザーオブジェクトに対してのみサポートされます。
IDsAdminNewObjExt::AddPages メソッドは、オブジェクト作成ウィザードの拡張機能が目的のページをウィザードに追加できるようにするために呼び出されます。
| lpfnAddPage | LPFNSVADDPROPSHEETPAGE | in | オブジェクト作成ウィザードの拡張機能がウィザードにページを追加するために呼び出す関数へのポインター。この関数は次の形式を取ります。
hPage には、CreatePropertySheetPage を呼び出して作成されたウィザードページのハンドルが格納されます。 lParam は、AddPages に渡された lParam の値です。 |
| lParam | LPARAM | in | 管理スナップインに固有のデータを格納します。この値は lpfnAddPage の 2 番目のパラメーターとして渡されます。 |
戻り値
メソッドが成功した場合は S_OK が返されます。メソッドが失敗した場合は、OLE で定義されたエラーコードが返されます。
解説(Remarks)
ウィザード拡張機能がウィザードに追加する各ページについて、拡張機能は PROPSHEETPAGE 構造体に値を設定し、CreatePropertySheetPage 関数を呼び出してページハンドルを作成し、続いてページハンドルと lParam を指定して lpfnAddPage 関数を呼び出します。
このメソッドは、形式と動作の点で IShellPropSheetExt::AddPages メソッドと同一です。
IDsAdminNewObjExt::SetObject メソッドは、作成されたディレクトリオブジェクトへのポインターをオブジェクト作成拡張機能に提供します。
| pADsObj | IADs* | in | オブジェクトの IADs インターフェイスへのポインター。このパラメーターは NULL になることがあります。このオブジェクトをこのメソッドのスコープを越えて保持する場合は、IUnknown::AddRef または IUnknown::QueryInterface を呼び出して参照カウントをインクリメントする必要があります。 |
戻り値
このメソッドは常に S_OK を返す必要があります。
オブジェクト作成ウィザードの拡張機能が、そのデータを Active Directory Domain Services のオブジェクトに書き込めるようにします。
| hWnd | HWND | in | エラーメッセージが表示される場合に親ウィンドウとして使用されるウィンドウハンドル。 |
| uContext | DWORD | in | WriteData が呼び出されるコンテキストを指定します。これは次の値のいずれかになります。 DSA_NEWOBJ_CTX_PRECOMMITWriteData は、新しいオブジェクトが永続ストレージにコミットされる前に呼び出されます。これは、セカンダリのオブジェクト作成拡張機能がそのデータを書き込む必要があるコンテキストです。 DSA_NEWOBJ_CTX_POSTCOMMITWriteData は、新しいオブジェクトが永続ストレージにコミットされた後に呼び出されます。 DSA_NEWOBJ_CTX_CLEANUP一時オブジェクトの書き込み処理中に失敗が発生し、一時オブジェクトが再作成されます。 |
戻り値
成功した場合は S_OK を、それ以外の場合は OLE で定義されたエラーコードを返します。
解説(Remarks)
一時ディレクトリオブジェクトへのポインターは、IDsAdminNewObjExt::SetObject メソッドが呼び出されたときに拡張機能に渡されます。
セカンダリのオブジェクト作成拡張機能は、WriteData メソッドの実行中に設定したデータを IADs::SetInfo を呼び出してコミットしてはいけません。すべての拡張機能がそれぞれのデータを追加した後で、プライマリのオブジェクト作成拡張機能がオブジェクトのすべてのデータをコミットします。
ウィザードページでエラーが発生したときに呼び出されます。
| hWnd | HWND | in | エラーメッセージが表示される場合に親ウィンドウとして使用されるウィンドウハンドル。 |
| hr | HRESULT | in | 発生したエラーの HRESULT。 |
| uContext | DWORD | in | OnError が呼び出されるコンテキストを指定します。これは次の値のいずれかになります。 DSA_NEWOBJ_CTX_PRECOMMIT新しいオブジェクトが永続ストレージにコミットされる前にエラーが発生しました。 DSA_NEWOBJ_CTX_COMMIT新しいオブジェクトが永続ストレージにコミットされている間にエラーが発生しました。 DSA_NEWOBJ_CTX_POSTCOMMIT新しいオブジェクトが永続ストレージにコミットされた後にエラーが発生しました。 DSA_NEWOBJ_CTX_CLEANUP新しいオブジェクトが永続ストレージにコミットされている間にエラーが発生しました。 |
戻り値
プライマリの作成拡張機能は、エラーが拡張機能によって処理されたことを示すために S_OK を返すか、システムにエラーメッセージを表示させるために OLE で定義されたエラーコードを返します。
セカンダリの作成拡張機能では、戻り値は無視されます。
IDsAdminNewObjExt::GetSummaryInfo メソッドは、新しいオブジェクトのウィザード拡張ページで収集されたデータの概要を含む文字列を取得します。この文字列はウィザードの完了ページに表示されます。
| pBstrText | LPWSTR* | inout | 概要テキストを受け取る BSTR 値へのポインター。この値を割り当てるには、SysAllocString を呼び出します。呼び出し元は、SysFreeString を呼び出してこのメモリを解放する必要があります。 |
戻り値
メソッドが成功した場合は S_OK が返されます。メソッドが失敗した場合は、OLE で定義されたエラーコードが返されます。拡張機能が概要文字列を提供しない場合、このメソッドは E_NOTIMPL を返す必要があります。
解説(Remarks)
このメソッドのサポートは任意です。拡張機能が概要情報を提供しない場合は、このメソッドから E_NOTIMPL を返す必要があります。
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 指定が可能。#define global IID_IDsAdminNewObjExt "{6088EAE2-E7BF-11D2-82AF-00C04F68928B}" #usecom global IDsAdminNewObjExt IID_IDsAdminNewObjExt "{}" #comfunc global IDsAdminNewObjExt_Initialize 3 sptr,sptr,wstr,sptr,sptr #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 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。