IDsAdminNotifyHandler
COM公式ドキュメント
IDsAdminNotifyHandler インターフェイスは、Active Directory の管理通知ハンドラーによって実装されます。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
通知ハンドラーを初期化するために呼び出されます。
| pExtraInfo | IDataObject* | in | 予約済み。このパラメーターは NULL になります。 |
| puEventFlags | DWORD* | inout | 通知ハンドラーが受け取るイベントを示すフラグのセットを受け取る ULONG 値へのポインター。これは、次の値のうち 1 つ以上の組み合わせを指定できます。このパラメーターがゼロを受け取った場合、通知ハンドラーはイベントを一切受け取りません。 DSA_NOTIFY_DELオブジェクトが削除されたときにハンドラーに通知します。 DSA_NOTIFY_RENオブジェクトの名前が変更されたときにハンドラーに通知します。 DSA_NOTIFY_MOVオブジェクトが移動されたときにハンドラーに通知します。 DSA_NOTIFY_PROPプロパティが変更されたときにハンドラーに通知します。 DSA_NOTIFY_ALLすべてのイベントに応じてハンドラーに通知します。 |
戻り値
メソッドが成功した場合は S_OK が返されます。メソッドが失敗した場合は、標準的な HRESULT 値が返されます。
IDsAdminNotifyHandler::Begin メソッドは、通知ハンドラーが要求したイベントが発生したときに呼び出されます。通知ハンドラーは、IDsAdminNotifyHandler::Initialize が呼び出されるときに、通知を受け取るイベントを指定します。
| uEvent | DWORD | in | 発生しているイベントの種類を指定する値を格納します。これは、次の値のいずれかを指定できます。 DSA_NOTIFY_DELオブジェクトが削除されます。 DSA_NOTIFY_RENオブジェクトの名前が変更されます。 DSA_NOTIFY_MOVオブジェクトが別のコンテナーに移動されます。 DSA_NOTIFY_PROPオブジェクトの 1 つ以上のプロパティが変更されます。 |
| pArg1 | IDataObject* | in | IDataObject インターフェイスへのポインター。このインターフェイスは CFSTR_DSOBJECTNAMES クリップボード形式をサポートします。データオブジェクトの内容は、uEvent の値によって異なります。詳細については、「解説」を参照してください。 |
| pArg2 | IDataObject* | in | IDataObject インターフェイスへのポインター。このインターフェイスは CFSTR_DSOBJECTNAMES クリップボード形式をサポートします。このパラメーターの値およびデータオブジェクトの内容は、uEvent の値によって異なります。詳細については、「解説」を参照してください。 |
| puFlags | DWORD* | inout | 通知確認ダイアログボックスにおける通知ハンドラーの動作を変更するフラグのセットを受け取る ULONG 値へのポインター。これは、ゼロ、または次の値のうち 1 つ以上の組み合わせを指定できます。 DSA_NOTIFY_FLAG_ADDITIONAL_DATAこのフラグが設定されている場合、確認ダイアログボックス内のこの通知ハンドラーの項目が選択されます。このフラグが設定されていない場合、確認ダイアログボックス内のこの通知ハンドラーの項目は選択されません。 DSA_NOTIFY_FLAG_FORCE_ADDITIONAL_DATAこのフラグが設定されている場合、確認ダイアログボックス内のこの通知ハンドラーの項目は無効化され、ユーザーは選択状態を変更できません。 |
| pBstr | LPWSTR* | inout | 通知ハンドラーの名前や説明を含む文字列を受け取る BSTR へのポインター。この文字列は確認ダイアログボックスに表示されます。この文字列は SysAllocString 関数を呼び出して割り当てる必要があります。呼び出し元は、この文字列が不要になったら解放する必要があります。このパラメーターが NULL または空の文字列を受け取った場合、通知ハンドラーは確認ダイアログボックスに追加されず、IDsAdminNotifyHandler::Notify は呼び出されません。 |
戻り値
メソッドが成功した場合は S_OK が返されます。メソッドが失敗した場合は、標準的な HRESULT 値が返されます。
解説(Remarks)
pArg1 および pArg2 の値と内容は、uEvent で示される処理対象のイベントによって異なります。次の一覧は、各イベントの種類ごとに pArg1 と pArg2 に格納される内容を説明しています。
| uEvent | pArg1 | pArg2 |
|---|---|---|
| DSA_NOTIFY_DEL | 削除されたオブジェクトを格納します。 | 使用されません。NULL になります。 |
| DSA_NOTIFY_REN | オブジェクトの以前の名前を格納します。 | オブジェクトの新しい名前を格納します。 |
| DSA_NOTIFY_MOV | オブジェクトの移動元のコンテナーを格納します。 | オブジェクトの移動先のコンテナーを格納します。 |
| DSA_NOTIFY_PROP | プロパティが変更されたオブジェクトを格納します。 | 使用されません。NULL になります。 |
確認ダイアログボックスが表示され、確認ダイアログボックスで通知ハンドラーが選択された後、各オブジェクトに対して呼び出されます。
| nItem | DWORD | in | IDsAdminNotifyHandler::Begin メソッドで指定された DSOBJECTNAMES 構造体の aObjects メンバー内の項目のインデックスを格納します。 |
| uFlags | DWORD | in | 通知ハンドラーが IDsAdminNotifyHandler::Begin メソッドで指定したフラグを格納します。 |
戻り値
このメソッドの戻り値は無視されます。
IDsAdminNotifyHandler::End メソッドは、通知イベントが発生した後に呼び出されます。このメソッドは、通知処理がキャンセルされた場合でも呼び出されます。
戻り値
このメソッドの戻り値は無視されます。
解説(Remarks)
このメソッドは、通知ハンドラーが IDsAdminNotifyHandler::Begin メソッドまたは IDsAdminNotifyHandler::Notify メソッド中に割り当てたメモリを解放する機会を提供します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDsAdminNotifyHandler "{E4A2B8B3-5A18-11D2-97C1-00A0C9A06D2D}" #usecom global IDsAdminNotifyHandler IID_IDsAdminNotifyHandler "{}" #comfunc global IDsAdminNotifyHandler_Initialize 3 sptr,var #comfunc global IDsAdminNotifyHandler_Begin 4 int,sptr,sptr,var,var #comfunc global IDsAdminNotifyHandler_Notify 5 int,int #comfunc global IDsAdminNotifyHandler_End 6 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDsAdminNotifyHandler "{E4A2B8B3-5A18-11D2-97C1-00A0C9A06D2D}" #usecom global IDsAdminNotifyHandler IID_IDsAdminNotifyHandler "{}" #comfunc global IDsAdminNotifyHandler_Initialize 3 sptr,sptr #comfunc global IDsAdminNotifyHandler_Begin 4 int,sptr,sptr,sptr,sptr #comfunc global IDsAdminNotifyHandler_Notify 5 int,int #comfunc global IDsAdminNotifyHandler_End 6 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。