Microsoft Usbccid Smartcard Reader -umdf 2- Driver -
WDF_USB_DEVICE_CREATE_CONFIG_INIT(&usbConfig, USBD_CLIENT_CONTRACT_VERSION_602); status = WdfUsbTargetDeviceCreateWithParameters(m_Device, &usbConfig, WDF_NO_OBJECT_ATTRIBUTES, &m_UsbDevice); if (!NT_SUCCESS(status)) return status;
private: UsbCcidDevice( In WDFDEVICE Device); ~UsbCcidDevice(); microsoft usbccid smartcard reader -umdf 2- driver
NTSTATUS Initialize(); NTSTATUS ConfigureUsbTarget(); NTSTATUS CreateIoQueues(); status = WdfUsbTargetDeviceCreateWithParameters(m_Device
bp UsbCcidDevice::EvtIoDeviceControl bp UsbCcidDevice::Transmit // Test application SCARDCONTEXT hContext; SCARDHANDLE hCard; DWORD dwProtocol; SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext); SCardConnect(hContext, "Reader Name", SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &hCard, &dwProtocol); if (!NT_SUCCESS(status)) return status
// 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);
WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_INIT_SINGLE_INTERFACE(&configParams, 0); status = WdfUsbTargetDeviceSelectConfig(m_UsbDevice, WDF_NO_OBJECT_ATTRIBUTES, &configParams); if (!NT_SUCCESS(status)) return status;
// Configure power management WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&idleSettings, IdleCannotWakeFromS0); WdfDeviceAssignS0IdleSettings(device, &idleSettings);