/***************************************************************************** CreateDeviceFromID Utility for attaching to WIA and getting a root IWiaItem interface *****************************************************************************/ HRESULT CreateDeviceFromId (__in LPWSTR szDeviceId, IWiaItem **ppItem) { IWiaDevMgr *pDevMgr; HRESULT hr = CoCreateInstance (CLSID_WiaDevMgr, NULL, CLSCTX_LOCAL_SERVER, IID_IWiaDevMgr, reinterpret_cast<LPVOID*>(&pDevMgr)); if (SUCCEEDED(hr)) { BSTR strId = SysAllocString (szDeviceId); if (strId) { hr = pDevMgr->CreateDevice (strId, ppItem); SysFreeString (strId); } else { hr = E_OUTOFMEMORY; } pDevMgr->Release (); } return hr; }
int __cdecl _tmain( int, TCHAR *[] ) { // // Initialize COM // HRESULT hr = CoInitialize(NULL); if (SUCCEEDED(hr)) { // // Create the device manager // IWiaDevMgr *pWiaDevMgr = NULL; hr = CreateWiaDeviceManager( &pWiaDevMgr ); if (SUCCEEDED(hr)) { // // Enumerate all of the WIA devices // hr = EnumerateWiaDevices( pWiaDevMgr ); if (FAILED(hr)) { ReportError( TEXT("Error calling EnumerateWiaDevices"), hr ); } // // Release the device manager // pWiaDevMgr->Release(); pWiaDevMgr = NULL; } else { ReportError( TEXT("Error calling CreateWiaDeviceManager"), hr ); } // // Uninitialize COM // CoUninitialize(); } return 0; }