Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Minidriver WIA harus mengidentifikasi perangkat keras saat ini dan layanan yang dijalankannya. Untuk mengidentifikasi item ini, minidriver memperoleh pada run time objek Instans Fungsi dari layanan Penemuan Fungsi dan membaca properti perangkat.
Untuk menggunakan antarmuka COM Penemuan Fungsi, kode minidriver harus menyertakan file header utama FunctionDiscovery.h , yang tersedia di Windows Vista SDK, seperti yang ditunjukkan contoh berikut.
//
// Web Services Function Discovery main header:
//
#include <FunctionDiscovery.h>
Selama inisialisasi, seperti yang mungkin terjadi dalam metode IStiUSD::Initialize , minidriver harus meminta Penemuan Fungsi untuk mendapatkan objek Instans Fungsi yang sesuai yang mewakili perangkat keras. Untuk menyelesaikan kueri ini, gunakan prosedur berikut (dan contoh kode terkait):
Langkah 1: Buat objek Penemuan Fungsi
//
// Function Discovery object
//
IFunctionDiscovery *pFunctionDiscovery = NULL;
CoCreateInstance(__uuidof(FunctionDiscovery),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IFunctionDiscovery),
(void**)&pFunctionDiscovery);
Langkah 2: Membuat objek Kueri Koleksi Instans
IFunctionInstanceCollectionQuery *pfiCollectionQuery = NULL;
pFunctionDiscovery->CreateInstanceCollectionQuery(FCTN_CATEGORY_PNP,
NULL,
FALSE,
NULL,
NULL,
&pfiCollectionQuery);
Langkah 3: Tambahkan batasan ke objek Kueri Koleksi Instans untuk menentukan ID PNPX (nilainya diambil dengan IStiDeviceControl::GetMyDevicePortName) sebagai batasan kueri
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);
Langkah 4: Jalankan kueri
IFunctionInstanceCollection *pfiCollection = NULL;
pfiCollectionQuery->Execute(&pfiCollection);
Langkah 5: Ambil objek Instans Fungsi yang dikembalikan
//
// Function Instance object that represents our device instance
//
IFunctionInstance *pFunctionInstance;
pfiCollection->Item(0, &m_pFunctionInstance);
Untuk contoh kode yang berisi deklarasi kelas sampel (CWSDDevice), lihat Sampel Kode untuk Mendapatkan Objek Instans Fungsi.