WDM リーダー ドライバー

必須ルーチン

次のルーチンは、WDM リーダー ドライバーで必須です。

DriverEntry

ドライバー オブジェクトとディスパッチ テーブルを初期化します。

AddDevice

スマート カード リーダーのデバイス オブジェクトを作成します。 さらに、AddDevice は、次のドライバー ライブラリ ルーチンのいずれかを呼び出すことができます。

Unload

システムからドライバーを削除します。

DispatchCreate

および

DispatchClose

IRP_MJ_CREATEIRP_MJ_CLOSE< をそれぞれサポートします。 リーダーへの接続を確立するために、リソース マネージャーはリーダー ドライバーに IRP_MJ_CREATE を送信します。 接続を切断するために、リソース マネージャーは IRP_MJ_CLOSE を送信します。

DispatchCleanup

保留中の I/O 要求を取り消すためにリソース マネージャーがリーダー ドライバーに送信する IRP_MJ_CLEANUP をサポートします。

DispatchPnP

IRP_MJ_PNP をサポートする

DispatchPower

IRP_MJ_POWER をサポートします。

DispatchDeviceControl

IRP_MJ_DEVICE_CONTROL をサポートする、スマート カード要求のメインエントリ ポイントです。 IRP_MJ_DEVICE_CONTROL を受信すると、DispatchDeviceControl は、デバイス制御要求を処理するスマート カード ドライバー ライブラリ ルーチンである SmartcardDeviceControl (WDM) を直ちに呼び出す必要があります。 次のコード例は、WDM ドライバーからこのライブラリ ルーチンを呼び出す方法を示しています。

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

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

呼び出しで示されている特定の IOCTL を処理できない場合、SmartcardDeviceControl が不明な IOCTL 要求に対してドライバーのコールバックを呼び出します。