Microsoft Usbccid Smartcard Reader -umdf 2- Driver Page
[UsbCcidReader_Install.NT.Services] AddService=WudfUsbCcidReader,0x000001fa,WudfServiceInstall
[Standard.NTarm64] %DeviceDesc% = UsbCcidReader_Install, USB\VID_xxxx&PID_xxxx
[Standard.NTamd64] %DeviceDesc% = UsbCcidReader_Install, USB\VID_xxxx&PID_xxxx microsoft usbccid smartcard reader -umdf 2- driver
UsbCcidDevice* context = GetDeviceContext(device); context->m_Device = device;
// CCID Commands NTSTATUS PowerOn(_Out_ PBYTE Atr, _Out_ PDWORD AtrLength); NTSTATUS PowerOff(); NTSTATUS Transmit(_In_ PBYTE Command, _In_ DWORD CommandLen, _Out_ PBYTE Response, _Inout_ PDWORD ResponseLen); NTSTATUS GetSlotStatus(_Out_ PDWORD Status); [UsbCcidReader_Install
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;
// Create device object WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&deviceAttributes, UsbCcidDevice); status = WdfDeviceCreate(&DeviceInit, &deviceAttributes, &device); if (!NT_SUCCESS(status)) return status; m_Device = device
*Device = device; return STATUS_SUCCESS;