共用方式為


取得函式實例物件

WIA 迷你驅動程式必須識別目前的硬體裝置及其執行所在的服務。 若要識別這些專案,minidriver 會在執行時間從函式探索服務取得函式實例物件,並讀取裝置屬性。

若要使用函式探索 COM 介面,minidriver 程式碼必須包含 FunctionDiscovery.h 主要標頭檔,可在 Windows Vista SDK 中使用,如下列範例所示。

//
// Web Services Function Discovery main header:
//
#include <FunctionDiscovery.h>

在初始化期間, IStiUSD::Initialize 方法中可能發生的情況,minidriver 應該查詢 Function Discovery,以取得代表硬體裝置的適當函式實例物件。 若要完成此查詢,請使用下列程式 (和相關聯的程式碼範例) :

步驟 1:建立函式探索物件

//
// Function Discovery object
//
IFunctionDiscovery *pFunctionDiscovery = NULL;
CoCreateInstance(__uuidof(FunctionDiscovery),
                 NULL,
                 CLSCTX_INPROC_SERVER,
                 __uuidof(IFunctionDiscovery),
  (void**)&pFunctionDiscovery);

步驟 2:建立實例集合查詢物件

IFunctionInstanceCollectionQuery *pfiCollectionQuery = NULL;
pFunctionDiscovery->CreateInstanceCollectionQuery(FCTN_CATEGORY_PNP,
   NULL,
   FALSE,
   NULL,
   NULL,
   &pfiCollectionQuery);

步驟 3:將條件約束新增至實例集合查詢物件,以指定 PNPX 識別碼, (擷取其值,並使用 IStiDeviceControl::GetMyDevicePortName) 作為查詢準則約束

PROPVARIANT PropVar = {0};
//
// Note that the wszDevicePath value is obtained by the WIA minidriver 
// calling IStiDeviceControl::GetMyDevicePortName during IStiUSD::Initialize
//
PropVariantInit(&PropVar);
PropVar.vt = VT_LPWSTR;
PropVar.pwszVal = (LPWSTR)wszDevicePath; 
pfiCollectionQuery->AddPropertyConstraint(PKEY_PNPX_ID, &PropVar, QC_EQUALS);

步驟 4:執行查詢

IFunctionInstanceCollection *pfiCollection = NULL;
pfiCollectionQuery->Execute(&pfiCollection);

步驟 5:擷取傳回的函式實例物件

//
// Function Instance object that represents our device instance
//
IFunctionInstance *pFunctionInstance;

pfiCollection->Item(0, &m_pFunctionInstance);

如需包含範例類別宣告的程式碼範例 (CWSDDevice) ,請參閱 取得函式實例物件的程式碼範例