Previous Next

RDF_SET_PROTOCOL

The set protocol callback function selects a transmission protocol for the currently inserted card.

NTSTATUS 
  (*ReaderFunction[RDF_SET_PROTOCOL])(
    PSMARTCARD_EXTENSION  SmartcardExtension
    );

Parameters

Caller must pass the following values to the function on input:
SmartcardExtension->MajorIoControlCode
Contains IOCTL_SMARTCARD_SET_PROTOCOL.
SmartcardExtension->MinorIoControlCode
Contains a bitwise OR of one or more protocols that the caller accepts. The driver must select a protocol that the currently-inserted card supports. It is recommended that the T = 1 protocol be given precedence over the T = 0 protocol.
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.

SmartcardExtension->IoRequest.ReplyBufferLength
Contains the length of the reply buffer.
SmartcardExtension->CardCapabilities.PtsData
Contains the required parameters to perform the PTS request. See PTS_DATA.
The request returns the following values:
SmartcardExtension->IoRequest.ReplyBuffer
Contains the selected protocol.
SmartcardExtension->IoRequest.Information
Is set to sizeof(ULONG).

Return Value

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 value.
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.

Headers

Declared in smclib.h. Include smclib.h.

Comments

It is mandatory for card reader drivers to implement this callback function.

The caller can supply a mask of protocols that it accepts. The driver’s set protocol callback routine selects one of the protocols in the mask and returns the selected protocol in SmartcardExtension->IoRequest.ReplyBuffer.

See Also

SMARTCARD_EXTENSION, PTS_DATA, IOCTL_SMARTCARD_SET_PROTOCOL