Windows 8 において WIA のデバイス列挙で取り外したデバイスが列挙される

現象

Windows 8 の環境において、Windows Imaging Acquisition (WIA) API の IWiaDevMgr::EnumDeviceInfo または IWiaDevMgr2::EnumDeviceInfo を使用してデバイスの列挙を行うアプリケーションで、現在接続されていないデバイスが検出されることがあります。

本現象は、列挙するデバイスとして WIA_DEVINFO_ENUM_LOCAL を指定した場合にも発生します。このような状況で IWiaDevMgr::CreateDevice または IWiaDevMgr2::CreateDevice メソッドを呼び出すとエラーが発生します。

原因

この問題は、Windows 8 の不具合が原因で発生します。

解決方法

この問題を回避するには、Windows 8.1  にアップグレードする必要があります。

詳細

再現手順
  1. Windows 8 の環境に WIA 対応デバイスを接続します。
  2. WIA 対応デバイスを Windows 8 環境から取り外します。
  3. IWiaDevMgr::EnumDeviceInfo または IWiaDevMgr2::EnumDeviceInfo を使用して次のコードのようにデバイスを列挙します。
HRESULT hr; CComPtr<IWiaDevMgr> pWiaDevMgr; CComPtr<IEnumWIA_DEV_INFO> pIEnumWIA_DEV_INFO; hr = pWiaDevMgr.CoCreateInstance(CLSID_WiaDevMgr); // Type your error check code here. hr = pWiaDevMgr->EnumDeviceInfo( WIA_DEVINFO_ENUM_LOCAL, &pIEnumWIA_DEV_INFO); // Type your error check code here.

結果:Windows 8 では、取り外されたデバイスが列挙されます。
プロパティ

文書番号:3002081 - 最終更新日: 2016/09/29 - リビジョン: 1

フィードバック