次の方法で共有


SW_DEVICE_CREATE_CALLBACK コールバック関数 (swdevice.h)

レジストリのバッキングをデバイスに提供し、呼び出し元が hSwDevice ハンドルを使用してソフトウェア デバイス API 関数を呼び出すことができます。

構文

SW_DEVICE_CREATE_CALLBACK SwDeviceCreateCallback;

void SwDeviceCreateCallback(
  [in]           HSWDEVICE hSwDevice,
  [in]           HRESULT CreateResult,
  [in, optional] PVOID pContext,
  [in, optional] PCWSTR pszDeviceInstanceId
)
{...}

パラメーター

[in] hSwDevice

ソフトウェア デバイスのハンドル。

[in] CreateResult

ソフトウェア デバイスの列挙が成功したかどうかを示す HRESULT。

[in, optional] pContext

クライアント アプリによって SwDeviceCreate に必要に応じて提供されたコンテキスト。

[in, optional] pszDeviceInstanceId

PnP がデバイスに割り当てたデバイス インスタンス ID。

戻り値

なし

解説

オペレーティング システムは、PnP がデバイスを列挙 した後、SW_DEVICE_CREATE_CALLBACK コールバック関数を呼び出します。 コールバック関数が呼び出されると、デバイスはレジストリにバッキングを持ち、 hSwDevice ハンドルを使用してソフトウェア デバイス API 関数の呼び出しを行うことができます。 また、作成されたデバイスのデバイスで動作する他の API を使用することもできます。

デバイスの PnP 列挙は、デバイスが実行する最初の手順です。 デバイスの PnP 列挙後、デバイスにはレジストリ バッキングのみが含まれており、デバイスに対してプロパティを設定できます。 PnP がデバイスを列挙したからといって、デバイスはまだ起動しておらず、デバイスのドライバーがまだインターフェイスを登録または有効にしていません。 多くの場合、アプリでデバイスを使用する場合は、デバイス インターフェイスの到着を待機することをお勧めします。

メモ コールバック関数は、作成されたデバイスのデバイス インスタンス ID を提供します。 ソフトウェア デバイス API の呼び出し元は、デバイス インスタンス ID 自体を推測したり構築したりしないことをお勧めします。では、コールバック関数によって提供される値を常に使用します。
 
コールバック関数は、任意のスレッド プール スレッドで実行されます。 クライアント アプリは、コールバック関数で必要なだけ多くの作業を実行できます。

Windows 8では、コールバック関数内で SwDeviceClose を呼び出すことはできません。 これを行うと、デッドロックが発生します。 デストラクターの実行時に SwDeviceClose を呼び出す ref counted オブジェクトを解放することに注意してください。 Windows 8.1では、この制限は解除され、コールバック関数内で SwDeviceClose を呼び出すことができます。

CreateResult に渡される HRESULT を常にチェックして、PnP がデバイスを列挙できることを確認します。

要件

要件
サポートされている最小のクライアント Windows 8
サポートされている最小のサーバー Windows Server 2012
対象プラットフォーム デスクトップ
Header swdevice.h

こちらもご覧ください

SwDeviceCreate