28#define RTL_USE_AVL_TABLES 0
57#if (NTDDI_VERSION >= NTDDI_WIN8)
66#undef MdlMappingNoExecute
67#define MdlMappingNoExecute 0
68#define NonPagedPoolNx NonPagedPool
69#define NonPagedPoolNxCacheAligned NonPagedPoolCacheAligned
70#undef POOL_NX_ALLOCATION
71#define POOL_NX_ALLOCATION 0
78#define DEBUG_COMP_ID DPFLTR_CLASSPNP_ID
85#define WPP_GUID_CLASSPNP (FA8DE7C4, ACDE, 4443, 9994, C4E2359A9EDB)
86#ifndef WPP_CONTROL_GUIDS
87#define WPP_CONTROL_GUIDS WPP_CONTROL_GUIDS_NORMAL_FLAGS(WPP_GUID_CLASSPNP)
94 #define PTRALIGN DECLSPEC_ALIGN(16)
110#define Add2Ptr(P,I) ((PVOID)((PUCHAR)(P) + (I)))
112#define CLASSP_REG_SUBKEY_NAME (L"Classpnp")
114#define CLASSP_REG_HACK_VALUE_NAME (L"HackMask")
115#define CLASSP_REG_MMC_DETECTION_VALUE_NAME (L"MMCDetectionState")
116#define CLASSP_REG_WRITE_CACHE_VALUE_NAME (L"WriteCacheEnableOverride")
117#define CLASSP_REG_PERF_RESTORE_VALUE_NAME (L"RestorePerfAtCount")
118#define CLASSP_REG_REMOVAL_POLICY_VALUE_NAME (L"UserRemovalPolicy")
119#define CLASSP_REG_IDLE_INTERVAL_NAME (L"IdleInterval")
120#define CLASSP_REG_IDLE_ACTIVE_MAX (L"IdleOutstandingIoMax")
121#define CLASSP_REG_IDLE_PRIORITY_SUPPORTED (L"IdlePrioritySupported")
122#define CLASSP_REG_ACCESS_ALIGNMENT_NOT_SUPPORTED (L"AccessAlignmentQueryNotSupported")
123#define CLASSP_REG_DISBALE_IDLE_POWER_NAME (L"DisableIdlePowerManagement")
124#define CLASSP_REG_IDLE_TIMEOUT_IN_SECONDS (L"IdleTimeoutInSeconds")
125#define CLASSP_REG_DISABLE_D3COLD (L"DisableD3Cold")
126#define CLASSP_REG_QERR_OVERRIDE_MODE (L"QERROverrideMode")
127#define CLASSP_REG_LEGACY_ERROR_HANDLING (L"LegacyErrorHandling")
128#define CLASSP_REG_COPY_OFFLOAD_MAX_TARGET_DURATION (L"CopyOffloadMaxTargetDuration")
130#define CLASS_PERF_RESTORE_MINIMUM (0x10)
131#define CLASS_ERROR_LEVEL_1 (0x4)
132#define CLASS_ERROR_LEVEL_2 (0x8)
133#define CLASS_MAX_INTERLEAVE_PER_CRITICAL_IO (0x4)
135#define FDO_HACK_CANNOT_LOCK_MEDIA (0x00000001)
136#define FDO_HACK_GESN_IS_BAD (0x00000002)
137#define FDO_HACK_NO_SYNC_CACHE (0x00000004)
138#define FDO_HACK_NO_RESERVE6 (0x00000008)
139#define FDO_HACK_GESN_IGNORE_OPCHANGE (0x00000010)
141#define FDO_HACK_VALID_FLAGS (0x0000001F)
142#define FDO_HACK_INVALID_FLAGS (~FDO_HACK_VALID_FLAGS)
158#define NUM_LOCKMEDIAREMOVAL_RETRIES 1
159#define NUM_MODESENSE_RETRIES 1
160#define NUM_MODESELECT_RETRIES 1
161#define NUM_DRIVECAPACITY_RETRIES 1
162#define NUM_THIN_PROVISIONING_RETRIES 32
164#if (NTDDI_VERSION >= NTDDI_WINBLUE)
169#define NUM_IO_RETRIES MAXIMUM_RETRIES
170#define LEGACY_NUM_IO_RETRIES 8
182#define NUM_IO_RETRIES 8
186#define CLASS_FILE_OBJECT_EXTENSION_KEY 'eteP'
187#define CLASSP_VOLUME_VERIFY_CHECKED 0x34
189#define CLASS_TAG_PRIVATE_DATA 'CPcS'
190#define CLASS_TAG_SENSE2 '2ScS'
191#define CLASS_TAG_WORKING_SET 'sWcS'
192#define CLASSPNP_POOL_TAG_GENERIC 'pCcS'
193#define CLASSPNP_POOL_TAG_TOKEN_OPERATION 'oTcS'
194#define CLASSPNP_POOL_TAG_SRB 'rScS'
195#define CLASSPNP_POOL_TAG_VPD 'pVcS'
196#define CLASSPNP_POOL_TAG_LOG_MESSAGE 'mlcS'
197#define CLASSPNP_POOL_TAG_ADDITIONAL_DATA 'DAcS'
198#define CLASSPNP_POOL_TAG_FIRMWARE 'wFcS'
203#define MAX_LIST_IDENTIFIER MAXULONG
204#define NUM_POPULATE_TOKEN_RETRIES 1
205#define NUM_WRITE_USING_TOKEN_RETRIES 2
206#define NUM_RECEIVE_TOKEN_INFORMATION_RETRIES 2
207#define MAX_TOKEN_OPERATION_PARAMETER_DATA_LENGTH MAXUSHORT
208#define MAX_RECEIVE_TOKEN_INFORMATION_PARAMETER_DATA_LENGTH MAXULONG
209#define MAX_TOKEN_TRANSFER_SIZE MAXULONGLONG
210#define MAX_NUMBER_BLOCKS_PER_BLOCK_DEVICE_RANGE_DESCRIPTOR MAXULONG
211#define DEFAULT_MAX_TARGET_DURATION 4
212#define DEFAULT_MAX_NUMBER_BYTES_PER_SYNC_WRITE_USING_TOKEN (64ULL * 1024 * 1024)
213#define MAX_NUMBER_BYTES_PER_SYNC_WRITE_USING_TOKEN (256ULL * 1024 * 1024)
214#define MIN_TOKEN_LIST_IDENTIFIERS 256
215#define MAX_TOKEN_LIST_IDENTIFIERS MAXULONG
216#define MAX_NUMBER_BLOCK_DEVICE_DESCRIPTORS 64
218#define REG_DISK_CLASS_CONTROL L"\\REGISTRY\\MACHINE\\SYSTEM\\CurrentControlSet\\Control\\DISK"
219#define REG_MAX_LIST_IDENTIFIER_VALUE L"MaximumListIdentifier"
221#define VPD_PAGE_HEADER_SIZE 0x04
229#define GET_LBA_STATUS_RETRY_COUNT_MAX (2)
251#define CONST_MSECS_PER_SEC 1000
253#define Convert100nsToMilliseconds(LARGE_INTEGER) \
255 RtlExtendedMagicDivide((LARGE_INTEGER), Magic10000, SHIFT10000) \
258#define ConvertMillisecondsTo100ns(MILLISECONDS) ( \
259 RtlExtendedIntegerMultiply ((MILLISECONDS), 10000) \
342#if (NTDDI_VERSION >= NTDDI_WIN8)
452#pragma warning(disable:4214)
486#define NUM_ERROR_LOG_ENTRIES 16
487#define DBG_NUM_PACKET_LOG_ENTRIES (64*2)
489#if (NTDDI_VERSION >= NTDDI_WIN8)
515#if (NTDDI_VERSION >= NTDDI_WINBLUE)
579#if (NTDDI_VERSION >= NTDDI_WIN8)
591 IRP DbgOriginalIrpCopy;
603#if (NTDDI_VERSION >= NTDDI_WIN8)
630#define MIN_INITIAL_TRANSFER_PACKETS 1
631#define MIN_WORKINGSET_TRANSFER_PACKETS_Client 16
632#define MAX_WORKINGSET_TRANSFER_PACKETS_Client 32
633#define MIN_WORKINGSET_TRANSFER_PACKETS_Server_UpperBound 256
634#define MIN_WORKINGSET_TRANSFER_PACKETS_Server_LowerBound 32
635#define MAX_WORKINGSET_TRANSFER_PACKETS_Server 1024
636#define MIN_WORKINGSET_TRANSFER_PACKETS_SPACES 512
637#define MAX_WORKINGSET_TRANSFER_PACKETS_SPACES 2048
638#define MAX_OUTSTANDING_IO_PER_LUN_DEFAULT 16
639#define MAX_CLEANUP_TRANSFER_PACKETS_AT_ONCE 8192
668#if (NTDDI_VERSION >= NTDDI_WIN8)
675#if (NTDDI_VERSION >= NTDDI_WINBLUE)
716 ULONG MaxOutstandingIOPerLUN;
789#if (NTDDI_VERSION >= NTDDI_WIN8)
855 ULONG DbgNumIORequests;
858 ULONG DbgIOsSinceFUA;
859 ULONG DbgIOsSinceFlush;
860 ULONG DbgAveIOsToFUA;
861 ULONG DbgAveIOsToFlush;
862 ULONG DbgMaxIOsToFUA;
863 ULONG DbgMaxIOsToFlush;
864 ULONG DbgMinIOsToFUA;
865 ULONG DbgMinIOsToFlush;
870 ULONG DbgPacketLogNextIndex;
894#if (NTDDI_VERSION >= NTDDI_WIN8)
1185#define QERR_SET_ZERO_ODX_OR_TP_ONLY 0
1186#define QERR_SET_ZERO_ALWAYS 1
1187#define QERR_SET_ZERO_NEVER 2
1190#define MIN(a, b) ((a) < (b) ? (a) : (b))
1191#define MAX(a, b) ((a) > (b) ? (a) : (b))
1194#define NOT_READY_RETRY_INTERVAL 10
1195#define MINIMUM_RETRY_UNITS ((LONGLONG)32)
1196#define MODE_PAGE_DATA_SIZE 192
1198#define CLASS_IDLE_INTERVAL_MIN 12
1199#define CLASS_IDLE_INTERVAL 12
1200#define CLASS_STARVATION_INTERVAL 500
1205#define FIFTY_MS_IN_100NS_UNITS 50 * 100
1218 SListHdr->
Next = SListEntry;
1259#pragma warning(suppress:4305; suppress:4213)
1273#pragma warning(suppress:4305)
1275 return ((
BOOLEAN)
Irp->Tail.Overlay.DriverContext[1]);
1301 TimeDiff /= (10 * 1000);
1312 return SupportInfo->LBProvisioningData.LBPU;
1325 SupportInfo->LBProvisioningData.LBPU ==
TRUE)
1502#if (NTDDI_VERSION >= NTDDI_WINBLUE)
1752ClasspSetupPopulateTokenTransferPacket(
1765ClasspSetupReceivePopulateTokenInformationTransferPacket(
1778ClasspSetupWriteUsingTokenTransferPacket(
1791ClasspSetupReceiveWriteUsingTokenInformationTransferPacket(
1928ClasspGetMaximumTokenListIdentifier(
1936ClasspGetCopyOffloadMaxDuration(
1946ClasspDeviceCopyOffloadProperty(
1956ClasspValidateOffloadSupported(
1965ClasspValidateOffloadInputParameters(
1994ClasspConvertDataSetRangeToBlockDescr(
2029 switch (CurrentStatus) {
2035 operationCompleted =
TRUE;
2039 return operationCompleted;
2057 tokenOperation =
TRUE;
2061 return tokenOperation;
2078 receiveTokenInformation =
TRUE;
2082 return receiveTokenInformation;
2093 return offloadCommand;
2124ClassDetermineTokenOperationCommandSupport(
2138ClassDeviceProcessOffloadRead(
2148ClassDeviceProcessOffloadWrite(
2158ClasspServicePopulateTokenTransferRequest(
2173ClasspServiceWriteUsingTokenTransferRequest(
2288ClasspPowerActivateDevice(
2294ClasspPowerIdleDevice(
2330#define HISTORYINITIALIZERETRYLOGS(_packet) \
2332 if (_packet->RetryHistory != NULL) \
2334 HistoryInitializeRetryLogs( \
2335 _packet->RetryHistory, \
2336 _packet->RetryHistory->TotalHistoryCount \
2345#define HISTORYLOGSENDPACKET(_packet) \
2347 if (_packet->RetryHistory != NULL) { \
2348 HistoryLogSendPacket(_packet); \
2357#define HISTORYLOGRETURNEDPACKET(_packet) \
2359 if (_packet->RetryHistory != NULL) { \
2360 HistoryLogReturnedPacket(_packet); \
2385#define TRACKING_FORWARD_PROGRESS_PATH1 (0x00000001)
2386#define TRACKING_FORWARD_PROGRESS_PATH2 (0x00000002)
2387#define TRACKING_FORWARD_PROGRESS_PATH3 (0x00000004)
2406#if (NTDDI_VERSION >= NTDDI_WIN8)
2503 *TimesAlreadyRetried = 0;
2623 if (OffsetInBytes > BaseStructureSizeInBytes) {
2627 return BaseStructureSizeInBytes - OffsetInBytes;
2648#if defined(__REACTOS__) && (NTDDI_VERSION >= NTDDI_WINBLUE)
2651ClasspSrbTimeOutStatus (
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
VOID History(INT dir, LPTSTR commandline)
#define _Dispatch_type_(a)
PDEVICE_OBJECT PhysicalDeviceObject
_In_ PFCB _In_ LONGLONG StartingOffset
_In_ size_t _In_ UCHAR PageMode
#define IS_SCSIOP_READWRITE(opCode)
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN _In_opt_ WDFREQUEST OriginalRequest
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN WriteToDevice
_In_ PREAD_CAPACITY_DATA ReadCapacityBuffer
_In_z_ PCHAR TargetString
#define TEST_FLAG(Flags, Bit)
_In_ WDFREQUEST _In_ MEDIA_LOCK_TYPE LockType
_In_ ULONG _In_ UCHAR _In_ UCHAR PageControl
#define MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS
enum _MEDIA_CHANGE_DETECTION_STATE MEDIA_CHANGE_DETECTION_STATE
#define SCSIOP_MODE_SENSE10
#define SCSIOP_MEDIUM_REMOVAL
#define SCSIOP_READ_CAPACITY
#define SCSIOP_MODE_SENSE
VOID CleanupTransferPacketToWorkingSetSize(_In_ PDEVICE_OBJECT Fdo, _In_ BOOLEAN LimitNumPktToDelete, _In_ ULONG Node)
VOID ClassQueueResourceExhaustionEventWorker(_In_ PDEVICE_OBJECT DeviceObject)
NTSTATUS InitializeStorageRequestBlock(_Inout_bytecount_(ByteSize) PSTORAGE_REQUEST_BLOCK Srb, _In_ USHORT AddressType, _In_ ULONG ByteSize, _In_ ULONG NumSrbExData,...)
NTSTATUS ClasspDeviceLBProvisioningProperty(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
struct _OPCODE_SENSE_DATA_IO_LOG_MESSAGE_CONTEXT_HEADER * POPCODE_SENSE_DATA_IO_LOG_MESSAGE_CONTEXT_HEADER
_IRQL_requires_same_ NTSTATUS ClasspGetTokenOperationDescriptorLimits(_In_ PDEVICE_OBJECT Fdo, _In_ ULONG ServiceAction, _In_ ULONG MaxParameterBufferLength, _Out_ PULONG MaxBlockDescriptorsCount, _Out_ PULONGLONG MaxBlockDescriptorsLength)
IO_WORKITEM_ROUTINE ClassLogResourceExhaustionEvent
#define NUM_WRITE_USING_TOKEN_RETRIES
FORCEINLINE ULONGLONG ClasspTimeDiffToMs(ULONGLONG TimeDiff)
BOOLEAN StepLowMemRetry(PTRANSFER_PACKET Pkt)
FORCEINLINE VOID ClasspMarkIrpAsIdle(PIRP Irp, BOOLEAN Idle)
BOOLEAN ClasspUpdateTimerNoWakeTolerance(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
_In_z_ PWSTR _Out_ PULONG MaximumListIdentifier
VOID NTAPI ClasspScanForClassHacks(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, IN ULONG_PTR Data)
FORCEINLINE BOOLEAN ClasspIsTokenOperationComplete(_In_ ULONG CurrentStatus)
NTSTATUS ClasspWriteCacheProperty(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS ClasspDeviceTrimProcess(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ PGUID ActivityId, _Inout_ PSCSI_REQUEST_BLOCK Srb)
struct _CLASS_RETRY_INFO * PCLASS_RETRY_INFO
_IRQL_requires_same_ VOID ClasspReceiveWriteUsingTokenInformation(_In_ POFFLOAD_WRITE_CONTEXT OffloadWriteContext)
VOID ClasspZeroQERR(_In_ PDEVICE_OBJECT DeviceObject)
VOID ClassQueueCapacityChangedEventWorker(_In_ PDEVICE_OBJECT DeviceObject)
VOID ClasspQueueLogIOEventWithContextWorker(_In_ PDEVICE_OBJECT DeviceObject, _In_ ULONG SenseBufferSize, _In_ PVOID SenseData, _In_ UCHAR SrbStatus, _In_ UCHAR ScsiStatus, _In_ ULONG ErrorCode, _In_ ULONG CdbLength, _In_opt_ PCDB Cdb, _In_opt_ PTRANSFER_PACKET Pkt)
NTSTATUS ClassPnpStartDevice(IN PDEVICE_OBJECT DeviceObject)
struct _OFFLOAD_WRITE_CONTEXT OFFLOAD_WRITE_CONTEXT
_In_ PTRANSFER_PACKET _In_ ULONG _In_ PIRP OriginalIrp
NTSTATUS ClasspAllocatePowerProcessIrp(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
_IRQL_requires_same_ NTSTATUS ClasspStorageEventNotification(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
VOID ClasspFreeDeviceMdl(PMDL Mdl)
NTSTATUS ClasspMediaChangeCompletion(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
FORCEINLINE VOID SimpleInitSlistHdr(SINGLE_LIST_ENTRY *SListHdr)
VOID HistoryLogSendPacket(TRANSFER_PACKET *Pkt)
NTSTATUS ClassDeviceHwFirmwareDownloadProcess(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS ClassGetPdoId(IN PDEVICE_OBJECT Pdo, IN BUS_QUERY_ID_TYPE IdType, IN PUNICODE_STRING IdString)
PIRP DequeueDeferredClientIrp(PDEVICE_OBJECT Fdo)
NTSTATUS NTAPI ClassMinimalPowerHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_In_ PVOID _Inout_ PULONG _In_ ULONG MaxBlockDescrCount
VOID ClasspContinueOffloadWrite(_In_ __drv_aliasesMem POFFLOAD_WRITE_CONTEXT OffloadWriteContext)
NTSTATUS ClasspDeviceGetLBAStatus(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
VOID SetupModeSenseTransferPacket(TRANSFER_PACKET *Pkt, PKEVENT SyncEventPtr, PVOID ModeSenseBuffer, UCHAR ModeSenseBufferLen, UCHAR PageMode, UCHAR SubPage, PIRP OriginalIrp, UCHAR PageControl)
FORCEINLINE BOOLEAN ClasspIsOffloadDataTransferCommand(_In_ PCDB Cdb)
NTSTATUS CreateStorageRequestBlock(_Inout_ PSTORAGE_REQUEST_BLOCK *Srb, _In_ USHORT AddressType, _In_opt_ PSRB_ALLOCATE_ROUTINE AllocateRoutine, _Inout_opt_ ULONG *ByteSize, _In_ ULONG NumSrbExData,...)
NTSTATUS ClassIoCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
struct _OFFLOAD_READ_CONTEXT OFFLOAD_READ_CONTEXT
FORCEINLINE BOOLEAN ClasspSupportsUnmap(_In_ PCLASS_FUNCTION_SUPPORT_INFO SupportInfo)
NTSTATUS ClasspRefreshFunctionSupportInfo(_Inout_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ BOOLEAN ForceQuery)
_In_ PTRANSFER_PACKET _In_ ULONG _In_ PIRP _In_ ULONG ListIdentifier
NTSTATUS ClasspInitializeTimer(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
CLASSPNP_SCAN_FOR_SPECIAL_INFO ClassBadItems[]
FORCEINLINE LARGE_INTEGER ClasspGetCurrentTime(VOID)
VOID FreeDeviceInputMdl(PMDL Mdl)
NTSTATUS ClasspPersistentReserve(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
_In_ PTRANSFER_PACKET Pkt
DRIVER_ADD_DEVICE ClassAddDevice
NTSTATUS InterpretReadCapacity16Data(_Inout_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PREAD_CAPACITY16_DATA ReadCapacity16Data)
FORCEINLINE SINGLE_LIST_ENTRY * SimplePopSlist(SINGLE_LIST_ENTRY *SListHdr)
VOID ClasspFreeReleaseRequest(IN PDEVICE_OBJECT Fdo)
ULONG ClasspCalculateLogicalSectorSize(_In_ PDEVICE_OBJECT Fdo, _In_ ULONG BytesPerBlockInBigEndian)
VOID RetryRequest(PDEVICE_OBJECT DeviceObject, PIRP Irp, PSCSI_REQUEST_BLOCK Srb, BOOLEAN Associated, LONGLONG TimeDelta100ns)
NTSTATUS ClasspBlockLimitsDataSnapshot(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ BOOLEAN ForceQuery, _Out_ PCLASS_VPD_B0_DATA BlockLimitsData, _Out_ PULONG GenerationCount)
VOID ClasspInitializeIdleTimer(PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
_IRQL_requires_same_ PUCHAR ClasspBinaryToAscii(_In_reads_(Length) PUCHAR HexBuffer, _In_ ULONG Length, _Inout_ PULONG UpdateLength)
struct _IO_RETRIED_LOG_MESSAGE_CONTEXT IO_RETRIED_LOG_MESSAGE_CONTEXT
VOID ClasspCompleteOffloadRead(_In_ POFFLOAD_READ_CONTEXT OffloadReadContext, _In_ NTSTATUS CompletionStatus)
VOID ClasspPerfIncrementSuccessfulIo(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
NTSTATUS ClasspDuidQueryProperty(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PVOID ScreenStateNotificationHandle
VOID(* PCONTINUATION_ROUTINE)(_In_ PVOID Context)
IO_COMPLETION_ROUTINE TransferPktComplete
struct _FAILURE_PREDICTION_INFO * PFAILURE_PREDICTION_INFO
VOID ClasspCompleteOffloadWrite(_In_ __drv_freesMem(Mem) POFFLOAD_WRITE_CONTEXT OffloadWriteContext, _In_ NTSTATUS CompletionCausingStatus)
VOID EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, __drv_aliasesMem PTRANSFER_PACKET Pkt)
IO_WORKITEM_ROUTINE_EX CleanupTransferPacketToWorkingSetSizeWorker
DRIVER_STARTIO ClasspStartIo
NTSTATUS ClasspLogSystemEventWithDeviceNumber(_In_ PDEVICE_OBJECT DeviceObject, _In_ NTSTATUS IoErrorCode)
DRIVER_INITIALIZE DriverEntry
NTSTATUS ClassQueryPnpCapabilities(IN PDEVICE_OBJECT PhysicalDeviceObject, IN PDEVICE_CAPABILITIES Capabilities)
VOID InitializeDictionary(IN PDICTIONARY Dictionary)
NTSTATUS InitializeTransferPackets(PDEVICE_OBJECT Fdo)
NTSTATUS ClasspAccessAlignmentProperty(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
BOOLEAN ClasspIsThinProvisioningError(_In_ PSCSI_REQUEST_BLOCK _Srb)
struct _OFFLOAD_WRITE_CONTEXT * POFFLOAD_WRITE_CONTEXT
struct _CSCAN_LIST CSCAN_LIST
KDEFERRED_ROUTINE TransferPacketRetryTimerDpc
IO_COMPLETION_ROUTINE ClassReleaseQueueCompletion
VOID ClasspDisablePowerNotification(PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
NTSTATUS ClasspAllocateReleaseRequest(IN PDEVICE_OBJECT Fdo)
BOOLEAN RetryTransferPacket(PTRANSFER_PACKET Pkt)
BOOLEAN TestDictionarySignature(IN PDICTIONARY Dictionary)
struct _PNL_SLIST_HEADER * PPNL_SLIST_HEADER
struct _IO_RETRIED_LOG_MESSAGE_CONTEXT * PIO_RETRIED_LOG_MESSAGE_CONTEXT
ULONG MaxTokenOperationListIdentifier
_Inout_ PIRP _Inout_ PSCSI_REQUEST_BLOCK Srb
VOID FreeDictionaryEntry(IN PDICTIONARY Dictionary, IN PVOID Entry)
IO_WORKITEM_ROUTINE ClassLogThresholdEvent
PTRANSFER_PACKET DequeueFreeTransferPacket(PDEVICE_OBJECT Fdo, BOOLEAN AllocIfNeeded)
VOID ClasspUninitializeRemoveTracking(_In_ PDEVICE_OBJECT DeviceObject)
VOID ClasspReceiveWriteUsingTokenInformationDone(_In_ POFFLOAD_WRITE_CONTEXT OffloadWriteContext, _In_ NTSTATUS CompletionCausingStatus)
DRIVER_UNLOAD ClassUnload
VOID ClasspReceiveWriteUsingTokenInformationTransferPacketDone(_In_ POFFLOAD_WRITE_CONTEXT OffloadWriteContext)
NTSTATUS ClasspModeSelect(_In_ PDEVICE_OBJECT Fdo, _In_reads_bytes_(Length) PCHAR ModeSelectBuffer, _In_ ULONG Length, _In_ BOOLEAN SavePages)
FORCEINLINE ULONG ClasspGetMaxUsableBufferLengthFromOffset(_In_ PVOID BaseAddress, _In_ ULONG OffsetInBytes, _In_ ULONG BaseStructureSizeInBytes)
struct _OFFLOAD_READ_CONTEXT * POFFLOAD_READ_CONTEXT
GUID ClassGuidQueryRegInfoEx
FORCEINLINE BOOLEAN ClasspLowerLayerNotSupport(_In_ NTSTATUS Status)
FORCEINLINE BOOLEAN SimpleIsSlistEmpty(SINGLE_LIST_ENTRY *SListHdr)
#define NUM_DRIVECAPACITY_RETRIES
VOID SetupDriveCapacityTransferPacket(TRANSFER_PACKET *Pkt, PVOID ReadCapacityBuffer, ULONG ReadCapacityBufferLen, PKEVENT SyncEventPtr, PIRP OriginalIrp, BOOLEAN Use16ByteCdb)
FORCEINLINE BOOLEAN ClasspIsObsoletePortDriver(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
_IRQL_requires_same_ NTSTATUS ClasspGetTokenOperationCommandBufferLength(_In_ PDEVICE_OBJECT Fdo, _In_ ULONG ServiceAction, _Inout_ PULONG CommandBufferLength, _Out_opt_ PULONG TokenOperationBufferLength, _Out_opt_ PULONG ReceiveTokenInformationBufferLength)
FORCEINLINE BOOLEAN ClasspIsIdleRequest(PIRP Irp)
VOID ClasspCleanupProtectedLocks(IN PFILE_OBJECT_EXTENSION FsContext)
struct _CLASS_RETRY_INFO CLASS_RETRY_INFO
enum _CLASS_DETECTION_STATE CLASS_DETECTION_STATE
ULONG ClassMaxInterleavePerCriticalIo
NTSTATUS ClasspMcnControl(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, IN PIRP Irp, IN PSCSI_REQUEST_BLOCK Srb)
VOID DestroyAllTransferPackets(PDEVICE_OBJECT Fdo)
VOID ClasspGetInquiryVpdSupportInfo(_Inout_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
PMDL ClasspBuildDeviceMdl(PVOID Buffer, ULONG BufferLen, BOOLEAN WriteToDevice)
VOID DestroyTransferPacket(_In_ __drv_freesMem(mem) PTRANSFER_PACKET Pkt)
FORCEINLINE VOID SimplePushSlist(SINGLE_LIST_ENTRY *SListHdr, SINGLE_LIST_ENTRY *SListEntry)
#define NUM_LOCKMEDIAREMOVAL_RETRIES
ULONG ClasspModeSense(_In_ PDEVICE_OBJECT Fdo, _In_reads_bytes_(Length) PCHAR ModeSenseBuffer, _In_ ULONG Length, _In_ UCHAR PageMode, _In_ UCHAR PageControl)
#define DBG_NUM_PACKET_LOG_ENTRIES
VOID EnqueueDeferredClientIrp(PDEVICE_OBJECT Fdo, PIRP Irp)
_In_ PVOID _Inout_ PULONG _In_ ULONG _Inout_ PULONG _In_ ULONGLONG _Inout_ PDEVICE_DATA_SET_RANGE _Inout_ PULONGLONG TotalSectorsProcessed
NTSTATUS ClasspDeviceGetLBProvisioningVPDPage(_In_ PDEVICE_OBJECT DeviceObject, _Inout_opt_ PSCSI_REQUEST_BLOCK Srb)
struct _FAILURE_PREDICTION_INFO FAILURE_PREDICTION_INFO
VOID SetupModeSelectTransferPacket(TRANSFER_PACKET *Pkt, PKEVENT SyncEventPtr, PVOID ModeSelectBuffer, UCHAR ModeSelectBufferLen, BOOLEAN SavePages, PIRP OriginalIrp)
VOID ClasspScanForSpecialInRegistry(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
KGUARDED_MUTEX IdlePowerFDOListMutex
NTSTATUS ClasspDeviceGetBlockDeviceCharacteristicsVPDPage(_In_ PFUNCTIONAL_DEVICE_EXTENSION fdoExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS AllocateDictionaryEntry(IN PDICTIONARY Dictionary, IN ULONGLONG Key, IN ULONG Size, IN ULONG Tag, OUT PVOID *Entry)
IO_WORKITEM_ROUTINE ClasspLogIOEventWithContext
FORCEINLINE BOOLEAN ClasspIsThinProvisioned(_In_ PCLASS_FUNCTION_SUPPORT_INFO SupportInfo)
NTSTATUS ClasspGetLBProvisioningInfo(_Inout_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
RTL_GENERIC_FREE_ROUTINE RemoveTrackingFreeRoutine
NTSTATUS ClasspInitializeGesn(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, IN PMEDIA_CHANGE_DETECTION_INFO Info)
VOID ClasspBuildRequestEx(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PIRP Irp, _In_ __drv_aliasesMem PSCSI_REQUEST_BLOCK Srb)
NTSTATUS ClassDeviceHwFirmwareGetInfoProcess(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
#define NUM_ERROR_LOG_ENTRIES
VOID ClassRetryRequest(IN PDEVICE_OBJECT SelfDeviceObject, IN PIRP Irp, _In_ _In_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) IN LONGLONG TimeDelta100ns)
NTSTATUS ClasspPagingNotificationCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_OBJECT RealDeviceObject)
struct _TRANSFER_PACKET * PTRANSFER_PACKET
NTSTATUS ClasspCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _CSCAN_LIST * PCSCAN_LIST
_IRQL_requires_same_ VOID ClasspReceivePopulateTokenInformation(_In_ POFFLOAD_READ_CONTEXT OffloadReadContext)
VOID ClasspWriteUsingTokenTransferPacketDone(_In_ PVOID Context)
NTSTATUS ClasspPriorityHint(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID ClasspCompleteIdleRequest(PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
NTSTATUS ClasspDeviceGetLBAStatusWorker(_In_ PDEVICE_OBJECT DeviceObject, _In_ PCLASS_VPD_B0_DATA BlockLimitsData, _In_ ULONGLONG StartingOffset, _In_ ULONGLONG LengthInBytes, _Out_ PDEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT DsmOutput, _Inout_ PULONG DsmOutputLength, _Inout_ PSCSI_REQUEST_BLOCK Srb, _In_ BOOLEAN ConsolidateableBlocksOnly, _In_ ULONG OutputVersion, _Out_ PBOOLEAN BlockLimitsDataMayHaveChanged)
BOOLEAN ClasspMyStringMatches(_In_opt_z_ PCHAR StringToMatch, _In_z_ PCHAR TargetString)
NTSTATUS ClasspDeviceSeekPenaltyProperty(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
KDEFERRED_ROUTINE ClasspRetryRequestDpc
VOID ClassAddChild(_In_ PFUNCTIONAL_DEVICE_EXTENSION Parent, _In_ PPHYSICAL_DEVICE_EXTENSION Child, _In_ BOOLEAN AcquireLock)
NTSTATUS ClasspIsPortable(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _Out_ PBOOLEAN IsPortable)
_IRQL_requires_same_ NTSTATUS ClasspGetBlockDeviceTokenLimitsInfo(_Inout_ PDEVICE_OBJECT DeviceObject)
NTSTATUS SubmitTransferPacket(PTRANSFER_PACKET Pkt)
NTSTATUS ClasspDeviceTrimProperty(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
FORCEINLINE PVOID ClasspTransferPacketGetSenseInfoBuffer(_In_ PTRANSFER_PACKET Pkt)
FORCEINLINE BOOLEAN ClasspIsReceiveTokenInformation(_In_ PCDB Cdb)
VOID HistoryLogReturnedPacket(TRANSFER_PACKET *Pkt)
ULONG DiskIdleTimeoutInMS
FORCEINLINE BOOLEAN ClasspIsIdleRequestSupported(PCLASS_PRIVATE_FDO_DATA FdoData, PIRP Irp)
struct _OPCODE_SENSE_DATA_IO_LOG_MESSAGE_CONTEXT_HEADER OPCODE_SENSE_DATA_IO_LOG_MESSAGE_CONTEXT_HEADER
VOID ClasspEnableTimer(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
NTSTATUS ClasspEjectionControl(IN PDEVICE_OBJECT Fdo, IN PIRP Irp, IN MEDIA_LOCK_TYPE LockType, IN BOOLEAN Lock)
PMDL BuildDeviceInputMdl(PVOID Buffer, ULONG BufferLen)
VOID ClasspInitializeRemoveTracking(_In_ PDEVICE_OBJECT DeviceObject)
VOID ClasspRegisterMountedDeviceInterface(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS ServiceTransferRequest(PDEVICE_OBJECT Fdo, PIRP Irp, BOOLEAN PostToDpc)
FORCEINLINE BOOLEAN PORT_ALLOCATED_SENSE_EX(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PSTORAGE_REQUEST_BLOCK_HEADER Srb)
RTL_GENERIC_ALLOCATE_ROUTINE RemoveTrackingAllocateRoutine
_In_ PVOID _Inout_ PULONG _In_ ULONG _Inout_ PULONG _In_ ULONGLONG MaxLbaCount
VOID TransferPacketQueueRetryDpc(PTRANSFER_PACKET Pkt)
PVOID(* PSRB_ALLOCATE_ROUTINE)(_In_ CLONG ByteSize)
enum MEDIA_LOCK_TYPE * PMEDIA_LOCK_TYPE
VOID ClassFreeOrReuseSrb(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, IN __drv_freesMem(mem) PSCSI_REQUEST_BLOCK Srb)
FORCEINLINE VOID ClasspSrbSetOriginalIrp(_In_ PSTORAGE_REQUEST_BLOCK_HEADER Srb, _In_ PIRP Irp)
VOID ClassSendEjectionNotification(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
_IRQL_requires_same_ NTSTATUS ClasspEnableIdlePower(_In_ PDEVICE_OBJECT DeviceObject)
PTRANSFER_PACKET DequeueFreeTransferPacketEx(_In_ PDEVICE_OBJECT Fdo, _In_ BOOLEAN AllocIfNeeded, _In_ ULONG Node)
VOID ClasspReceivePopulateTokenInformationTransferPacketDone(_In_ PVOID Context)
FORCEINLINE BOOLEAN ClasspIsTokenOperation(_In_ PCDB Cdb)
#define NUM_RECEIVE_TOKEN_INFORMATION_RETRIES
VOID ClassQueueThresholdEventWorker(_In_ PDEVICE_OBJECT DeviceObject)
VOID InitLowMemRetry(PTRANSFER_PACKET Pkt, PVOID BufPtr, ULONG Len, LARGE_INTEGER TargetLocation)
_In_z_ PWSTR _Out_ PULONG MaxDuration
struct _IDLE_POWER_FDO_LIST_ENTRY * PIDLE_POWER_FDO_LIST_ENTRY
NTSTATUS ClassPnpQueryFdoRelations(IN PDEVICE_OBJECT Fdo, IN PIRP Irp)
#define NUM_MODESENSE_RETRIES
struct _MEDIA_CHANGE_DETECTION_INFO MEDIA_CHANGE_DETECTION_INFO
CONST LARGE_INTEGER Magic10000
@ ClassDetectionUnsupported
@ ClassDetectionSupported
VOID ClasspDeleteTimer(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
NTSTATUS ClasspDeviceGetBlockLimitsVPDPage(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _Inout_bytecount_(SrbSize) PSCSI_REQUEST_BLOCK Srb, _In_ ULONG SrbSize, _Out_ PCLASS_VPD_B0_DATA BlockLimitsData)
struct _MEDIA_CHANGE_DETECTION_INFO * PMEDIA_CHANGE_DETECTION_INFO
PPHYSICAL_DEVICE_EXTENSION ClassRemoveChild(IN PFUNCTIONAL_DEVICE_EXTENSION Parent, IN PPHYSICAL_DEVICE_EXTENSION Child, IN BOOLEAN AcquireLock)
VOID ClasspRetryDpcTimer(IN PCLASS_PRIVATE_FDO_DATA FdoData)
VOID ClasspCompleteOffloadRequest(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ NTSTATUS CompletionStatus)
BOOLEAN InterpretTransferPacketError(PTRANSFER_PACKET Pkt)
FORCEINLINE BOOLEAN ClasspTransferPacketGetNumberOfRetriesDone(_In_ PTRANSFER_PACKET Pkt, _In_ PCDB Cdb, _Out_ PULONG TimesAlreadyRetried)
VOID SetupReadWriteTransferPacket(PTRANSFER_PACKET pkt, PVOID Buf, ULONG Len, LARGE_INTEGER DiskLocation, PIRP OriginalIrp)
FORCEINLINE PCDB ClasspTransferPacketGetCdb(_In_ PTRANSFER_PACKET Pkt)
IO_WORKITEM_ROUTINE ClasspUpdateDiskProperties
struct _TRANSFER_PACKET TRANSFER_PACKET
VOID ClassQueueProvisioningTypeChangedEventWorker(_In_ PDEVICE_OBJECT DeviceObject)
VOID ClasspPopulateTokenTransferPacketDone(_In_ PVOID Context)
#define NUM_POPULATE_TOKEN_RETRIES
struct _CLASS_ERROR_LOG_DATA * PCLASS_ERROR_LOG_DATA
FORCEINLINE VOID FREE_PORT_ALLOCATED_SENSE_BUFFER_EX(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PSTORAGE_REQUEST_BLOCK_HEADER Srb)
NTSTATUS ClasspAllocateReleaseQueueIrp(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
struct _PNL_SLIST_HEADER PNL_SLIST_HEADER
volatile ULONG TokenOperationListIdentifier
VOID ClasspCleanupOffloadWriteContext(_In_ __drv_freesMem(mem) POFFLOAD_WRITE_CONTEXT OffloadWriteContext)
NTSTATUS ClassReadCapacity16(_Inout_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _Inout_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS ClassDeviceGetLBProvisioningResources(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
enum _CLASS_DETECTION_STATE * PCLASS_DETECTION_STATE
NTSTATUS ClasspEnqueueIdleRequest(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS ClassDeviceHwFirmwareActivateProcess(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
VOID ClasspPerfIncrementErrorCount(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
IO_COMPLETION_ROUTINE ClasspSendSynchronousCompletion
struct _IDLE_POWER_FDO_LIST_ENTRY IDLE_POWER_FDO_LIST_ENTRY
RTL_GENERIC_COMPARE_ROUTINE RemoveTrackingCompareRoutine
VOID ClassInitializeDispatchTables(PCLASS_DRIVER_EXTENSION DriverExtension)
VOID InterpretCapacityData(PDEVICE_OBJECT Fdo, PREAD_CAPACITY_DATA_EX ReadCapacityData)
NTSTATUS ClassRetrieveDeviceRelations(IN PDEVICE_OBJECT Fdo, IN DEVICE_RELATION_TYPE RelationType, OUT PDEVICE_RELATIONS *DeviceRelations)
VOID ClasspConvertToScsiRequestBlock(_Out_ PSCSI_REQUEST_BLOCK Srb, _In_ PSTORAGE_REQUEST_BLOCK SrbEx)
_In_ PVOID _Inout_ PULONG CurrentBlockDescrIndex
VOID ClasspDisableTimer(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
VOID SetupEjectionTransferPacket(TRANSFER_PACKET *Pkt, BOOLEAN PreventMediaRemoval, PKEVENT SyncEventPtr, PIRP OriginalIrp)
PVOID PowerSettingNotificationHandle
BOOLEAN InterpretSenseInfoWithoutHistory(_In_ PDEVICE_OBJECT Fdo, _In_opt_ PIRP OriginalRequest, _In_ PSCSI_REQUEST_BLOCK Srb, UCHAR MajorFunctionCode, ULONG IoDeviceCode, ULONG PreviousRetryCount, _Out_ NTSTATUS *Status, _Out_opt_ _Deref_out_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG *RetryIn100nsUnits)
_In_ PVOID _Inout_ PULONG _In_ ULONG _Inout_ PULONG _In_ ULONGLONG _Inout_ PDEVICE_DATA_SET_RANGE DataSetRange
BOOLEAN ClasspFailurePredictionPeriodMissed(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
NTSTATUS ClasspInitializeHotplugInfo(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
VOID HistoryInitializeRetryLogs(_Out_ PSRB_HISTORY History, ULONG HistoryCount)
VOID ClasspCleanupOffloadReadContext(_In_ __drv_freesMem(mem) POFFLOAD_READ_CONTEXT OffloadReadContext)
PVOID GetDictionaryEntry(IN PDICTIONARY Dictionary, IN ULONGLONG Key)
_In_ PVOID _Inout_ PULONG _In_ ULONG _Inout_ PULONG CurrentLbaCount
struct _CLASS_ERROR_LOG_DATA CLASS_ERROR_LOG_DATA
VOID ClasspReleaseQueue(IN PDEVICE_OBJECT DeviceObject, IN PIRP ReleaseQueueIrp)
FORCEINLINE UCHAR ClasspTransferPacketGetSenseInfoBufferLength(_In_ PTRANSFER_PACKET Pkt)
NTSTATUS ClasspDeviceMediaTypeProperty(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
LIST_ENTRY IdlePowerFDOList
PVOID DefaultStorageRequestBlockAllocateRoutine(_In_ CLONG ByteSize)
POWER_SETTING_CALLBACK ClasspPowerSettingCallback
_In_ BUS_QUERY_ID_TYPE IdType
FORCEINLINE UCHAR GET_FDO_EXTENSON_SENSE_DATA_LENGTH(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
#define CLASS_SRBEX_NO_SRBEX_DATA_BUFFER_SIZE
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR MajorFunctionCode
#define CLASS_SRBEX_SCSI_CDB16_BUFFER_SIZE
_In_ BUS_QUERY_ID_TYPE _In_ PUNICODE_STRING IdString
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG IoDeviceCode
FAILURE_PREDICTION_METHOD
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG _In_ ULONG PreviousRetryCount
NTSTATUS NTAPI ClassSystemControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define STATUS_NOT_SUPPORTED
#define STATUS_NOT_IMPLEMENTED
NTSTATUS NTAPI ClassReadWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI ClassDeviceControlDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS NTAPI ClassDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI ClassShutdownFlush(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI ClassCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI ClassGlobalDispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI ClassDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define SRB_STATUS_BUS_RESET
#define SRB_FLAGS_FREE_SENSE_BUFFER
#define SRB_STATUS_ABORTED
#define SRB_STATUS_TIMEOUT
#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE
struct _SCSI_REQUEST_BLOCK * PSCSI_REQUEST_BLOCK
#define SRB_STATUS_COMMAND_TIMEOUT
#define _IRQL_requires_same_
#define __drv_freesMem(kind)
#define _IRQL_requires_min_(irql)
#define _IRQL_requires_max_(irql)
#define __drv_allocatesMem(kind)
#define _IRQL_requires_(irql)
_Inout_ PLIST_ENTRY _In_ PVOID FsContext
pPkgPnp m_DeviceInterfaceLock AcquireLock(pFxDriverGlobals)
LARGE_INTEGER NTAPI KeQueryPerformanceCounter(IN PLARGE_INTEGER PerformanceFreq)
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
#define _Inout_bytecount_(size)
_In_ NDIS_ERROR_CODE ErrorCode
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
DRIVER_DISPATCH(nfs41_FsdDispatch)
#define _In_reads_bytes_(s)
#define _Deref_out_range_(l, h)
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
#define DECLSPEC_CACHEALIGN
_In_ ULONG _In_ ULONG _In_ ULONG Length
@ StoragePortCodeSetSCSIport
#define STATUS_INVALID_PARAMETER_1
PPCI_DRIVER_EXTENSION DriverExtension
#define IRP_MJ_DEVICE_CONTROL
_In_opt_ WDFREQUEST _In_ ULONG _In_ BOOLEAN _In_ PCDB Cdb
#define SERVICE_ACTION_POPULATE_TOKEN
#define SCSIOP_RECEIVE_ROD_TOKEN_INFORMATION
#define SERVICE_ACTION_RECEIVE_TOKEN_INFORMATION
#define PROVISIONING_TYPE_THIN
@ OPERATION_COMPLETED_WITH_SUCCESS
@ OPERATION_COMPLETED_WITH_ERROR
@ OPERATION_COMPLETED_WITH_RESIDUAL_DATA
#define SCSIOP_POPULATE_TOKEN
#define SCSIOP_WRITE_USING_TOKEN
#define SERVICE_ACTION_WRITE_USING_TOKEN
#define SCSIOP_READ_CAPACITY16
#define SRB_FUNCTION_STORAGE_REQUEST_BLOCK
struct SRB_ALIGN _STORAGE_REQUEST_BLOCK_HEADER * PSTORAGE_REQUEST_BLOCK_HEADER
FORCEINLINE VOID SrbClearSrbFlags(_In_ PVOID Srb, _In_ ULONG Flags)
FORCEINLINE UCHAR SrbGetSrbStatus(_In_ PVOID Srb)
FORCEINLINE VOID SrbSetSenseInfoBufferLength(_In_ PVOID Srb, _In_ UCHAR SenseInfoBufferLength)
FORCEINLINE ULONG SrbGetSrbFlags(_In_ PVOID Srb)
FORCEINLINE VOID SrbSetSenseInfoBuffer(_In_ PVOID Srb, _In_opt_ PVOID SenseInfoBuffer)
FORCEINLINE PVOID SrbGetSenseInfoBuffer(_In_ PVOID Srb)
FORCEINLINE UCHAR SrbGetSenseInfoBufferLength(_In_ PVOID Srb)
base of all file and directory entries
LONG RemoveLockFailAcquire
UCHAR PowerSrbBuffer[CLASS_SRBEX_SCSI_CDB16_BUFFER_SIZE]
LARGE_INTEGER AntiStarvationStartTime
LARGE_INTEGER LastIoCompletionTime
STORAGE_REQUEST_BLOCK SrbEx
BOOLEAN IsCachedDriveCapDataValid
BOOLEAN IdlePrioritySupported
ULONG MaxInterleavedNormalIo
ULONG LocalMinWorkingSetTransferPackets
LIST_ENTRY AllFdosListEntry
ULONG MaxPowerOperationRetryCount
ULONG LocalMaxWorkingSetTransferPackets
struct _CLASS_PRIVATE_FDO_DATA::@1067 Perf
ULONG UpdateDiskPropertiesWorkItemActive
UCHAR MaxNumberOfIoRetries
STORAGE_HOTPLUG_INFO HotplugInfo
BOOLEAN LegacyErrorHandling
LIST_ENTRY DeferredClientIrpList
LARGE_INTEGER LongestThrottlePeriod
PSTORAGE_REQUEST_BLOCK_HEADER SrbTemplate
PCLASS_INTERPRET_SENSE_INFO2 InterpretSenseInfo
READ_CAPACITY_DATA_EX LastKnownDriveCapacityData
USHORT StarvationDuration
union _CLASS_PRIVATE_FDO_DATA::@1065 PowerSrb
ULONG CopyOffloadMaxTargetDuration
PPNL_SLIST_HEADER FreeTransferPacketsLists
LARGE_INTEGER ThrottleStartTime
ULONG NumHighPriorityPagingIo
BOOLEAN LoggedSYNCFailure
LARGE_INTEGER LastNonIdleIoTime
LONGLONG CurrentNoWakeTolerance
union _CLASS_PRIVATE_FDO_DATA::@1066 ReleaseQueueSrb
LARGE_INTEGER ThrottleStopTime
UCHAR ReleaseQueueSrbBuffer[CLASS_SRBEX_NO_SRBEX_DATA_BUFFER_SIZE]
BOOLEAN ReleaseQueueIrpAllocated
BOOLEAN LoggedTURFailureSinceLastIO
struct _CLASS_PRIVATE_FDO_DATA::@1068 Retry
BOOLEAN DisableThrottling
CLASS_ERROR_LOG_DATA ErrorLogs[NUM_ERROR_LOG_ENTRIES]
LIST_ENTRY AllTransferPacketsList
PCLASS_RETRY_INFO ListHead
struct _CLASS_RETRY_INFO * Next
PIO_WORKITEM WorkQueueItem
FAILURE_PREDICTION_METHOD Method
LARGE_INTEGER LastFailurePredictionQueryTime
OPCODE_SENSE_DATA_IO_LOG_MESSAGE_CONTEXT_HEADER ContextHeader
ULONG ReceiveTokenInformationBufferLength
ULONGLONG TotalSectorsToProcess
ULONGLONG TotalSectorsProcessed
ULONGLONG OperationStartTime
PDEVICE_MANAGE_DATA_SET_ATTRIBUTES DsmAttributes
ULONGLONG TotalRequestSizeSectors
ULONGLONG DataSetRangeByteOffset
ULONGLONG TotalSectorsProcessedSuccessfully
PDEVICE_DATA_SET_RANGE DataSetRanges
ULONGLONG LogicalBlockOffset
ULONG ReceiveTokenInformationBufferLength
PDEVICE_DSM_OFFLOAD_WRITE_PARAMETERS OffloadWriteParameters
ULONGLONG TotalSectorsToProcess
ULONGLONG TotalSectorsProcessed
struct _SINGLE_LIST_ENTRY * Next
LARGE_INTEGER TargetLocationCopy
PSTORAGE_REQUEST_BLOCK_HEADER Srb
PUCHAR LowMemRetry_remainingBufPtr
LARGE_INTEGER LowMemRetry_nextChunkTargetLocation
SENSE_DATA_EX SrbErrorSenseData
UCHAR NumIoTimeoutRetries
UCHAR NumThinProvisioningRetries
ULONGLONG RequestStartTime
BOOLEAN DriverUsesStartIO
PSRB_HISTORY RetryHistory
BOOLEAN CompleteOriginalIrpWhenLastPacketCompletes
PVOID ContinuationContext
ULONG LowMemRetry_remainingBufLen
_Field_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG RetryIn100nsUnits
LIST_ENTRY AllPktsListEntry
PCONTINUATION_ROUTINE ContinuationRoutine
#define SLIST_ENTRY(type)
#define STATUS_INVALID_DEVICE_REQUEST
struct _CDB::_CDB10 CDB10
struct _CDB::_MEDIA_REMOVAL MEDIA_REMOVAL
struct _CDB::_TOKEN_OPERATION TOKEN_OPERATION
struct _CDB::_MODE_SENSE MODE_SENSE
struct _CDB::_CDB16 CDB16
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
_In_ PDEVICE_OBJECT DeviceObject
_In_ DEVICE_RELATION_TYPE RelationType
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ WDFDEVICE Fdo
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
WDF_EXTERN_C_START typedef _Must_inspect_result_ _In_ WDFDRIVER _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ PDEVICE_OBJECT _In_opt_ PDEVICE_OBJECT _In_opt_ PDEVICE_OBJECT Pdo
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
_Reserved_ PVOID Reserved
_In_ PCEVENT_DESCRIPTOR _In_opt_ LPCGUID ActivityId
struct _EX_TIMER * PEX_TIMER
NTKRNLVISTAAPI IO_PRIORITY_HINT NTAPI IoGetIoPriorityHint(_In_ PIRP Irp)
_In_opt_ PVPB _In_ PDEVICE_OBJECT RealDeviceObject
enum _BUS_QUERY_ID_TYPE BUS_QUERY_ID_TYPE
#define IRP_MJ_SYSTEM_CONTROL
#define IRP_MJ_FLUSH_BUFFERS
enum _IO_PRIORITY_HINT IO_PRIORITY_HINT
enum _DEVICE_RELATION_TYPE DEVICE_RELATION_TYPE
_In_ PRTL_GENERIC_COMPARE_ROUTINE _In_ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
_IRQL_requires_same_ _In_ CLONG ByteSize