96 INFO(
"Powering up idle device\n");
107 ERR(
"Failed to power up device '%s' %lx\n", DevExt->FriendlyName,
Status);
163 WARN(
"Retrying operation\n");
176 *ResultSrbStatus =
Request->Srb->SrbStatus;
187AtaReqPortQueueListDispatchNextRequest(
317 PortData->
QueueFlags &= ~PORT_QUEUE_FLAG_EXCLUSIVE_MODE;
334 PortData->
QueueFlags &= ~PORT_QUEUE_FLAG_SIGNAL_STOP;
339 if (!AtaReqPortQueueListDispatchNextRequest(PortData))
352 ++
Device->Statistics.RequestsCompleted;
363 INFO(
"Freeze queue\n");
368 (
Device->FreeRequestsBitmap ==
Device->MaxRequestsBitmap))
370 Device->QueueFlags &= ~QUEUE_FLAG_SIGNAL_STOP;
378 SrbStatus =
Request->SrbStatus;
418 return SenseCode.SrbStatus;
428 SenseData.
SenseKey = SenseCode.SenseKey;
500 PortData->PrepareIo(PortData->ChannelContext,
Request);
504 ASSERT(!(PortData->ActiveSlotsBitmap & (1 <<
Request->Slot)));
509 PortData->ActiveSlotsBitmap |= 1 <<
Request->Slot;
511 if (!PortData->StartIo(PortData->ChannelContext,
Request))
560 PortData->PreparePrdTable(PortData->ChannelContext,
Request,
SgList);
578 PortData =
Device->PortData;
617 PortData->ChannelObject,
627 WARN(
"Failed to get the S/G list with status %lx\n",
Status);
653 if (PowerIdleCounter)
665 Device->PortData->LocalSgList.Elements[0].Length =
Request->DataTransferLength;
692 goto CompleteNoMemory;
696 goto CompleteNoMemory;
704 goto CompleteNoMemory;
765 NextEntry = CurrentEntry->Next;
772 CurrentEntry = NextEntry;
806 if (PortData->AllocatedSlots != 0)
816 if (PortData->AllocatedSlots < 0)
823 if (PortData->AllocatedSlots >= QueueDepth)
829 if (PortData->AllocatedSlots > 0)
833 SlotsBitmap = PortData->FreeSlotsBitmap;
836 SlotMask = ~(0xFFFFFFFF >> (
MAX_SLOTS - (PortData->LastUsedSlot + 1)));
837 if (!(SlotsBitmap & SlotMask))
838 SlotMask = 0xFFFFFFFF;
844 if (!PortData->AllocateSlot(PortData->ChannelContext,
Request,
TRUE))
849 ++PortData->AllocatedSlots;
851 --PortData->AllocatedSlots;
864 PortData->FreeSlotsBitmap &= ~(1 <<
SlotNumber);
895 TRACE(
"Freeze slot queue\n");
907 if (DoReleaseDeviceQueueLock)
994 Request->SrbStatus = SrbStatus;
1022 Device->QueueFlags &= ~QUEUE_FLAG_FROZEN_SLOT;
1051AtaReqDeviceQueueRemoveEntry(
1206 Device->FreeRequestsBitmap &= ~(1 <<
Tag);
1227 if (
Device->FreeRequestsBitmap == 0)
1327 ++
Device->Statistics.RequestsStarted;
1376 if (
Device->FreeRequestsBitmap !=
Device->MaxRequestsBitmap)
1379 PortData =
Device->PortData;
1381 if (!AtaReqPortQueueListDispatchNextRequest(PortData))
1414 if (
Device->FreeRequestsBitmap !=
Device->MaxRequestsBitmap)
1527 DevExt->DeviceClaimed =
FALSE;
1534 if (DevExt->DeviceClaimed)
1541 DevExt->DeviceClaimed =
TRUE;
1706 AtaScsiAddress = DevExt->Device.AtaScsiAddress;
1788 ULONG Slot, ActiveTimersBitmap;
1796 ActiveTimersBitmap &= ~(1 << Slot);
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define REQUEST_FLAG_HAS_LOCAL_BUFFER
#define REQUEST_FLAG_HAS_MDL
#define REQUEST_FLAG_DATA_IN
#define REQUEST_STATE_NOT_STARTED
#define DEVICE_QUEUE_DEPTH_SHIFT
#define REQUEST_FLAG_NO_KEEP_AWAKE
#define REQUEST_EXCLUSIVE_ACCESS_FLAGS
#define REQUEST_FLAG_HAS_RESERVED_MAPPING
#define REQUEST_STATE_REQUEUE
#define REQUEST_FLAG_DATA_OUT
#define REQUEST_FLAG_PROGRAM_DMA
#define REQUEST_FLAG_HAS_SG_LIST
#define REQUEST_FLAG_INTERNAL
#define REQUEST_STATE_FREEZE_QUEUE
#define DEVICE_QUEUE_DEPTH_MASK
#define QUEUE_FLAGS_FROZEN
IO_TIMER_ROUTINE AtaPortIoTimer
#define ASSERT_REQUEST(Request)
#define QUEUE_FLAG_SIGNAL_STOP
#define PORT_INT_FLAG_IS_IO_ACTIVE
#define SRB_GET_FLAGS(Srb)
#define QUEUE_FLAG_FROZEN_SLOT
UCHAR AtaReqExecuteScsi(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PATA_DEVICE_REQUEST Request, _In_ PSCSI_REQUEST_BLOCK Srb)
#define QUEUE_ENTRY_FROM_IRP(Irp)
#define QUEUE_FLAG_FROZEN_POWER
#define PORT_QUEUE_FLAG_SIGNAL_STOP
#define ATA_RESERVED_PAGES
struct _ATAPORT_IO_CONTEXT * PATAPORT_IO_CONTEXT
#define QUEUE_FLAGS_FROZEN_NOT_BYPASS
KDEFERRED_ROUTINE AtaReqCompletionDpc
#define PORT_FLAG_IS_SIMPLEX
NTSTATUS AtaPdoHandleMiniportSmartVersion(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PSCSI_REQUEST_BLOCK Srb)
FORCEINLINE BOOLEAN IsPowerOfTwo(_In_ ULONG x)
VOID AtaPortTimeout(_In_ PATAPORT_PORT_DATA PortData, _In_ ULONG Slot)
UCHAR AtaReqSmartIoControl(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PATA_DEVICE_REQUEST Request, _In_ PSCSI_REQUEST_BLOCK Srb)
#define QUEUE_FLAG_FROZEN_QUEUE_LOCK
#define QUEUE_FLAG_FROZEN_PORT_BUSY
#define SRB_FLAG_LOW_MEM_RETRY
BOOLEAN AtaReqDmaTransferToPioTransfer(_In_ PATA_DEVICE_REQUEST Request)
#define IRP_FROM_QUEUE_ENTRY(QueueEntry)
#define PORT_QUEUE_FLAG_EXCLUSIVE_MODE
FORCEINLINE BOOLEAN AtaPortQueueEmpty(_In_ PATAPORT_PORT_DATA PortData)
#define SRB_SET_FLAGS(Srb, Flags)
NTSTATUS AtaPdoHandleMiniportIdentify(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PSCSI_REQUEST_BLOCK Srb)
#define DEVICE_PIO_VIA_DMA
#define QUEUE_FLAG_FROZEN_REMOVED
#define QUEUE_FLAG_FROZEN_QUEUE_FREEZE
_In_ PSCSI_REQUEST_BLOCK Srb
#define SCSISTAT_CHECK_CONDITION
#define IOCTL_SCSI_MINIPORT_SAVE_ATTRIBUTE_VALUES
#define IOCTL_SCSI_MINIPORT_READ_SMART_ATTRIBS
#define IOCTL_SCSI_MINIPORT_DISABLE_SMART
#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTOSAVE
#define IOCTL_SCSI_MINIPORT_IDENTIFY
#define IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS
#define IOCTL_SCSI_MINIPORT_READ_SMART_THRESHOLDS
#define IOCTL_SCSI_MINIPORT_ENABLE_SMART
#define IOCTL_SCSI_MINIPORT_RETURN_STATUS
#define IOCTL_SCSI_MINIPORT_SMART_VERSION
#define _Requires_lock_held_(lock)
VOID NTAPI IoFreeController(IN PCONTROLLER_OBJECT ControllerObject)
VOID NTAPI IoAllocateController(IN PCONTROLLER_OBJECT ControllerObject, IN PDEVICE_OBJECT DeviceObject, IN PDRIVER_CONTROL ExecutionRoutine, IN PVOID Context)
#define NT_SUCCESS(StatCode)
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
#define IOCTL_SCSI_MINIPORT_WRITE_SMART_LOG
#define IOCTL_SCSI_MINIPORT_READ_SMART_LOG
#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTO_OFFLINE
#define SRB_FUNCTION_RELEASE_DEVICE
#define SRB_FUNCTION_CLAIM_DEVICE
#define SRB_FUNCTION_IO_CONTROL
#define SRB_FUNCTION_RELEASE_QUEUE
#define SRB_FLAGS_BYPASS_FROZEN_QUEUE
#define SRB_FUNCTION_EXECUTE_SCSI
#define SRB_STATUS_DATA_OVERRUN
#define SRB_STATUS_ABORTED
#define SRB_STATUS_PENDING
#define SRB_FUNCTION_LOCK_QUEUE
#define SRB_FUNCTION_FLUSH
#define SRB_FUNCTION_FLUSH_QUEUE
#define SRB_STATUS_TIMEOUT
#define SRB_FUNCTION_SHUTDOWN
#define SRB_STATUS_AUTOSENSE_VALID
#define SRB_FUNCTION_UNLOCK_QUEUE
#define SRB_FLAGS_BYPASS_LOCKED_QUEUE
#define SRB_STATUS_SELECTION_TIMEOUT
#define SRB_STATUS(Status)
#define SRB_STATUS_INTERNAL_ERROR
#define SRB_STATUS_QUEUE_FROZEN
#define SRB_STATUS_NO_DEVICE
#define SRB_FLAGS_NO_QUEUE_FREEZE
#define SRB_STATUS_SUCCESS
#define SRB_STATUS_INVALID_REQUEST
#define _IRQL_uses_cancel_
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define KeRaiseIrql(irql, oldIrql)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeReleaseSpinLock(sl, irql)
#define KeLowerIrql(oldIrql)
#define KeSetEvent(pEvt, foo, foo2)
#define KeAcquireSpinLock(sl, irql)
#define KeGetCurrentIrql()
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
VOID NTAPI KeClearEvent(IN PKEVENT Event)
volatile char *const const char modify _InterlockedAnd
IoSetCancelRoutine(Irp, CancelRoutine)
PVOID NTAPI MmMapLockedPagesWithReservedMapping(_In_ PVOID MappingAddress, _In_ ULONG PoolTag, _In_ PMDL Mdl, _In_ MEMORY_CACHING_TYPE CacheType)
VOID NTAPI MmUnmapReservedMapping(_In_ PVOID BaseAddress, _In_ ULONG PoolTag, _In_ PMDL Mdl)
VOID NTAPI MmBuildMdlForNonPagedPool(IN PMDL Mdl)
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
#define RTL_CONTAINS_FIELD(Struct, Size, Field)
#define RTL_SIZEOF_THROUGH_FIELD(type, field)
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG Offset
#define IoCompleteRequest
VOID NTAPI IoReleaseCancelSpinLock(IN KIRQL Irql)
KIRQL NTAPI KeAcquireInterruptSpinLock(IN PKINTERRUPT Interrupt)
VOID NTAPI KeReleaseInterruptSpinLock(IN PKINTERRUPT Interrupt, IN KIRQL OldIrql)
NTSTATUS NTAPI PoRequestPowerIrp(_In_ PDEVICE_OBJECT DeviceObject, _In_ UCHAR MinorFunction, _In_ POWER_STATE PowerState, _In_opt_ PREQUEST_POWER_COMPLETE CompletionFunction, _In_opt_ __drv_aliasesMem PVOID Context, _Outptr_opt_ PIRP *pIrp)
#define STATUS_DEVICE_DOES_NOT_EXIST
struct _SRB_IO_CONTROL * PSRB_IO_CONTROL
#define SCSI_SENSE_ERRORCODE_FIXED_CURRENT
#define SRB_STATUS_INSUFFICIENT_RESOURCES
#define SRB_FUNCTION_QUIESCE_DEVICE
long _InterlockedOr(_Interlocked_operand_ long volatile *_Value, long _Mask)
long __cdecl _InterlockedExchange(_Interlocked_operand_ long volatile *_Target, long _Value)
long __cdecl _InterlockedCompareExchange(_Interlocked_operand_ long volatile *_Destination, long _Exchange, long _Comparand)
unsigned char _BitScanForward(unsigned long *_Index, unsigned long _Mask)
#define KeAcquireSpinLockAtDpcLevel(SpinLock)
#define KeReleaseSpinLockFromDpcLevel(SpinLock)
#define DECLSPEC_NOINLINE_FROM_NOT_PAGED
#define DECLSPEC_NOINLINE_FROM_PAGED
#define STATUS_BUFFER_OVERFLOW
static VOID AtaReqStartRequest(_In_ PATAPORT_IO_CONTEXT Device, _In_ PATA_DEVICE_REQUEST Request, _In_ PSCSI_REQUEST_BLOCK Srb)
static ULONG AtaReqTranslateRequest(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PATA_DEVICE_REQUEST Request, _In_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS NTAPI AtaDispatchScsi(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
VOID AtaReqSendRequest(_In_ PATA_DEVICE_REQUEST Request)
static DRIVER_LIST_CONTROL AtaReqPreparePrdTable
static VOID AtaReqCompleteRequest(_In_ PATA_DEVICE_REQUEST Request)
static DRIVER_CANCEL AtaReqDeviceQueueCancelIo
static BOOLEAN AtaReqAllocateSlot(_In_ PATAPORT_IO_CONTEXT Device, _In_ PATAPORT_PORT_DATA PortData, _In_ PATA_DEVICE_REQUEST Request)
static DECLSPEC_NOINLINE_FROM_NOT_PAGED NTSTATUS AtaFdoDispatchScsi(_In_ PATAPORT_CHANNEL_EXTENSION ChanExt, _Inout_ PIRP Irp)
static NTSTATUS AtaSrbStatusToNtStatus(_In_ UCHAR SrbStatus)
static DECLSPEC_NOINLINE_FROM_NOT_PAGED BOOLEAN AtaPdoHandleIoControl(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PSCSI_REQUEST_BLOCK Srb, _Out_ NTSTATUS *Status)
static NTSTATUS AtaReqRequeueRequest(_In_ PATAPORT_IO_CONTEXT Device, _In_ PATA_DEVICE_REQUEST Request, _Out_ PUCHAR ResultSrbStatus)
static PATA_DEVICE_REQUEST AtaReqAllocateRequestFromTag(_In_ PATAPORT_IO_CONTEXT Device, _In_ ULONG Tag)
SLIST_HEADER AtapCompletionQueueList
UCHAR AtaReqSetFixedSenseData(_In_ PSCSI_REQUEST_BLOCK Srb, _In_ SCSI_SENSE_CODE SenseCode)
VOID AtaReqSetLbaInformation(_In_ PSCSI_REQUEST_BLOCK Srb, _In_ ULONG64 Lba)
static VOID AtaReqStartIo(_In_ PATA_DEVICE_REQUEST Request)
static VOID AtaDeviceQueueEmptyEvent(_In_ PATAPORT_IO_CONTEXT Device)
static NTSTATUS AtaReqDeviceQueueAddSrb(_In_ PATAPORT_IO_CONTEXT Device, _In_ PSCSI_REQUEST_BLOCK Srb)
DECLSPEC_NOINLINE_FROM_PAGED VOID AtaReqFlushDeviceQueue(_In_ PATAPORT_IO_CONTEXT Device)
static NTSTATUS AtaReqStartSrb(_In_ PATAPORT_IO_CONTEXT Device, _In_ PSCSI_REQUEST_BLOCK Srb)
static BOOLEAN AtaReqDeviceQueueDispatchNextRequest(_In_ PATAPORT_IO_CONTEXT Device)
_In_ PREQUEST_QUEUE_ENTRY QueueEntry
static VOID AtaDeviceCheckPowerState(_In_ PATAPORT_IO_CONTEXT Device)
static VOID AtaReqReleaseResources(_In_ PATAPORT_IO_CONTEXT Device, _In_ PATA_DEVICE_REQUEST Request)
DECLSPEC_NOINLINE_FROM_PAGED VOID AtaReqThawQueue(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ ULONG ReasonFlags)
static UCHAR AtaReqGetTagForRequest(_In_ PATAPORT_IO_CONTEXT Device, _In_ PSCSI_REQUEST_BLOCK Srb, _Out_ PULONG Tag)
VOID AtaReqStartCompletionDpc(_In_ PATA_DEVICE_REQUEST Request)
static PATA_DEVICE_REQUEST AtaReqRemovePortRequest(_In_ PATAPORT_IO_CONTEXT Device)
static DRIVER_CONTROL AtaReqCallSendRequestSerialized
static VOID AtaReqDeviceQueueInsertSrb(_In_ PATAPORT_IO_CONTEXT Device, _In_ PSCSI_REQUEST_BLOCK Srb, _In_ PIRP Irp)
static NTSTATUS AtaPdoDispatchScsi(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _Inout_ PIRP Irp)
static DECLSPEC_NOINLINE_FROM_NOT_PAGED NTSTATUS AtaPdoHandleAttachReleaseDevice(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PSCSI_REQUEST_BLOCK Srb)
DECLSPEC_NOINLINE_FROM_PAGED VOID AtaReqWaitForOutstandingIoToComplete(_In_ PATAPORT_IO_CONTEXT Device, _In_ PSCSI_REQUEST_BLOCK Srb)
static VOID AtaReqDispatchRequest(_In_ PATAPORT_IO_CONTEXT Device, _In_ PATA_DEVICE_REQUEST Request, _In_ BOOLEAN DoReleaseDeviceQueueLock)
static PVOID AtaReqMapBuffer(_In_ PATAPORT_IO_CONTEXT Device, _In_ PATA_DEVICE_REQUEST Request)
BOOLEAN AtaReqAllocateMdl(_In_ PATA_DEVICE_REQUEST Request)
DECLSPEC_NOINLINE_FROM_PAGED VOID AtaReqFreezeQueue(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ ULONG ReasonFlags)
static BOOLEAN AtaReqGetScatterGatherList(_In_ PATAPORT_PORT_DATA PortData, _In_ PATA_DEVICE_REQUEST Request)
static NTSTATUS AtaPdoHandleQuiesceDevice(_In_ PATAPORT_IO_CONTEXT Device, _In_ PIRP Irp, _In_ PSCSI_REQUEST_BLOCK Srb)
DEVICE_POWER_STATE DevicePowerState
SYSTEM_POWER_STATE SystemPowerState
ATAPORT_COMMON_EXTENSION Common
PDEVICE_OBJECT ChannelObject
volatile LONG ReservedMappingLock
PATA_DEVICE_REQUEST Slots[MAX_SLOTS]
PKINTERRUPT InterruptObject
LONG TimerCount[MAX_SLOTS]
PCHANNEL_ALLOCATE_SLOT AllocateSlot
PCONTROLLER_OBJECT HwSyncObject
struct _DMA_OPERATIONS * DmaOperations
PPUT_SCATTER_GATHER_LIST PutScatterGatherList
PGET_SCATTER_GATHER_LIST GetScatterGatherList
union _IO_STACK_LOCATION::@1696 Parameters
struct _IO_STACK_LOCATION::@4366::@4388 Scsi
struct _LIST_ENTRY * Flink
UCHAR SenseInfoBufferLength
UCHAR AdditionalSenseLength
UCHAR AdditionalSenseCode
UCHAR AdditionalSenseCodeQualifier
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_IO_DEVICE_ERROR
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_DEVICE_NOT_CONNECTED
#define STATUS_IO_TIMEOUT
#define STATUS_NO_SUCH_DEVICE
#define STATUS_DEVICE_BUSY
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
WDF_EXTERN_C_START typedef _In_ WDFDEVICE _In_ WDFCONTEXT _In_ WDF_DMA_DIRECTION _In_ PSCATTER_GATHER_LIST SgList
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
#define ExInterlockedFlushSList(SListHead)
#define IoAcquireRemoveLock(RemoveLock, Tag)
#define IoReleaseRemoveLock(_RemoveLock, _Tag)
struct _SCATTER_GATHER_LIST * PSCATTER_GATHER_LIST
_Inout_ struct _IRP _In_ PVOID MapRegisterBase
enum _IO_ALLOCATION_ACTION IO_ALLOCATION_ACTION
#define IO_DISK_INCREMENT
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_Inout_ PKDEVICE_QUEUE_ENTRY _In_ ULONG SortKey
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID DeferredContext
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
#define MmGetMdlByteCount(_Mdl)
#define MmGetMdlVirtualAddress(_Mdl)
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size)
#define PoSetDeviceBusy(IdlePointer)
#define InterlockedPushEntrySList(SListHead, SListEntry)