共用方式為


取得函式實例物件

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

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

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

初始化時,在可能發生於IStiUSD::Initialize方法中的情況下,迷你驅動程式應查詢功能探索,以獲取代表硬體裝置的適當功能實例物件。 若要完成此查詢,請使用下列程式 (以及相關聯的程式代碼範例):

步驟 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:將條件約束新增至 Instance Collection Query 物件,指定 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),請參閱 取得函式實例物件的程式代碼範例