void UsbCcidDevice::EvtIoDeviceControl(WDFQUEUE Queue, WDFREQUEST Request, size_t OutputBufferLength, size_t InputBufferLength, ULONG IoControlCode) WDFDEVICE device = WdfIoQueueGetDevice(Queue); UsbCcidDevice* context = GetDeviceContext(device); NTSTATUS status = STATUS_NOT_SUPPORTED;
private: UsbCcidDevice( In WDFDEVICE Device); ~UsbCcidDevice(); microsoft usbccid smartcard reader -umdf 2- driver
return SendCcidCommand(&powerOnCmd, sizeof(powerOnCmd), Atr, AtrLength); void UsbCcidDevice::EvtIoDeviceControl(WDFQUEUE Queue
NTSTATUS Initialize(); NTSTATUS ConfigureUsbTarget(); NTSTATUS CreateIoQueues(); UsbCcidDevice* context = GetDeviceContext(device)
switch (IoControlCode) case IOCTL_SMARTCARD_POWER: // Handle power control status = context->HandlePowerControl(Request); break; case IOCTL_SMARTCARD_TRANSMIT: // Handle APDU transmit status = context->HandleTransmit(Request); break; case IOCTL_SMARTCARD_GET_STATE: // Get slot status status = context->HandleGetStatus(Request); break; default: status = STATUS_INVALID_DEVICE_REQUEST; break;