25 if (
Irp->PendingReturned)
66 Stack->Parameters.QueryInterface.InterfaceType = (
LPGUID)&USB_BUS_INTERFACE_USBDI_GUID;
67 Stack->Parameters.QueryInterface.Version = 2;
69 Stack->Parameters.QueryInterface.InterfaceSpecificData =
NULL;
107 IoStack->
Parameters.DeviceIoControl.InputBufferLength = UrbRequest->UrbHeader.Length;
208 DeviceExtension->MaxLUN = *
Buffer;
218 DeviceExtension->MaxLUN = 0;
257 DPRINT1(
"[USBSTOR] No capacity length\n");
274 DPRINT1(
"BlockCount %x BlockLength %x Code %x\n", BlockCount, BlockLength,
Descriptor->Code);
276 if (BlockLength == 512 && BlockCount == 1440)
279 *MediumTypeCode = 0x1E;
282 else if (BlockLength == 1024 && BlockCount == 1232)
285 *MediumTypeCode = 0x93;
288 else if (BlockLength == 512 && BlockCount == 2880)
291 *MediumTypeCode = 0x94;
VOID FreeItem(IN PVOID Item)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
return STATUS_NOT_SUPPORTED
#define USB_BULK_RESET_DEVICE
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
#define IOCTL_INTERNAL_USB_SUBMIT_URB
#define STATUS_MORE_PROCESSING_REQUIRED
PIRP NTAPI IoBuildSynchronousFsdRequest(IN ULONG MajorFunction, IN PDEVICE_OBJECT DeviceObject, IN PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER StartingOffset, IN PKEVENT Event, IN PIO_STATUS_BLOCK IoStatusBlock)
IN BOOLEAN OUT PSTR Buffer
NTSTATUS NTAPI USBSTOR_GetBusInterface(IN PDEVICE_OBJECT DeviceObject, OUT PUSB_BUS_INTERFACE_USBDI_V2 BusInterface)
#define USBD_TRANSFER_DIRECTION_IN
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
ULONG TransferBufferLength
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFQUEUE _In_ _Strict_type_match_ WDF_REQUEST_TYPE RequestType
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
NTSTATUS USBSTOR_ResetDevice(IN PDEVICE_OBJECT DeviceObject, IN PFDO_DEVICE_EXTENSION DeviceExtension)
_In_ PVOID _In_ ULONG Event
NTSTATUS USBSTOR_ClassRequest(IN PDEVICE_OBJECT DeviceObject, IN PFDO_DEVICE_EXTENSION DeviceExtension, IN UCHAR RequestType, IN USHORT Index, IN ULONG TransferFlags, IN ULONG TransferBufferLength, IN PVOID TransferBuffer)
#define USBD_TRANSFER_DIRECTION_OUT
struct UFI_CAPACITY_DESCRIPTOR * PUFI_CAPACITY_DESCRIPTOR
struct _INTERFACE * PINTERFACE
NTSTATUS NTAPI USBSTOR_SyncForwardIrpCompletionRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
#define NT_SUCCESS(StatCode)
_In_ WDFCOLLECTION _In_ ULONG Index
#define IRP_MN_QUERY_INTERFACE
#define IRP_MJ_INTERNAL_DEVICE_CONTROL
#define ExAllocatePoolWithTag(hernya, size, tag)
IO_COMPLETION_ROUTINE SyncForwardIrpCompletionRoutine
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
BOOLEAN USBSTOR_IsFloppy(IN PUCHAR Buffer, IN ULONG BufferLength, OUT PUCHAR MediumTypeCode)
struct UFI_CAPACITY_FORMAT_HEADER * PUFI_CAPACITY_FORMAT_HEADER
struct _BUS_INTERFACE_STANDARD BUS_INTERFACE_STANDARD
#define KeInitializeEvent(pEvt, foo, foo2)
#define URB_FUNCTION_CLASS_INTERFACE
#define USB_BULK_GET_MAX_LUN
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS USBSTOR_SyncUrbRequest(IN PDEVICE_OBJECT DeviceObject, OUT PURB UrbRequest)
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
VOID NTAPI IoFreeIrp(IN PIRP Irp)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
#define RtlZeroMemory(Destination, Length)
PIRP NTAPI IoAllocateIrp(IN CCHAR StackSize, IN BOOLEAN ChargeQuota)
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
#define ExFreePoolWithTag(_P, _T)
NTSTATUS USBSTOR_GetMaxLUN(IN PDEVICE_OBJECT DeviceObject, IN PFDO_DEVICE_EXTENSION DeviceExtension)
#define STATUS_DEVICE_DATA_ERROR