Win32 API 日本語リファレンス
ホームDevices.FunctionDiscovery › IPNPXDeviceAssociation

IPNPXDeviceAssociation

COM
IIDeed366d0-35b8-4fc5-8d20-7e5bd31f6ded継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

PnP-X デバイスの関連付けデータベース エントリを管理するメソッドを定義します。これらのメソッドは、対応する PnP devnode が変化したときに通知を送信します。

解説(Remarks)

このインターフェイスは、Function Discovery クエリが返した関数インスタンスに対して QueryService を呼び出すことで取得します。次の擬似コードは、QueryService 呼び出しで使用するパラメーターを示しています。

QueryService( SID_PNPXAssociation, __uuidof( IPNPXDeviceAssociation ) )

IPNPXDeviceAssociation のメソッドは、QueryService が呼び出された関数インスタンスの関連付けデータベース エントリを変更します。

すべての関数インスタンスを IPNPXDeviceAssociation のメソッドで関連付けできるわけではありません。関数インスタンスは、デバイスの検出に使用された Function Discovery プロバイダーが提供する UUID が PKEY_PNPX_GlobalIdentity キーに設定されている必要があります。プロパティ キーの詳細については、PnP-X Provider PKEYs を参照してください。

メソッド 3

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

vtbl 3 HRESULT Associate(LPWSTR pszSubCategory, IFunctionDiscoveryNotification* pIFunctionDiscoveryNotification)

関連付けデータベース エントリを関連付け済みとしてマークし、適切な通知を送信します。

pszSubCategoryLPWSTRinoptionalエントリが格納される関連付けデータベースのサブカテゴリ。このパラメーターは NULL にすることができます。
pIFunctionDiscoveryNotificationIFunctionDiscoveryNotification*inoptionalFunction Discovery に通知先として登録されている IFunctionDiscoveryNotification オブジェクト。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
メソッドは成功しました。
E_FAIL
メソッドは失敗しました。

解説(Remarks)

このメソッドは、IPNPXDeviceAssociation インターフェイスの取得元となった関数インスタンスに対応する関連付けデータベース エントリを変更します。

デバイスが関連付けられると、PnP-X Service IP Bus Enumerator (IPBusEnum) が PnP コンポーネントにデバイスの devnode を作成する要求を送信します。devnode が作成されると、適切な通知が送信されます。通知に使用されるコールバック メソッドは、次のロジックに基づいて決定されます。

関連付け後にデバイス ドライバーをインストールするためにユーザーの操作が必要な場合は、新しいハードウェアの検出 ウィザードが表示されます。
vtbl 4 HRESULT Unassociate(LPWSTR pszSubCategory, IFunctionDiscoveryNotification* pIFunctionDiscoveryNotification)

関連付けデータベース エントリを関連付け解除済みとしてマークし、適切な通知を送信します。

pszSubCategoryLPWSTRinoptionalエントリが格納される関連付けデータベースのサブカテゴリ。このパラメーターは NULL にすることができます。
pIFunctionDiscoveryNotificationIFunctionDiscoveryNotification*inoptionalFunction Discovery に通知先として登録されている IFunctionDiscoveryNotification オブジェクト。

戻り値

戻り値には次のものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_FAIL
メソッドは失敗しました。

解説(Remarks)

このメソッドは、IPNPXDeviceAssociation インターフェイスの取得元となった関数インスタンスに対応する関連付けデータベース エントリを変更します。

通知に使用されるコールバック メソッドは、次のロジックに基づいて決定されます。

このメソッドは関連付けデータベースからエントリを削除しません。関連付けデータベースからエントリを削除するには、IPNPXAssociation::Delete を呼び出します。
vtbl 5 HRESULT Delete(LPWSTR pszSubcategory, IFunctionDiscoveryNotification* pIFunctionDiscoveryNotification)

関連付けデータベースからエントリを削除し、適切な通知を送信します。

pszSubcategoryLPWSTRinoptionalエントリが格納される関連付けデータベースのサブカテゴリ。このパラメーターは NULL にすることができます。
pIFunctionDiscoveryNotificationIFunctionDiscoveryNotification*inoptionalFunction Discovery に通知先として登録されている IFunctionDiscoveryNotification オブジェクト。

戻り値

戻り値には次のものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_FAIL
メソッドは失敗しました。

解説(Remarks)

このメソッドは、IPNPXDeviceAssociation インターフェイスの取得元となった関数インスタンスに対応する関連付けデータベース エントリを変更します。

通知に使用されるコールバック メソッドは、次のロジックに基づいて決定されます。

関連付けデータベース エントリを削除せずにデバイスを使用不可としてマークするには、IPNPXDeviceAssociation::Unassociate を呼び出します。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IPNPXDeviceAssociation "{EED366D0-35B8-4FC5-8D20-7E5BD31F6DED}"
#usecom global IPNPXDeviceAssociation IID_IPNPXDeviceAssociation "{}"
#comfunc global IPNPXDeviceAssociation_Associate    3 wstr,sptr
#comfunc global IPNPXDeviceAssociation_Unassociate  4 wstr,sptr
#comfunc global IPNPXDeviceAssociation_Delete       5 wstr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。