IOCTL_SMARTCARD_SET_PROTOCOL IOCTL (winsmcrd.h)

IOCTL_SMARTCARD_SET_PROTOCOL 请求设置驱动程序在检测到卡后用于与智能卡通信的协议(插入)。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

  • Irp->AssociatedIrp.SystemBuffer 包含以下传输可接受的协议掩码。 掩码可以是以下值的按位 OR:

    • SCARD_PROTOCOL_RAW
    • SCARD_PROTOCOL_T0
    • SCARD_PROTOCOL_T1
    • SCARD_PROTOCOL_DEFAULT
    • SCARD_PROTOCOL_OPTIMAL

    最后两个值是额外的位定义,指示驱动程序必须显式执行协议类型选择(PTS),并具有最佳通信参数(SCARD_PROTOCOL_OPTIMAL)或使用卡的隐式协议(SCARD_PROTOCOL_DEFAULT)。 如果卡仅支持一个具有一组通信参数的协议,则忽略位。

  • Parameters.DeviceIoControl.InputBufferLength 必须设置为 sizeof(ULONG)。 驱动程序决定掩码中要与插入卡片一起使用的协议。

输出缓冲区

  • Irp->AssociatedIrp.SystemBuffer 驱动程序在此处存储所选协议(例如,SCARD_PROTOCOL_T1)。 只能设置一位出掩码。

输出缓冲区长度

  • Parameters.DeviceIoControl.OutputBufferLength 必须为 sizeof(ULONG)。

状态块

Irp->IoStatus.Information 必须设置为 sizeof(ULONG)。

Irp->IoStatus.Status 设置为以下值之一。

价值 意义
STATUS_SUCCESS 已成功选择协议。
STATUS_NO_MEDIA 读取器中未检测到智能卡。
STATUS_IO_TIMEOUT 作超时。
STATUS_NOT_SUPPORTED 智能卡不支持任何请求的协议。
STATUS_INVALID_DEVICE_REQUEST 掩码不包含已知的协议。

有关详细信息,请参阅 NTSTATUS 值

要求

要求 价值
标头 winsmcrd.h

另请参阅

近场通信(NFC)设计指南

智能卡设计指南