IOCTL_SMARTCARD_SET_PROTOCOL IOCTL (winsmcrd.h)

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

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

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

    • SCARD_PROTOCOL_RAW
    • SCARD_PROTOCOL_T0
    • SCARD_PROTOCOL_T1
    • SCARD_PROTOCOL_DEFAULT
    • SCARD_PROTOCOL_OPTIMAL

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

  • Parameters.DeviceIoControl.InputBufferLength 必须设置为 sizeof (ULONG) 。 驱动程序决定掩码中的哪个协议用于插入的卡。

输出缓冲区

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

输出缓冲区长度

  • Parameters.DeviceIoControl.OutputBufferLength 的大小必须为 (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 值

要求

要求
Header winsmcrd.h

另请参阅

近场通信 (NFC) 设计指南

智能卡设计指南