Melaporkan Status Daring Perangkat
Layanan WIA memeriksa status online perangkat WIA dengan memanggil metode IStiUSD::GetStatus . Minidriver WIA harus memeriksa status online perangkat keras saat ini dan melaporkan hasilnya.
Layanan WIA memanggil metode IStiUSD::GetStatus untuk dua operasi utama:
Memeriksa status online perangkat.
Polling untuk peristiwa perangkat, seperti peristiwa tombol pendorongan.
Menentukan permintaan operasi dapat dilakukan dengan memeriksa anggota StatusMask dari struktur STI_DEVICE_STATUS . Anggota StatusMask dapat berupa salah satu permintaan berikut.
STI_DEVSTATUS_ONLINE_STATE
Periksa apakah perangkat sedang online.
STI_DEVSTATUS_EVENTS_STATE
Periksa peristiwa perangkat.
STI_DEVSTATUS_ONLINE_STATE
Permintaan operasi ini harus dilakukan dengan mengatur anggota dwOnlineState dari struktur STI_DEVICE_STATUS.
STI_DEVSTATUS_EVENTS_STATE
Permintaan operasi ini harus dilakukan dengan mengatur anggota dwEventHandlingState dari struktur STI_DEVICE_STATUS. Nilai yang harus digunakan adalah STI_EVENTHANDLING_PENDING. (Perangkat memiliki peristiwa tertunda dan menunggu untuk melaporkannya ke layanan WIA.)
Ketika STI_EVENTHANDLING_PENDING diatur, layanan WIA disinyalir bahwa suatu peristiwa telah terjadi di driver WIA. Layanan WIA memanggil metode IStiUSD::GetNotificationData untuk mendapatkan informasi selengkapnya tentang peristiwa tersebut.
Metode IStiUSD::GetNotificationData dipanggil untuk peristiwa yang dijajaki dan mengganggu peristiwa. Dalam metode inilah Anda harus mengisi informasi peristiwa yang tepat untuk kembali ke layanan WIA.
Catatan Selalu hapus bendera STI_EVENTHANDLING_PENDING di anggota dwEventHandlingState untuk memastikan bahwa bendera tersebut diatur dengan benar saat peristiwa perangkat terjadi.
Contoh berikut menunjukkan implementasi metode IStiUSD::GetStatus .
STDMETHODIMP CWIADevice::GetStatus(PSTI_DEVICE_STATUS pDevStatus)
{
//
// If the caller did not pass in the correct parameters,
// then fail the call with E_INVALIDARG.
//
if(!pDevStatus)
{
return E_INVALIDARG;
}
HRESULT hr = S_OK;
//
// If we are asked, verify the device is online.
//
if (pDevStatus->StatusMask & STI_DEVSTATUS_ONLINE_STATE) {
//
// assume the device is OFF-LINE before continuing. This will
// validate that the online check was successful.
//
pDevStatus->dwOnlineState = STI_ONLINESTATE_OFFLINE;
if(MyDeviceIsOnlineStatus()) {
//
// device is ON-LINE and operational
//
pDevStatus->dwOnlineState |= STI_ONLINESTATE_OPERATIONAL;
} else {
//
// device is OFF-LINE and NOT operational
//
}
}
return S_OK;
}
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk