Bagikan melalui


Driver Pembaca WDM

Rutinitas yang diperlukan

Rutinitas berikut diperlukan oleh driver pembaca WDM.

DriverEntry

Menginisialisasi objek driver dan tabel pengiriman.

TambahkanDevice

Membuat objek perangkat untuk pembaca kartu pintar. Selain itu, AddDevice dapat memanggil salah satu rutinitas pustaka driver berikut:

Membongkar

Menghapus pengandar dari sistem.

DispatchCreate

-dan-

DispatchClose

Mendukung IRP_MJ_CREATE dan IRP_MJ_CLOSE<, masing-masing. Untuk membuat koneksi ke pembaca, manajer sumber daya mengirim IRP_MJ_CREATE ke driver pembaca. Untuk memutuskan koneksi, manajer sumber daya mengirim IRP_MJ_CLOSE.

DispatchCleanup

Mendukung IRP_MJ_CLEANUP, yang dikirim manajer sumber daya ke driver pembaca untuk membatalkan permintaan I/O yang tertunda.

DispatchPnP

Mendukung IRP_MJ_PNP

DispatchPower

Mendukung IRP_MJ_POWER.

DispatchDeviceControl

Mendukung IRP_MJ_DEVICE_CONTROL dan merupakan titik masuk utama untuk permintaan kartu pintar. Setelah menerima IRP_MJ_DEVICE_CONTROL, DispatchDeviceControl harus segera memanggil SmartcardDeviceControl (WDM), yang merupakan rutinitas pustaka driver kartu pintar yang menangani permintaan kontrol perangkat. Contoh kode berikut menunjukkan cara memanggil rutinitas pustaka ini dari driver WDM:

NTSTATUS
DriverDeviceControl(
    PDEVICE_OBJECT DeviceObject,
    PIRP Irp
    )
{
    PDEVICE_EXTENSION deviceExtension = DeviceObject -&gt; DeviceExtension;

    return SmartcardDeviceControl(
        &(deviceExtension-&gt;SmartcardExtension),
        Irp
        );

Jika tidak dapat menangani IOCTL tertentu yang ditunjukkan dalam panggilan, SmartcardDeviceControl akan memanggil panggilan balik driver untuk permintaan IOCTL yang tidak diketahui.