PFN_SMC_TRANSMIT function pointer
Mandatory. Handles the request to transmit data to/from reader.
Syntax
typedef NTSTATUS ( *PFN_SMC_TRANSMIT)(
_In_ WDFDEVICE FxDevice,
_In_ WDFREQUEST FxRequest
);
Parameters
FxDevice [in]
Handle to the framework device object.FxRequest [in]
Handle to the framework request object.
Return value
If the function encounters no errors, it must return STATUS_SUCCESS. Otherwise one of the following NTSTATUS values.
Remarks
The client driver must register its implementation with the smart card call extension in the driver's EvtDriverDeviceAdd callback function. For example code that shows how to register, see SmcDeviceInitConfig.
The smart card class extension invokes client driver's PFN_SMC_TRANSMIT callback function when the class extension receives an IOCTL_SMARTCARD_TRANSMIT request from the caller (another driver or an application). The caller supplies a populated SCARD_IO_REQUEST structure in which it requests a specific protocol for the I/O transfer. The framework request object contains that structure.
Before invoking the function, the class extension performs certain validation checks on the incoming request and completes the request with a failure code if the call fails validation checks.
Based on those checks, the client driver can assume the following:
- The card is inserted in the reader and the protocol is selected.
- The requested protocol for data transmission matches the protocol that is currently selected in the .
- The input buffer contained in the framework request object is large enough to hold the SCARD_IO_REQUEST structure and the trailing data bytes to transfer.
The client driver should check the Protocol.Selected member in the SCARD_CARD_CAPABILITIES structure and create a request transmitting data to/from reader depending on the selected protocol. Here are client driver tasks:
- Get input and output buffers from the framework request object by calling SmcCxGetIoRequestParams.
- Call SmcCxGetSmartcardRequestBuffer to allocate memory for request buffer that contains data to send to the card.
- Call SmcCxGetSmartcardReplyBuffer to allocate memory for reply buffer to hold data returned by the card.
- Prepare the data buffer by calling one of these methods:
- Send the data buffer.
- Call WdfRequestSetInformation to set completion status for a specified framework request object.
Requirements
Target platform |
Desktop |
Header |
SmcCx.h on Windows 10 |
See also
SmcCxGetSmartcardRequestBuffer