次の方法で共有


SwDeviceClose 関数 (swdevice.h)

ソフトウェア デバイス ハンドルを閉じます。 ハンドルが閉じられると、SwDevice の有効期間が SWDeviceLifetimeHandle の場合、PnP はデバイスの "取り外し" プロセスを開始します。 デバイスは、親デバイスの子として報告されなくなります。

構文

void SwDeviceClose(
  [in] HSWDEVICE hSwDevice
);

パラメーター

[in] hSwDevice

閉じる HSWDEVICE ハンドル。

戻り値

なし

解説

SwDeviceClose が返された後、オペレーティング システムはSW_DEVICE_CREATE_CALLBACKコールバック関数を呼び出さないことを保証され、進行中のソフトウェア デバイス API 関数への呼び出しは完了することが保証されます。

コールバック関数がまだ呼び出されていない場合でも、 いつでも SwDeviceClose を呼び出すことができます。

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

SwDeviceClose を呼び出すことで、SwDevice の有効期間が SWDeviceLifetimeHandle の場合は、デバイスを "取り外す" プロセスを開始します。 これにより、PnP がデバイスの "突然の削除" を発行する原因となる親の子としてデバイスが報告されなくなります。 SwDeviceClose の呼び出しは、この削除が完了する前に返されます。 ただし、 SwDeviceClose の直後に SwDeviceCreate を安全に呼び出 すことができます。 新しい作成は、前の削除処理が完了するまでキューに入れられ、デバイスが再作成されます。

PnP の削除により、デバイスは "存在しません" になり、デバイスはアンインストールされません。 デバイスの PnP の取り外しは、USB デバイスの取り外しと同じであり、デバイスのすべての永続化されたプロパティの状態が残ります。 SwDeviceClose を呼び出した後にデバイスをアンインストールする場合は、「デバイスのアンインストール」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 8
サポートされている最小のサーバー Windows Server 2012
対象プラットフォーム ユニバーサル
Header swdevice.h
Library Swdevice.lib;Windows 10の OneCoreUAP.lib
[DLL] Cfgmgr32.dll

こちらもご覧ください

SwDeviceCreate