RDF_SET_PROTOCOL
The RDF_SET_PROTOCOL callback function selects a transmission protocol for the currently inserted card. This callback function is mandatory.
NTSTATUS (*ReaderFunction[RDF_SET_PROTOCOL])(
PSMARTCARD_EXTENSION SmartcardExtension);
Parameters
SmartcardExtension
Points to the smart card extension of the device. SmartcardExtension->MajorIoControlCode must be set to IOCTL_SMARTCARD_SET_PROTOCOL. SmartcardExtension->MinorIoControlCode contains a mask of protocols combined with the bitwise OR operator that the caller accepts for further transmissions:Value Meaning SCARD_PROTOCOL_RAW Selects raw protocol. SCARD_PROTOCOL_T0 Selects the ISO T=0 protocol. SCARD_PROTOCOL_T1 Selects the ISO T=1 protocol. SCARD_PROTOCOL_DEFAULT Do not do PTS selection even if the card only supports one protocol. SCARD_PROTOCOL_OPTIMAL Do PTS selection. SmartcardExtension->IoRequest.ReplyBufferLength contains the length of the reply buffer. On output SmartcardExtension->IoRequest.ReplyBuffer receives the selected protocol, and SmartcardExtension->IoRequest.Information must be set to sizeof(ULONG).
Remarks
The caller can supply a mask of protocols that it accepts. It is the driver's decision to select one protocol out of the mask. After the driver has selected a protocol, it must return the selected protocol in SmartcardExtension->IoRequest.ReplyBuffer.
Return Values
This function returns an NTSTATUS value. Possible values are the following.
| Value | Meaning |
|---|---|
| STATUS_SUCCESS | A protocol was successfully selected. |
| STATUS_NO_MEDIA | No card is in the reader. |
| STATUS_IO_TIMEOUT | The request has timed out. |
| STATUS_BUFFER_TOO_SMALL | The user buffer is not large enough to hold a ULONG. |
| STATUS_INVALID_DEVICE_STATE | The reader is not in the correct state to select a protocol. This is the case when a card is inserted, but not reset. |
| STATUS_INVALID_DEVICE_REQUEST | The mask contains an unknown protocol. |
Requirements
| Runs on | Versions | Defined in | Include | Link to |
|---|---|---|---|---|
| Windows CE OS | 3.0 and later |
Note This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.
Last updated on Tuesday, July 13, 2004
© 1992-2000 Microsoft Corporation. All rights reserved.