Windows 8 の環境において、Windows Imaging Acquisition (WIA) API の IWiaDevMgr::EnumDeviceInfo または IWiaDevMgr2::EnumDeviceInfo を使用してデバイスの列挙を行うアプリケーションで、現在接続されていないデバイスが検出されることがあります。
本現象は、列挙するデバイスとして WIA_DEVINFO_ENUM_LOCAL を指定した場合にも発生します。このような状況で または メソッドを呼び出すとエラーが発生します。
現象
この問題は、Windows 8 の不具合が原因で発生します。
原因
この問題を回避するには、Windows 8.1 にアップグレードする必要があります。
解決方法
再現手順
-
Windows 8 の環境に WIA 対応デバイスを接続します。
-
WIA 対応デバイスを Windows 8 環境から取り外します。
-
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 では、取り外されたデバイスが列挙されます。