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 184 #endif // NTDDI_VERSION >= NTDDI_WINBLUE 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 // 4sec 212 #define DEFAULT_MAX_NUMBER_BYTES_PER_SYNC_WRITE_USING_TOKEN (64ULL * 1024 * 1024) // 64MB 213 #define MAX_NUMBER_BYTES_PER_SYNC_WRITE_USING_TOKEN (256ULL * 1024 * 1024) // 256MB 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) 246 #define SHIFT10000 13 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) 451 #pragma warning(push) 452 #pragma warning(disable:4214) // bit field types other than int 486 #define NUM_ERROR_LOG_ENTRIES 16 487 #define DBG_NUM_PACKET_LOG_ENTRIES (64*2) // 64 send&receive's 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) 681 #endif // (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 // 12 milliseconds 1199 #define CLASS_IDLE_INTERVAL 12 // 12 milliseconds 1200 #define CLASS_STARVATION_INTERVAL 500 // 500 milliseconds 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) // truncation is not an issue for this use case 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) 1752 ClasspSetupPopulateTokenTransferPacket(
1765 ClasspSetupReceivePopulateTokenInformationTransferPacket(
1778 ClasspSetupWriteUsingTokenTransferPacket(
1791 ClasspSetupReceiveWriteUsingTokenInformationTransferPacket(
1928 ClasspGetMaximumTokenListIdentifier(
1936 ClasspGetCopyOffloadMaxDuration(
1946 ClasspDeviceCopyOffloadProperty(
1956 ClasspValidateOffloadSupported(
1965 ClasspValidateOffloadInputParameters(
1994 ClasspConvertDataSetRangeToBlockDescr(
2029 switch (CurrentStatus) {
2035 operationCompleted =
TRUE;
2039 return operationCompleted;
2057 tokenOperation =
TRUE;
2061 return tokenOperation;
2078 receiveTokenInformation =
TRUE;
2082 return receiveTokenInformation;
2093 return offloadCommand;
2124 ClassDetermineTokenOperationCommandSupport(
2138 ClassDeviceProcessOffloadRead(
2148 ClassDeviceProcessOffloadWrite(
2158 ClasspServicePopulateTokenTransferRequest(
2173 ClasspServiceWriteUsingTokenTransferRequest(
2288 ClasspPowerActivateDevice(
2294 ClasspPowerIdleDevice(
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) 2651 ClasspSrbTimeOutStatus (
NTSTATUS ClassPnpStartDevice(IN PDEVICE_OBJECT DeviceObject)
_Inout_ PLIST_ENTRY _In_ PVOID FsContext
struct _OPCODE_SENSE_DATA_IO_LOG_MESSAGE_CONTEXT_HEADER OPCODE_SENSE_DATA_IO_LOG_MESSAGE_CONTEXT_HEADER
FORCEINLINE ULONGLONG ClasspTimeDiffToMs(ULONGLONG TimeDiff)
NTSTATUS ClasspEnqueueIdleRequest(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define SCSIOP_WRITE_USING_TOKEN
#define SRB_STATUS_BUS_RESET
VOID ClasspBuildRequestEx(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PIRP Irp, _In_ __drv_aliasesMem PSCSI_REQUEST_BLOCK Srb)
PDEVICE_DATA_SET_RANGE DataSetRanges
NTSTATUS ClassDeviceHwFirmwareActivateProcess(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
__drv_allocatesMem(Mem) PTRANSFER_PACKET NewTransferPacket(PDEVICE_OBJECT Fdo)
return STATUS_NOT_SUPPORTED
NTSTATUS SubmitTransferPacket(PTRANSFER_PACKET Pkt)
NTSTATUS ClasspAllocatePowerProcessIrp(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
LARGE_INTEGER NTAPI KeQueryPerformanceCounter(IN PLARGE_INTEGER PerformanceFreq)
_IRQL_requires_same_ VOID ClasspReceivePopulateTokenInformation(_In_ POFFLOAD_READ_CONTEXT OffloadReadContext)
FORCEINLINE UCHAR SrbGetSenseInfoBufferLength(_In_ PVOID Srb)
ULONG ClasspModeSense(_In_ PDEVICE_OBJECT Fdo, _In_reads_bytes_(Length) PCHAR ModeSenseBuffer, _In_ ULONG Length, _In_ UCHAR PageMode, _In_ UCHAR PageControl)
VOID ClasspCompleteIdleRequest(PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
_In_ PTRANSFER_PACKET Pkt
BOOLEAN ClasspUpdateTimerNoWakeTolerance(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
enum _BUS_QUERY_ID_TYPE BUS_QUERY_ID_TYPE
FORCEINLINE BOOLEAN ClasspIsTokenOperationComplete(_In_ ULONG CurrentStatus)
_In_ NDIS_ERROR_CODE ErrorCode
_In_ ULONG _In_ ULONG _In_ ULONG Length
_In_ size_t _In_ UCHAR PageMode
VOID ClasspWriteUsingTokenTransferPacketDone(_In_ PVOID Context)
IO_COMPLETION_ROUTINE ClasspSendSynchronousCompletion
#define NUM_ERROR_LOG_ENTRIES
BOOLEAN DriverUsesStartIO
NTSTATUS NTAPI ClassCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS ClasspLogSystemEventWithDeviceNumber(_In_ PDEVICE_OBJECT DeviceObject, _In_ NTSTATUS IoErrorCode)
ULONGLONG TotalSectorsToProcess
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)
NTSTATUS ClasspEjectionControl(IN PDEVICE_OBJECT Fdo, IN PIRP Irp, IN MEDIA_LOCK_TYPE LockType, IN BOOLEAN Lock)
NTSTATUS ClasspDeviceMediaTypeProperty(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
RTL_GENERIC_ALLOCATE_ROUTINE RemoveTrackingAllocateRoutine
FORCEINLINE ULONG SrbGetSrbFlags(_In_ PVOID Srb)
VOID FreeDictionaryEntry(IN PDICTIONARY Dictionary, IN PVOID Entry)
_In_ PFCB _In_ LONGLONG StartingOffset
#define IRP_MJ_FLUSH_BUFFERS
ULONG MaxPowerOperationRetryCount
STORAGE_REQUEST_BLOCK SrbEx
ULONGLONG RequestStartTime
KDEFERRED_ROUTINE TransferPacketRetryTimerDpc
struct _CDB::_MEDIA_REMOVAL MEDIA_REMOVAL
PSTORAGE_REQUEST_BLOCK_HEADER SrbTemplate
PTRANSFER_PACKET DequeueFreeTransferPacket(PDEVICE_OBJECT Fdo, BOOLEAN AllocIfNeeded)
struct _SCSI_REQUEST_BLOCK * PSCSI_REQUEST_BLOCK
struct _CLASS_PRIVATE_FDO_DATA::@1023 Perf
ULONGLONG DataSetRangeByteOffset
#define DECLSPEC_CACHEALIGN
VOID SetupModeSenseTransferPacket(TRANSFER_PACKET *Pkt, PKEVENT SyncEventPtr, PVOID ModeSenseBuffer, UCHAR ModeSenseBufferLen, UCHAR PageMode, UCHAR SubPage, PIRP OriginalIrp, UCHAR PageControl)
LARGE_INTEGER ThrottleStartTime
struct _CLASS_RETRY_INFO CLASS_RETRY_INFO
#define SRB_FLAGS_FREE_SENSE_BUFFER
VOID ClasspFreeDeviceMdl(PMDL Mdl)
ULONGLONG TotalSectorsProcessedSuccessfully
#define SCSIOP_MODE_SENSE
NTSTATUS ClasspPriorityHint(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS ClasspDeviceGetBlockLimitsVPDPage(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _Inout_bytecount_(SrbSize) PSCSI_REQUEST_BLOCK Srb, _In_ ULONG SrbSize, _Out_ PCLASS_VPD_B0_DATA BlockLimitsData)
enum _CLASS_DETECTION_STATE * PCLASS_DETECTION_STATE
_In_ BUS_QUERY_ID_TYPE _In_ PUNICODE_STRING IdString
NTSTATUS InitializeStorageRequestBlock(_Inout_bytecount_(ByteSize) PSTORAGE_REQUEST_BLOCK Srb, _In_ USHORT AddressType, _In_ ULONG ByteSize, _In_ ULONG NumSrbExData,...)
struct _IO_RETRIED_LOG_MESSAGE_CONTEXT * PIO_RETRIED_LOG_MESSAGE_CONTEXT
ULONGLONG TotalSectorsToProcess
ULONG ClasspCalculateLogicalSectorSize(_In_ PDEVICE_OBJECT Fdo, _In_ ULONG BytesPerBlockInBigEndian)
VOID InterpretCapacityData(PDEVICE_OBJECT Fdo, PREAD_CAPACITY_DATA_EX ReadCapacityData)
_In_ PCEVENT_DESCRIPTOR _In_opt_ LPCGUID ActivityId
_IRQL_requires_same_ NTSTATUS ClasspEnableIdlePower(_In_ PDEVICE_OBJECT DeviceObject)
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
NTSTATUS ClasspInitializeGesn(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, IN PMEDIA_CHANGE_DETECTION_INFO Info)
struct _FAILURE_PREDICTION_INFO FAILURE_PREDICTION_INFO
UCHAR NumThinProvisioningRetries
#define NUM_WRITE_USING_TOKEN_RETRIES
ULONGLONG TotalRequestSizeSectors
BOOLEAN LoggedTURFailureSinceLastIO
NTSTATUS ClasspDeviceSeekPenaltyProperty(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
PMDL ClasspBuildDeviceMdl(PVOID Buffer, ULONG BufferLen, BOOLEAN WriteToDevice)
IO_COMPLETION_ROUTINE ClassReleaseQueueCompletion
FORCEINLINE LARGE_INTEGER ClasspGetCurrentTime(VOID)
NTSTATUS ClasspPersistentReserve(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
VOID ClasspEnableTimer(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
#define SRB_STATUS_COMMAND_TIMEOUT
FORCEINLINE BOOLEAN SimpleIsSlistEmpty(SINGLE_LIST_ENTRY *SListHdr)
#define STATUS_INVALID_DEVICE_REQUEST
FORCEINLINE BOOLEAN ClasspIsTokenOperation(_In_ PCDB Cdb)
NTSTATUS ClasspDeviceGetLBProvisioningVPDPage(_In_ PDEVICE_OBJECT DeviceObject, _Inout_opt_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS ClasspInitializeTimer(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
IN PVOID IN PVOID IN USHORT IN USHORT Size
FORCEINLINE UCHAR SrbGetSrbStatus(_In_ PVOID Srb)
struct _CLASS_ERROR_LOG_DATA CLASS_ERROR_LOG_DATA
IO_COMPLETION_ROUTINE TransferPktComplete
LIST_ENTRY AllFdosListEntry
NTSTATUS AllocateDictionaryEntry(IN PDICTIONARY Dictionary, IN ULONGLONG Key, IN ULONG Size, IN ULONG Tag, OUT PVOID *Entry)
struct _MEDIA_CHANGE_DETECTION_INFO MEDIA_CHANGE_DETECTION_INFO
ULONG LocalMinWorkingSetTransferPackets
PSTORAGE_REQUEST_BLOCK_HEADER Srb
PIRP DequeueDeferredClientIrp(PDEVICE_OBJECT Fdo)
VOID ClasspPerfIncrementErrorCount(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
VOID ClasspPopulateTokenTransferPacketDone(_In_ PVOID Context)
FORCEINLINE VOID ClasspMarkIrpAsIdle(PIRP Irp, BOOLEAN Idle)
UCHAR NumIoTimeoutRetries
READ_CAPACITY_DATA_EX LastKnownDriveCapacityData
NTSTATUS ClasspInitializeHotplugInfo(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical 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 SetupEjectionTransferPacket(TRANSFER_PACKET *Pkt, BOOLEAN PreventMediaRemoval, PKEVENT SyncEventPtr, PIRP OriginalIrp)
PCONTINUATION_ROUTINE ContinuationRoutine
FORCEINLINE PCDB SrbGetCdb(_In_ PVOID Srb)
VOID FreeDeviceInputMdl(PMDL Mdl)
ULONG ClassMaxInterleavePerCriticalIo
NTSTATUS ClasspIsPortable(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _Out_ PBOOLEAN IsPortable)
LIST_ENTRY AllPktsListEntry
VOID ClassQueueCapacityChangedEventWorker(_In_ PDEVICE_OBJECT DeviceObject)
BOOLEAN ReleaseQueueIrpAllocated
PDEVICE_OBJECT PhysicalDeviceObject
struct _CDB::_CDB10 CDB10
LIST_ENTRY AllTransferPacketsList
struct _MEDIA_CHANGE_DETECTION_INFO * PMEDIA_CHANGE_DETECTION_INFO
PUCHAR LowMemRetry_remainingBufPtr
struct _IDLE_POWER_FDO_LIST_ENTRY IDLE_POWER_FDO_LIST_ENTRY
FORCEINLINE VOID SrbSetSenseInfoBufferLength(_In_ PVOID Srb, _In_ UCHAR SenseInfoBufferLength)
NTSTATUS ClassReadCapacity16(_Inout_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _Inout_ PSCSI_REQUEST_BLOCK Srb)
FORCEINLINE VOID SrbClearSrbFlags(_In_ PVOID Srb, _In_ ULONG Flags)
NTSTATUS ClasspGetLBProvisioningInfo(_Inout_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
_IRQL_requires_same_ VOID ClasspReceiveWriteUsingTokenInformation(_In_ POFFLOAD_WRITE_CONTEXT OffloadWriteContext)
LIST_ENTRY IdlePowerFDOList
NTSTATUS ClasspCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS ClasspDeviceTrimProcess(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ PGUID ActivityId, _Inout_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS ClassIoCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
FORCEINLINE BOOLEAN ClasspIsObsoletePortDriver(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
VOID ClassInitializeDispatchTables(PCLASS_DRIVER_EXTENSION DriverExtension)
VOID TransferPacketQueueRetryDpc(PTRANSFER_PACKET Pkt)
PDEVICE_DSM_OFFLOAD_WRITE_PARAMETERS OffloadWriteParameters
#define DBG_NUM_PACKET_LOG_ENTRIES
FAILURE_PREDICTION_METHOD Method
DRIVER_ADD_DEVICE ClassAddDevice
LARGE_INTEGER TargetLocationCopy
VOID ClasspRetryDpcTimer(IN PCLASS_PRIVATE_FDO_DATA FdoData)
STORAGE_HOTPLUG_INFO HotplugInfo
NTSTATUS ClassDeviceGetLBProvisioningResources(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
struct _CLASS_PRIVATE_FDO_DATA::@1024 Retry
LARGE_INTEGER LastIoCompletionTime
PVOID PowerSettingNotificationHandle
struct _CDB::_CDB16 CDB16
FORCEINLINE VOID FREE_PORT_ALLOCATED_SENSE_BUFFER_EX(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PSTORAGE_REQUEST_BLOCK_HEADER Srb)
VOID DestroyAllTransferPackets(PDEVICE_OBJECT Fdo)
struct SRB_ALIGN _STORAGE_REQUEST_BLOCK_HEADER * PSTORAGE_REQUEST_BLOCK_HEADER
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
NTSTATUS ClasspAllocateReleaseQueueIrp(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
_In_ PVOID _Inout_ PULONG _In_ ULONG MaxBlockDescrCount
_In_ PDEVICE_OBJECT DeviceObject
PIO_WORKITEM WorkQueueItem
NTSTATUS ClasspAccessAlignmentProperty(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
return STATUS_NOT_IMPLEMENTED
VOID ClasspReleaseQueue(IN PDEVICE_OBJECT DeviceObject, IN PIRP ReleaseQueueIrp)
NTSTATUS ClasspModeSelect(_In_ PDEVICE_OBJECT Fdo, _In_reads_bytes_(Length) PCHAR ModeSelectBuffer, _In_ ULONG Length, _In_ BOOLEAN SavePages)
FORCEINLINE BOOLEAN ClasspLowerLayerNotSupport(_In_ NTSTATUS Status)
VOID ClasspCompleteOffloadRequest(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ NTSTATUS CompletionStatus)
_In_ ULONG _In_ UCHAR _In_ UCHAR PageControl
LARGE_INTEGER ThrottleStopTime
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
struct _OFFLOAD_WRITE_CONTEXT * POFFLOAD_WRITE_CONTEXT
VOID HistoryLogReturnedPacket(TRANSFER_PACKET *Pkt)
_In_ PTRANSFER_PACKET _In_ ULONG _In_ PIRP _In_ ULONG ListIdentifier
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
PVOID DefaultStorageRequestBlockAllocateRoutine(_In_ CLONG ByteSize)
struct _EX_TIMER * PEX_TIMER
#define SERVICE_ACTION_POPULATE_TOKEN
struct _CLASS_RETRY_INFO * PCLASS_RETRY_INFO
#define _IRQL_requires_min_(irql)
#define CLASS_SRBEX_SCSI_CDB16_BUFFER_SIZE
VOID ClasspScanForSpecialInRegistry(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
struct _IDLE_POWER_FDO_LIST_ENTRY * PIDLE_POWER_FDO_LIST_ENTRY
ULONG ReceiveTokenInformationBufferLength
C_ASSERT((sizeof(struct _CLASS_PRIVATE_COMMON_DATA) % sizeof(PVOID))==0)
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
_IRQL_requires_(PASSIVE_LEVEL) _IRQL_requires_same_ NTSTATUS ClassDetermineTokenOperationCommandSupport(_In_ PDEVICE_OBJECT DeviceObject)
VOID ClassQueueProvisioningTypeChangedEventWorker(_In_ PDEVICE_OBJECT DeviceObject)
NTSTATUS ClasspWriteCacheProperty(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS ClassQueryPnpCapabilities(IN PDEVICE_OBJECT PhysicalDeviceObject, IN PDEVICE_CAPABILITIES Capabilities)
_In_ PVOID _Inout_ PULONG _In_ ULONG _Inout_ PULONG _In_ ULONGLONG _Inout_ PDEVICE_DATA_SET_RANGE DataSetRange
CONST LARGE_INTEGER Magic10000
FORCEINLINE BOOLEAN ClasspIsIdleRequest(PIRP Irp)
FORCEINLINE UCHAR ClasspTransferPacketGetSenseInfoBufferLength(_In_ PTRANSFER_PACKET Pkt)
BOOLEAN ClasspMyStringMatches(_In_opt_z_ PCHAR StringToMatch, _In_z_ PCHAR TargetString)
#define SCSIOP_MODE_SENSE10
_IRQL_requires_same_ NTSTATUS ClasspStorageEventNotification(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
_In_z_ PCHAR TargetString
struct _OFFLOAD_READ_CONTEXT OFFLOAD_READ_CONTEXT
NTSTATUS ClasspDeviceGetLBAStatus(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS ClasspBlockLimitsDataSnapshot(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ BOOLEAN ForceQuery, _Out_ PCLASS_VPD_B0_DATA BlockLimitsData, _Out_ PULONG GenerationCount)
VOID ClasspInitializeRemoveTracking(_In_ PDEVICE_OBJECT DeviceObject)
#define SRB_STATUS_ABORTED
FORCEINLINE BOOLEAN PORT_ALLOCATED_SENSE_EX(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PSTORAGE_REQUEST_BLOCK_HEADER Srb)
VOID InitLowMemRetry(PTRANSFER_PACKET Pkt, PVOID BufPtr, ULONG Len, LARGE_INTEGER TargetLocation)
_IRQL_requires_same_ PUCHAR ClasspBinaryToAscii(_In_reads_(Length) PUCHAR HexBuffer, _In_ ULONG Length, _Inout_ PULONG UpdateLength)
#define NUM_DRIVECAPACITY_RETRIES
#define _IRQL_requires_same_
DRIVER_STARTIO ClasspStartIo
#define NUM_LOCKMEDIAREMOVAL_RETRIES
_Reserved_ PVOID Reserved
VOID(* PCONTINUATION_ROUTINE)(_In_ PVOID Context)
VOID ClasspCompleteOffloadRead(_In_ POFFLOAD_READ_CONTEXT OffloadReadContext, _In_ NTSTATUS CompletionStatus)
struct _CLASS_ERROR_LOG_DATA * PCLASS_ERROR_LOG_DATA
OPCODE_SENSE_DATA_IO_LOG_MESSAGE_CONTEXT_HEADER ContextHeader
_In_ BUS_QUERY_ID_TYPE IdType
union _CLASS_PRIVATE_FDO_DATA::@1021 PowerSrb
NTSTATUS ServiceTransferRequest(PDEVICE_OBJECT Fdo, PIRP Irp, BOOLEAN PostToDpc)
ULONGLONG TotalSectorsProcessed
enum _MEDIA_CHANGE_DETECTION_STATE MEDIA_CHANGE_DETECTION_STATE
struct _IO_RETRIED_LOG_MESSAGE_CONTEXT IO_RETRIED_LOG_MESSAGE_CONTEXT
FORCEINLINE BOOLEAN ClasspIsOffloadDataTransferCommand(_In_ PCDB Cdb)
_In_ PVOID _Inout_ PULONG _In_ ULONG _Inout_ PULONG _In_ ULONGLONG MaxLbaCount
#define TEST_FLAG(Flags, Bit)
VOID ClasspUninitializeRemoveTracking(_In_ PDEVICE_OBJECT DeviceObject)
BOOLEAN LoggedSYNCFailure
struct _CDB::_MODE_SENSE MODE_SENSE
NTSTATUS InterpretReadCapacity16Data(_Inout_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PREAD_CAPACITY16_DATA ReadCapacity16Data)
PVOID(* PSRB_ALLOCATE_ROUTINE)(_In_ CLONG ByteSize)
enum _DEVICE_RELATION_TYPE DEVICE_RELATION_TYPE
IO_WORKITEM_ROUTINE ClasspUpdateDiskProperties
LIST_ENTRY DeferredClientIrpList
NTSTATUS ClasspMcnControl(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, IN PIRP Irp, IN PSCSI_REQUEST_BLOCK Srb)
PPHYSICAL_DEVICE_EXTENSION ClassRemoveChild(IN PFUNCTIONAL_DEVICE_EXTENSION Parent, IN PPHYSICAL_DEVICE_EXTENSION Child, IN BOOLEAN AcquireLock)
LARGE_INTEGER LowMemRetry_nextChunkTargetLocation
#define MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS
struct _CSCAN_LIST * PCSCAN_LIST
#define NUM_POPULATE_TOKEN_RETRIES
struct _PNL_SLIST_HEADER * PPNL_SLIST_HEADER
NTSTATUS NTAPI ClassShutdownFlush(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PVOID ContinuationContext
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
NTSTATUS NTAPI ClassDeviceControlDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
PDEVICE_MANAGE_DATA_SET_ATTRIBUTES DsmAttributes
FORCEINLINE VOID ClasspSrbSetOriginalIrp(_In_ PSTORAGE_REQUEST_BLOCK_HEADER Srb, _In_ PIRP Irp)
PVOID GetDictionaryEntry(IN PDICTIONARY Dictionary, IN ULONGLONG Key)
NTSTATUS ClassPnpQueryFdoRelations(IN PDEVICE_OBJECT Fdo, IN PIRP Irp)
VOID ClasspPerfIncrementSuccessfulIo(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
_In_ PVOID _Inout_ PULONG CurrentBlockDescrIndex
_In_ DEVICE_RELATION_TYPE RelationType
VOID ClasspConvertToScsiRequestBlock(_Out_ PSCSI_REQUEST_BLOCK Srb, _In_ PSTORAGE_REQUEST_BLOCK SrbEx)
enum _CLASS_DETECTION_STATE CLASS_DETECTION_STATE
ULONG MaxTokenOperationListIdentifier
PVOID ScreenStateNotificationHandle
#define SERVICE_ACTION_RECEIVE_TOKEN_INFORMATION
_In_ PVOID _Inout_ PULONG _In_ ULONG _Inout_ PULONG _In_ ULONGLONG _Inout_ PDEVICE_DATA_SET_RANGE _Inout_ PULONGLONG TotalSectorsProcessed
NTSTATUS InitializeTransferPackets(PDEVICE_OBJECT Fdo)
USHORT StarvationDuration
VOID ClasspInitializeIdleTimer(PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
PSRB_HISTORY RetryHistory
enum MEDIA_LOCK_TYPE * PMEDIA_LOCK_TYPE
VOID CleanupTransferPacketToWorkingSetSize(_In_ PDEVICE_OBJECT Fdo, _In_ BOOLEAN LimitNumPktToDelete, _In_ ULONG Node)
VOID SetupReadWriteTransferPacket(PTRANSFER_PACKET pkt, PVOID Buf, ULONG Len, LARGE_INTEGER DiskLocation, PIRP OriginalIrp)
NTSTATUS ClassRetrieveDeviceRelations(IN PDEVICE_OBJECT Fdo, IN DEVICE_RELATION_TYPE RelationType, OUT PDEVICE_RELATIONS *DeviceRelations)
VOID ClasspCleanupProtectedLocks(IN PFILE_OBJECT_EXTENSION FsContext)
struct _CDB::_TOKEN_OPERATION TOKEN_OPERATION
VOID EnqueueDeferredClientIrp(PDEVICE_OBJECT Fdo, PIRP Irp)
DRIVER_UNLOAD ClassUnload
VOID ClassRetryRequest(IN PDEVICE_OBJECT SelfDeviceObject, IN PIRP Irp, _In_ _In_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) IN LONGLONG TimeDelta100ns)
struct _TRANSFER_PACKET * PTRANSFER_PACKET
_In_ WDFREQUEST _In_ MEDIA_LOCK_TYPE LockType
_In_opt_ WDFREQUEST _In_ ULONG _In_ BOOLEAN _In_ PCDB Cdb
VOID DestroyTransferPacket(_In_ __drv_freesMem(mem) PTRANSFER_PACKET Pkt)
_In_ PREAD_CAPACITY_DATA ReadCapacityBuffer
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR MajorFunctionCode
BOOLEAN ClasspIsThinProvisioningError(_In_ PSCSI_REQUEST_BLOCK _Srb)
VOID ClassAddChild(_In_ PFUNCTIONAL_DEVICE_EXTENSION Parent, _In_ PPHYSICAL_DEVICE_EXTENSION Child, _In_ BOOLEAN AcquireLock)
IO_WORKITEM_ROUTINE ClassLogResourceExhaustionEvent
POWER_SETTING_CALLBACK ClasspPowerSettingCallback
NTSTATUS ClasspAllocateReleaseRequest(IN PDEVICE_OBJECT Fdo)
GUID ClassGuidQueryRegInfoEx
LONG RemoveLockFailAcquire
NTSTATUS NTAPI ClassReadWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_Must_inspect_result_ _In_ WDFDEVICE Fdo
VOID ClassQueueThresholdEventWorker(_In_ PDEVICE_OBJECT DeviceObject)
_In_opt_ PVPB _In_ PDEVICE_OBJECT RealDeviceObject
PPNL_SLIST_HEADER FreeTransferPacketsLists
#define NUM_MODESENSE_RETRIES
_In_z_ PWSTR _Out_ PULONG MaximumListIdentifier
#define SRB_FUNCTION_STORAGE_REQUEST_BLOCK
NTSTATUS NTAPI ClassDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _SINGLE_LIST_ENTRY * Next
LONGLONG CurrentNoWakeTolerance
PCLASS_RETRY_INFO ListHead
VOID ClassSendEjectionNotification(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
struct _OFFLOAD_READ_CONTEXT * POFFLOAD_READ_CONTEXT
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG _In_ ULONG PreviousRetryCount
struct _CLASS_RETRY_INFO * Next
UCHAR ReleaseQueueSrbBuffer[CLASS_SRBEX_NO_SRBEX_DATA_BUFFER_SIZE]
ULONGLONG OperationStartTime
BOOLEAN IdlePrioritySupported
VOID ClasspFreeReleaseRequest(IN PDEVICE_OBJECT Fdo)
PMDL BuildDeviceInputMdl(PVOID Buffer, ULONG BufferLen)
#define PROVISIONING_TYPE_THIN
#define SCSIOP_RECEIVE_ROD_TOKEN_INFORMATION
#define SCSIOP_READ_CAPACITY16
#define SCSIOP_MEDIUM_REMOVAL
#define STATUS_INVALID_PARAMETER_1
struct _CSCAN_LIST CSCAN_LIST
#define SERVICE_ACTION_WRITE_USING_TOKEN
VOID ClasspGetInquiryVpdSupportInfo(_Inout_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
#define SCSIOP_POPULATE_TOKEN
pPkgPnp m_DeviceInterfaceLock AcquireLock(pFxDriverGlobals)
_IRQL_requires_same_ NTSTATUS ClasspGetTokenOperationCommandBufferLength(_In_ PDEVICE_OBJECT Fdo, _In_ ULONG ServiceAction, _Inout_ PULONG CommandBufferLength, _Out_opt_ PULONG TokenOperationBufferLength, _Out_opt_ PULONG ReceiveTokenInformationBufferLength)
NTSTATUS ClasspRefreshFunctionSupportInfo(_Inout_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ BOOLEAN ForceQuery)
ULONG NumHighPriorityPagingIo
ULONG UpdateDiskPropertiesWorkItemActive
KDEFERRED_ROUTINE ClasspRetryRequestDpc
_In_ PTRANSFER_PACKET _In_ ULONG _In_ PIRP OriginalIrp
_In_ ULONG _Inout_bytecount_(cj) DRVENABLEDATA *pded)
NTSTATUS CreateStorageRequestBlock(_Inout_ PSTORAGE_REQUEST_BLOCK *Srb, _In_ USHORT AddressType, _In_opt_ PSRB_ALLOCATE_ROUTINE AllocateRoutine, _Inout_opt_ ULONG *ByteSize, _In_ ULONG NumSrbExData,...)
FORCEINLINE VOID SimplePushSlist(SINGLE_LIST_ENTRY *SListHdr, SINGLE_LIST_ENTRY *SListEntry)
_Field_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG RetryIn100nsUnits
struct _OPCODE_SENSE_DATA_IO_LOG_MESSAGE_CONTEXT_HEADER * POPCODE_SENSE_DATA_IO_LOG_MESSAGE_CONTEXT_HEADER
DRIVER_INITIALIZE DriverEntry
ULONG CopyOffloadMaxTargetDuration
PPCI_DRIVER_EXTENSION DriverExtension
DRIVER_DISPATCH(nfs41_FsdDispatch)
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
VOID ClasspContinueOffloadWrite(_In_ __drv_aliasesMem POFFLOAD_WRITE_CONTEXT OffloadWriteContext)
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN _In_opt_ WDFREQUEST OriginalRequest
VOID ClasspRegisterMountedDeviceInterface(IN PDEVICE_OBJECT DeviceObject)
#define IRP_MJ_SYSTEM_CONTROL
#define _Deref_out_range_(l, h)
enum _IO_PRIORITY_HINT IO_PRIORITY_HINT
VOID ClasspZeroQERR(_In_ PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI ClassDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
CLASSPNP_SCAN_FOR_SPECIAL_INFO ClassBadItems[]
VOID HistoryLogSendPacket(TRANSFER_PACKET *Pkt)
VOID ClasspDeleteTimer(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN WriteToDevice
UCHAR MaxNumberOfIoRetries
LARGE_INTEGER LongestThrottlePeriod
NTSTATUS ClasspPagingNotificationCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_OBJECT RealDeviceObject)
struct _TRANSFER_PACKET TRANSFER_PACKET
IO_WORKITEM_ROUTINE_EX CleanupTransferPacketToWorkingSetSizeWorker
VOID ClasspCleanupOffloadReadContext(_In_ __drv_freesMem(mem) POFFLOAD_READ_CONTEXT OffloadReadContext)
VOID ClasspReceiveWriteUsingTokenInformationDone(_In_ POFFLOAD_WRITE_CONTEXT OffloadWriteContext, _In_ NTSTATUS CompletionCausingStatus)
#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE
ULONG LowMemRetry_remainingBufLen
NTSTATUS ClasspDeviceLBProvisioningProperty(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS ClasspDeviceGetBlockDeviceCharacteristicsVPDPage(_In_ PFUNCTIONAL_DEVICE_EXTENSION fdoExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
VOID ClasspReceivePopulateTokenInformationTransferPacketDone(_In_ PVOID Context)
#define IS_SCSIOP_READWRITE(opCode)
FORCEINLINE BOOLEAN ClasspIsIdleRequestSupported(PCLASS_PRIVATE_FDO_DATA FdoData, PIRP Irp)
#define SRB_STATUS_TIMEOUT
VOID ClassFreeOrReuseSrb(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, IN __drv_freesMem(mem) PSCSI_REQUEST_BLOCK Srb)
FORCEINLINE PVOID SrbGetSenseInfoBuffer(_In_ PVOID Srb)
RTL_GENERIC_COMPARE_ROUTINE RemoveTrackingCompareRoutine
#define CLASS_SRBEX_NO_SRBEX_DATA_BUFFER_SIZE
BOOLEAN ClasspFailurePredictionPeriodMissed(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
VOID ClassQueueResourceExhaustionEventWorker(_In_ PDEVICE_OBJECT DeviceObject)
FORCEINLINE BOOLEAN ClasspIsReceiveTokenInformation(_In_ PCDB Cdb)
_Dispatch_type_(IRP_MJ_CREATE) _Dispatch_type_(IRP_MJ_CLOSE) DRIVER_DISPATCH ClassCreateClose
VOID RetryRequest(PDEVICE_OBJECT DeviceObject, PIRP Irp, PSCSI_REQUEST_BLOCK Srb, BOOLEAN Associated, LONGLONG TimeDelta100ns)
_In_z_ PWSTR _Out_ PULONG MaxDuration
volatile ULONG TokenOperationListIdentifier
FAILURE_PREDICTION_METHOD
NTSTATUS ClassGetPdoId(IN PDEVICE_OBJECT Pdo, IN BUS_QUERY_ID_TYPE IdType, IN PUNICODE_STRING IdString)
LARGE_INTEGER LastFailurePredictionQueryTime
NTKRNLVISTAAPI IO_PRIORITY_HINT NTAPI IoGetIoPriorityHint(_In_ PIRP Irp)
#define __drv_freesMem(kind)
BOOLEAN InterpretTransferPacketError(PTRANSFER_PACKET Pkt)
VOID EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, __drv_aliasesMem PTRANSFER_PACKET Pkt)
BOOLEAN TestDictionarySignature(IN PDICTIONARY Dictionary)
ULONGLONG LogicalBlockOffset
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
#define SCSIOP_READ_CAPACITY
VOID ClasspDisableTimer(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
FORCEINLINE ULONG ClasspGetMaxUsableBufferLengthFromOffset(_In_ PVOID BaseAddress, _In_ ULONG OffsetInBytes, _In_ ULONG BaseStructureSizeInBytes)
VOID HistoryInitializeRetryLogs(_Out_ PSRB_HISTORY History, ULONG HistoryCount)
#define SLIST_ENTRY(type)
BOOLEAN StepLowMemRetry(PTRANSFER_PACKET Pkt)
FORCEINLINE SINGLE_LIST_ENTRY * SimplePopSlist(SINGLE_LIST_ENTRY *SListHdr)
VOID InitializeDictionary(IN PDICTIONARY Dictionary)
VOID SetupModeSelectTransferPacket(TRANSFER_PACKET *Pkt, PKEVENT SyncEventPtr, PVOID ModeSelectBuffer, UCHAR ModeSelectBufferLen, BOOLEAN SavePages, PIRP OriginalIrp)
BOOLEAN DisableThrottling
_IRQL_requires_max_(APC_LEVEL) _IRQL_requires_min_(PASSIVE_LEVEL) _IRQL_requires_same_ VOID ClasspSetupPopulateTokenTransferPacket(_In_ __drv_aliasesMem POFFLOAD_READ_CONTEXT OffloadReadContext
NTSTATUS ClasspMediaChangeCompletion(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
struct tagContext Context
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
ULONGLONG TotalSectorsProcessed
NTSTATUS NTAPI ClassSystemControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS ClassDeviceHwFirmwareDownloadProcess(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS ClassDeviceHwFirmwareGetInfoProcess(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
struct _OFFLOAD_WRITE_CONTEXT OFFLOAD_WRITE_CONTEXT
FORCEINLINE VOID SrbSetSenseInfoBuffer(_In_ PVOID Srb, _In_opt_ PVOID SenseInfoBuffer)
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)
_IRQL_requires_same_ NTSTATUS ClasspGetTokenOperationDescriptorLimits(_In_ PDEVICE_OBJECT Fdo, _In_ ULONG ServiceAction, _In_ ULONG MaxParameterBufferLength, _Out_ PULONG MaxBlockDescriptorsCount, _Out_ PULONGLONG MaxBlockDescriptorsLength)
FORCEINLINE BOOLEAN ClasspTransferPacketGetNumberOfRetriesDone(_In_ PTRANSFER_PACKET Pkt, _In_ PCDB Cdb, _Out_ PULONG TimesAlreadyRetried)
NTSTATUS NTAPI ClassMinimalPowerHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_In_ PTRANSFER_PACKET _In_ ULONG _In_reads_bytes_(Length) PUCHAR PopulateTokenBuffer
FORCEINLINE VOID SimpleInitSlistHdr(SINGLE_LIST_ENTRY *SListHdr)
SENSE_DATA_EX SrbErrorSenseData
VOID ClasspCompleteOffloadWrite(_In_ __drv_freesMem(Mem) POFFLOAD_WRITE_CONTEXT OffloadWriteContext, _In_ NTSTATUS CompletionCausingStatus)
ULONG ReceiveTokenInformationBufferLength
VOID History(INT, LPTSTR)
BOOLEAN LegacyErrorHandling
struct _PNL_SLIST_HEADER PNL_SLIST_HEADER
VOID ClasspCleanupOffloadWriteContext(_In_ __drv_freesMem(mem) POFFLOAD_WRITE_CONTEXT OffloadWriteContext)
VOID ClasspDisablePowerNotification(PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
FORCEINLINE PCDB ClasspTransferPacketGetCdb(_In_ PTRANSFER_PACKET Pkt)
ULONG MaxInterleavedNormalIo
FORCEINLINE UCHAR GET_FDO_EXTENSON_SENSE_DATA_LENGTH(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
PCLASS_INTERPRET_SENSE_INFO2 InterpretSenseInfo
IN PSCSI_REQUEST_BLOCK Srb
PTRANSFER_PACKET DequeueFreeTransferPacketEx(_In_ PDEVICE_OBJECT Fdo, _In_ BOOLEAN AllocIfNeeded, _In_ ULONG Node)
LARGE_INTEGER AntiStarvationStartTime
NTSTATUS ClasspDeviceTrimProperty(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _Inout_ PSCSI_REQUEST_BLOCK Srb)
_In_ PVOID _Inout_ PULONG _In_ ULONG _Inout_ PULONG CurrentLbaCount
ULONG DiskIdleTimeoutInMS
NTSTATUS NTAPI ClassGlobalDispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_In_ PRTL_GENERIC_COMPARE_ROUTINE _In_ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
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)
_IRQL_requires_same_ _In_ CLONG ByteSize
struct _FAILURE_PREDICTION_INFO * PFAILURE_PREDICTION_INFO
KGUARDED_MUTEX IdlePowerFDOListMutex
RTL_GENERIC_FREE_ROUTINE RemoveTrackingFreeRoutine
CLASS_ERROR_LOG_DATA ErrorLogs[NUM_ERROR_LOG_ENTRIES]
FORCEINLINE BOOLEAN ClasspIsThinProvisioned(_In_ PCLASS_FUNCTION_SUPPORT_INFO SupportInfo)
UCHAR PowerSrbBuffer[CLASS_SRBEX_SCSI_CDB16_BUFFER_SIZE]
BOOLEAN IsCachedDriveCapDataValid
IO_WORKITEM_ROUTINE ClassLogThresholdEvent
base of all file and directory entries
#define NUM_RECEIVE_TOKEN_INFORMATION_RETRIES
LARGE_INTEGER LastNonIdleIoTime
VOID SetupDriveCapacityTransferPacket(TRANSFER_PACKET *Pkt, PVOID ReadCapacityBuffer, ULONG ReadCapacityBufferLen, PKEVENT SyncEventPtr, PIRP OriginalIrp, BOOLEAN Use16ByteCdb)
FORCEINLINE PVOID ClasspTransferPacketGetSenseInfoBuffer(_In_ PTRANSFER_PACKET Pkt)
IO_WORKITEM_ROUTINE ClasspLogIOEventWithContext
_IRQL_requires_same_ NTSTATUS ClasspGetBlockDeviceTokenLimitsInfo(_Inout_ PDEVICE_OBJECT DeviceObject)
NTSTATUS ClasspDuidQueryProperty(PDEVICE_OBJECT DeviceObject, PIRP Irp)
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG IoDeviceCode
BOOLEAN RetryTransferPacket(PTRANSFER_PACKET Pkt)
VOID ClasspReceiveWriteUsingTokenInformationTransferPacketDone(_In_ POFFLOAD_WRITE_CONTEXT OffloadWriteContext)
#define IRP_MJ_DEVICE_CONTROL
union _CLASS_PRIVATE_FDO_DATA::@1022 ReleaseQueueSrb
BOOLEAN CompleteOriginalIrpWhenLastPacketCompletes
FORCEINLINE BOOLEAN ClasspSupportsUnmap(_In_ PCLASS_FUNCTION_SUPPORT_INFO SupportInfo)
VOID NTAPI ClasspScanForClassHacks(IN PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, IN ULONG_PTR Data)
ULONG LocalMaxWorkingSetTransferPackets