IOCTL_SMARTCARD_SET_PROTOCOL IOCTL (winsmcrd.h)
Запрос IOCTL_SMARTCARD_SET_PROTOCOL задает протокол, который драйвер будет использовать для связи с смарт-картой после обнаружения карточки (вставки).
Irp->AssociatedIrp.SystemBuffer Содержит маску протоколов, приемлемых для следующих передач. Маска может быть битовой или из следующих значений:
- 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)