40 #ifndef CLASS_GLOBAL_BREAK_ON_LOST_IRPS
41 #error "CLASS_GLOBAL_BREAK_ON_LOST_IRPS undefined"
42 #define CLASS_GLOBAL_BREAK_ON_LOST_IRPS 0
45 #ifndef CLASS_GLOBAL_SECONDS_TO_WAIT_FOR_SYNCHRONOUS_SRB
46 #error "CLASS_GLOBAL_SECONDS_TO_WAIT_FOR_SYNCHRONOUS_SRB undefined"
47 #define CLASS_GLOBAL_SECONDS_TO_WAIT_FOR_SYNCHRONOUS_SRB 300
50 #ifndef CLASS_GLOBAL_BUFFERED_DEBUG_PRINT
51 #error "CLASS_GLOBAL_BUFFERED_DEBUG_PRINT undefined"
52 #define CLASS_GLOBAL_BUFFERED_DEBUG_PRINT 0
55 #ifndef CLASS_GLOBAL_BUFFERED_DEBUG_PRINT_BUFFER_SIZE
56 #error "CLASS_GLOBAL_BUFFERED_DEBUG_PRINT_BUFFER_SIZE undefined"
57 #define CLASS_GLOBAL_BUFFERED_DEBUG_PRINT_BUFFER_SIZE 512
60 #ifndef CLASS_GLOBAL_BUFFERED_DEBUG_PRINT_BUFFERS
61 #error "CLASS_GLOBAL_BUFFERED_DEBUG_PRINT_BUFFERS undefined"
62 #define CLASS_GLOBAL_BUFFERED_DEBUG_PRINT_BUFFERS 512
66 #pragma data_seg("NONPAGE")
71 CLASSPNP_GLOBALS ClasspnpGlobals;
77 LONG ClassDebug = 0x00000000;
85 ULONG DiskSpinupIndex = 0;
86 DISK_SPINUP_TRACES DiskSpinupTraces[NUMBER_OF_DISK_SPINUP_TRACES];
100 ClasspnpGlobals.Buffer =
NULL;
101 ClasspnpGlobals.Index = (
ULONG)-1;
102 ClasspnpGlobals.BreakOnLostIrps = CLASS_GLOBAL_BREAK_ON_LOST_IRPS;
103 ClasspnpGlobals.EachBufferSize = CLASS_GLOBAL_BUFFERED_DEBUG_PRINT_BUFFER_SIZE;
104 ClasspnpGlobals.NumberOfBuffers = CLASS_GLOBAL_BUFFERED_DEBUG_PRINT_BUFFERS;
105 ClasspnpGlobals.SecondsToWaitForIrps = CLASS_GLOBAL_SECONDS_TO_WAIT_FOR_SYNCHRONOUS_SRB;
111 ClasspnpGlobals.UseBufferedDebugPrint = CLASS_GLOBAL_BUFFERED_DEBUG_PRINT;
144 if ((DebugPrintLevel <= (ClassDebug & 0x0000ffff)) ||
145 ((1 << (DebugPrintLevel + 15)) & ClassDebug)) {
147 if (ClasspnpGlobals.UseBufferedDebugPrint &&
148 ClasspnpGlobals.Buffer ==
NULL) {
158 if (ClasspnpGlobals.Buffer ==
NULL) {
162 RtlSIZETMult(ClasspnpGlobals.NumberOfBuffers,
163 ClasspnpGlobals.EachBufferSize,
167 "ClassDebugPrint: Allocating %x bytes for "
169 ClasspnpGlobals.Index = (
ULONG)-1;
170 ClasspnpGlobals.Buffer =
173 "ClassDebugPrint: Allocated buffer at %p\n",
174 ClasspnpGlobals.Buffer);
176 if (ClasspnpGlobals.Buffer) {
186 if (ClasspnpGlobals.UseBufferedDebugPrint &&
187 ClasspnpGlobals.Buffer !=
NULL) {
198 index %= ClasspnpGlobals.NumberOfBuffers;
199 index *= (
ULONG)ClasspnpGlobals.EachBufferSize;
201 buffer = ClasspnpGlobals.Buffer;
246 TracePrint((
TRACE_LEVEL_ERROR, TRACE_FLAG_RW,
"SRB completed with status PENDING in packet %ph: (op=%s srbstat=%s(%xh), irpstat=%xh)",
258 TracePrint((
TRACE_LEVEL_WARNING, TRACE_FLAG_RW,
"SRB and IRP status don't match in packet %ph: (op=%s srbstat=%s(%xh), irpstat=%xh)",
267 TracePrint((
TRACE_LEVEL_ERROR, TRACE_FLAG_RW,
"SRB and IRP result transfer lengths don't match in succeeded packet %ph: (op=%s, SrbStatus=%s, Srb.DataTransferLength=%xh, Irp->IoStatus.Information=%Ixh).",
277 TracePrint((
TRACE_LEVEL_WARNING, TRACE_FLAG_RW,
"SRB and IRP status don't match in packet %ph: (op=%s srbstat=%s(%xh), irpstat=%xh)",
284 TracePrint((
TRACE_LEVEL_WARNING, TRACE_FLAG_RW,
"Packet %ph failed (op=%s srbstat=%s(%xh), irpstat=%xh, sense=%s/%s/%s)",
301 TracePrint((
TRACE_LEVEL_ERROR, TRACE_FLAG_RW,
"SRB and IRP result transfer lengths don't match in failed packet %ph: (op=%s, SrbStatus=%s, Srb.DataTransferLength=%xh, Irp->IoStatus.Information=%Ixh).",
323 switch (pCdb->
CDB10.OperationCode){
335 TracePrint((
TRACE_LEVEL_ERROR, TRACE_FLAG_RW,
"Miniport illegally changed Srb.Cdb.OperationCode in packet %ph failed (op=%s srbstat=%s(%xh), irpstat=%xh, sense=%s/%s/%s)",
364 Pkt->DbgTimeReturned.QuadPart = 0
L;
367 fdoData->DbgPacketLogs[fdoData->DbgPacketLogNextIndex] = *
Pkt;
368 fdoData->DbgPacketLogNextIndex++;
394 Pkt->DbgOriginalIrpCopy.Tail.Overlay.DriverContext[0] =
Pkt->
OriginalIrp->Tail.Overlay.DriverContext[0];
404 fdoData->DbgPacketLogs[fdoData->DbgPacketLogNextIndex] = *
Pkt;
405 fdoData->DbgPacketLogNextIndex++;
427 ULONG incrementResult;
429 *
pValue = incrementResult;
443 if (FdoData->DbgInitFlushLogging){
444 FdoData->DbgNumIORequests = 0;
445 FdoData->DbgNumFUAs = 0;
446 FdoData->DbgNumFlushes = 0;
447 FdoData->DbgIOsSinceFUA = 0;
448 FdoData->DbgIOsSinceFlush = 0;
449 FdoData->DbgAveIOsToFUA = 0;
450 FdoData->DbgAveIOsToFlush = 0;
451 FdoData->DbgMaxIOsToFUA = 0;
452 FdoData->DbgMaxIOsToFlush = 0;
453 FdoData->DbgMinIOsToFUA = 0xffffffff;
454 FdoData->DbgMinIOsToFlush = 0xffffffff;
455 FdoData->DbgInitFlushLogging =
FALSE;
465 DbgSafeInc(&FdoData->DbgNumIORequests);
466 DbgSafeInc(&FdoData->DbgIOsSinceFlush);
468 if (FdoData->DbgNumFUAs > 0){
469 FdoData->DbgMinIOsToFUA =
min(FdoData->DbgMinIOsToFUA, FdoData->DbgIOsSinceFUA);
471 DbgSafeInc(&FdoData->DbgNumFUAs);
472 FdoData->DbgAveIOsToFUA = FdoData->DbgNumIORequests/FdoData->DbgNumFUAs;
473 FdoData->DbgIOsSinceFUA = 0;
476 DbgSafeInc(&FdoData->DbgIOsSinceFUA);
477 FdoData->DbgMaxIOsToFUA =
max(FdoData->DbgMaxIOsToFUA, FdoData->DbgIOsSinceFUA);
479 FdoData->DbgMaxIOsToFlush =
max(FdoData->DbgMaxIOsToFlush, FdoData->DbgIOsSinceFlush);
482 if (FdoData->DbgNumFlushes > 0){
483 FdoData->DbgMinIOsToFlush =
min(FdoData->DbgMinIOsToFlush, FdoData->DbgIOsSinceFlush);
485 DbgSafeInc(&FdoData->DbgNumFlushes);
486 FdoData->DbgAveIOsToFlush = FdoData->DbgNumIORequests/FdoData->DbgNumFlushes;
487 FdoData->DbgIOsSinceFlush = 0;
517 PDISK_SPINUP_TRACES
Entry;
522#pragma warning(disable:4210)
538 Index =
Index & (NUMBER_OF_DISK_SPINUP_TRACES - 1);
555 DISK_SPINUP_BACKTRACE_LENGTH,
573 char *ioctlStr =
"?";
578 #define MAKE_CASE(ioctlCode) case ioctlCode: ioctlStr = #ioctlCode; break;
612 char *scsiOpStr =
"?";
619 #define MAKE_CASE(scsiOpCode) case scsiOpCode: scsiOpStr = #scsiOpCode; break;
724 char *srbStatStr =
"?";
729 #define MAKE_CASE(srbStat) \
731 srbStatStr = #srbStat; \
733 case srbStat|SRB_STATUS_QUEUE_FROZEN: \
734 srbStatStr = #srbStat "|SRB_STATUS_QUEUE_FROZEN"; \
736 case srbStat|SRB_STATUS_AUTOSENSE_VALID: \
737 srbStatStr = #srbStat "|SRB_STATUS_AUTOSENSE_VALID"; \
739 case srbStat|SRB_STATUS_QUEUE_FROZEN|SRB_STATUS_AUTOSENSE_VALID: \
740 srbStatStr = #srbStat "|SRB_STATUS_QUEUE_FROZEN|SRB_STATUS_AUTOSENSE_VALID"; \
779 char *senseCodeStr =
"?";
790 validSense = ScsiGetSenseKeyAndCodes(senseData,
800 #define MAKE_CASE(snsCod) case snsCod: senseCodeStr = #snsCod; break;
828 char *adSenseCodeStr =
"?";
838 validSense = ScsiGetSenseKeyAndCodes(senseData,
846 switch (adSenseCode){
849 #define MAKE_CASE(adSnsCod) case adSnsCod: adSenseCodeStr = #adSnsCod; break;
878 return adSenseCodeStr;
884 char *adSenseCodeQualStr =
"?";
889 UCHAR adSenseCodeQual;
895 validSense = ScsiGetSenseKeyAndCodes(senseData,
902 switch (adSenseCode){
905 #define MAKE_CASE(adSnsCodQual) case adSnsCodQual: adSenseCodeQualStr = #adSnsCodQual; break;
908 switch (adSenseCodeQual){
921 switch (adSenseCodeQual){
929 switch (adSenseCodeQual){
934 switch (adSenseCodeQual){
940 switch (adSenseCodeQual){
948 switch (adSenseCodeQual){
956 switch (adSenseCodeQual){
969 return adSenseCodeQualStr;
#define InterlockedIncrement
#define InterlockedExchange
NTSYSAPI ULONG NTAPI vDbgPrintEx(_In_ ULONG ComponentId, _In_ ULONG Level, _In_z_ PCCH Format, _In_ va_list ap)
#define DPFLTR_ERROR_LEVEL
_In_ PSCSI_REQUEST_BLOCK Srb
#define SCSI_ADSENSE_ILLEGAL_BLOCK
#define SCSIOP_PLAY_AUDIO
#define SCSI_ADSENSE_LUN_NOT_READY
#define SCSIOP_LOAD_UNLOAD_SLOT
#define SCSIOP_SEND_DIAGNOSTIC
#define SCSIOP_MODE_SENSE10
#define SCSIOP_PLAY_TRACK_RELATIVE
#define SCSIOP_READ_REVERSE
#define SCSI_ADSENSE_VENDOR_UNIQUE
#define SCSI_SENSEQ_MANUAL_INTERVENTION_REQUIRED
#define SCSI_SENSE_NO_SENSE
#define SCSI_SENSEQ_CLEANING_CARTRIDGE_INSTALLED
#define SCSIOP_GET_EVENT_STATUS
#define SCSI_SENSEQ_OPERATION_IN_PROGRESS
#define SCSI_SENSEQ_INCOMPATIBLE_FORMAT
#define SCSIOP_RECOVER_BUF_DATA
#define SCSIOP_SEARCH_DATA_HIGH
#define SCSI_SENSEQ_AUTHENTICATION_FAILURE
#define SCSIOP_WRITE_VERIFY
#define SCSI_SENSEQ_END_OF_MEDIA_DETECTED
#define SCSIOP_REQUEST_SENSE
#define SCSI_ADSENSE_SEEK_ERROR
#define SCSIOP_PLAY_AUDIO_MSF
#define SCSIOP_READ_SUB_CHANNEL
#define SCSI_SENSE_RESERVED
#define SCSI_SENSE_UNIQUE
#define SCSIOP_CHANGE_DEFINITION
#define SCSI_SENSEQ_SETMARK_DETECTED
#define SCSIOP_GET_CONFIGURATION
#define SCSIOP_TEST_UNIT_READY
#define SCSIOP_PLAY_TRACK_INDEX
#define SCSIOP_SEND_CUE_SHEET
#define SCSI_ADSENSE_REC_DATA_NOECC
#define SCSIOP_COPY_COMPARE
#define SCSI_SENSE_COPY_ABORTED
#define SCSI_ADSENSE_INVALID_LUN
#define SCSI_ADSENSE_POSITION_ERROR
#define SCSI_SENSE_DATA_PROTECT
#define SCSI_ADSENSE_INVALID_CDB
#define SCSI_ADSENSE_WRITE_PROTECT
#define SCSI_ADSENSE_MUSIC_AREA
#define SCSI_ADSENSE_TRACK_ERROR
#define SCSIOP_RELEASE_UNIT
#define SCSIOP_MEDIUM_REMOVAL
#define SCSIOP_SET_READ_AHEAD
#define SCSI_SENSEQ_KEY_NOT_ESTABLISHED
#define SCSI_SENSE_MEDIUM_ERROR
#define SCSI_SENSEQ_READ_OF_SCRAMBLED_SECTOR_WITHOUT_AUTHENTICATION
#define SCSIOP_SEND_DVD_STRUCTURE
#define SCSIOP_FORMAT_UNIT
#define SCSIOP_PAUSE_RESUME
#define SCSI_ADSENSE_ILLEGAL_COMMAND
#define SCSI_SENSEQ_UNKNOWN_FORMAT
#define SCSIOP_WRITE_DATA_BUFF
#define SCSIOP_READ_CAPACITY
#define SCSIOP_FLUSH_BUFFER
#define SCSIOP_READ_HEADER
#define SCSI_SENSEQ_FILEMARK_DETECTED
#define SCSIOP_MECHANISM_STATUS
#define SCSIOP_SEARCH_DATA_EQUAL
#define SCSIOP_CLOSE_TRACK_SESSION
#define SCSIOP_READ_DATA_BUFF
#define SCSI_SENSEQ_MEDIA_CODE_MISMATCHED_TO_LOGICAL_UNIT
#define SCSIOP_READ_POSITION
#define SCSI_SENSEQ_CAUSE_NOT_REPORTABLE
#define SCSI_SENSEQ_KEY_NOT_PRESENT
#define SCSIOP_RESERVE_UNIT
#define SCSI_ADSENSE_REC_DATA_ECC
#define SCSI_SENSEQ_BECOMING_READY
#define SCSI_ADSENSE_INVALID_MEDIA
#define SCSIOP_READ_BUFFER_CAPACITY
#define SCSI_SENSE_ILLEGAL_REQUEST
#define SCSIOP_REPORT_KEY
#define SCSI_SENSEQ_LOGICAL_UNIT_RESET_COUNT_ERROR
#define SCSIOP_MODE_SENSE
#define SCSI_ADSENSE_NO_SENSE
#define SCSI_SENSE_UNIT_ATTENTION
#define SCSI_ADSENSE_NO_MEDIA_IN_DEVICE
#define SCSI_SENSE_MISCOMPARE
#define SCSIOP_STOP_PLAY_SCAN
#define SCSIOP_READ_BLOCK_LIMITS
#define SCSI_SENSEQ_INIT_COMMAND_REQUIRED
#define SCSI_ADSENSE_DATA_AREA
#define SCSIOP_RECEIVE_DIAGNOSTIC
#define SCSIOP_READ_DVD_STRUCTURE
#define SCSIOP_SLEW_PRINT
#define SCSI_SENSEQ_INCOMPATIBLE_MEDIA_INSTALLED
#define SCSI_ADSENSE_MEDIUM_CHANGED
#define SCSIOP_SEARCH_DATA_LOW
#define SCSIOP_READ_CD_MSF
#define SCSI_SENSE_VOL_OVERFLOW
#define SCSIOP_SEEK_BLOCK
#define SCSIOP_START_STOP_UNIT
#define SCSIOP_SET_LIMITS
#define SCSI_SENSE_BLANK_CHECK
#define SCSI_SENSE_HARDWARE_ERROR
#define SCSI_ADSENSE_VOLUME_OVERFLOW
#define SCSIOP_SET_CD_SPEED
#define SCSI_SENSE_RECOVERED_ERROR
#define SCSIOP_MODE_SELECT10
#define SCSIOP_REQUEST_BLOCK_ADDR
#define SCSIOP_MODE_SELECT
#define SCSI_SENSEQ_BEGINNING_OF_MEDIA_DETECTED
#define SCSI_SENSE_NOT_READY
#define SCSIOP_LOG_SELECT
#define SCSI_SENSE_ABORTED_COMMAND
#define SCSI_ADSENSE_BUS_RESET
#define SCSI_SENSEQ_FORMAT_IN_PROGRESS
#define SCSIOP_SYNCHRONIZE_CACHE
#define SCSI_SENSEQ_LONG_WRITE_IN_PROGRESS
#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX
_In_ PTRANSFER_PACKET Pkt
#define DBG_NUM_PACKET_LOG_ENTRIES
FORCEINLINE PCDB ClasspTransferPacketGetCdb(_In_ PTRANSFER_PACKET Pkt)
enum _CLASS_DEBUG_LEVEL CLASS_DEBUG_LEVEL
#define NT_SUCCESS(StatCode)
char * DbgGetScsiOpStr(PSTORAGE_REQUEST_BLOCK_HEADER Srb)
char * DbgGetAdditionalSenseCodeStr(PSTORAGE_REQUEST_BLOCK_HEADER Srb)
#define MAKE_CASE(ioctlCode)
char * DbgGetSenseCodeStr(PSTORAGE_REQUEST_BLOCK_HEADER Srb)
char * DbgGetAdditionalSenseCodeQualifierStr(PSTORAGE_REQUEST_BLOCK_HEADER Srb)
char * DbgGetIoctlStr(ULONG ioctl)
VOID ClassDebugPrint(_In_ CLASS_DEBUG_LEVEL DebugPrintLevel, _In_z_ PCCHAR DebugMessage,...)
char * DbgGetSrbStatusStr(PSTORAGE_REQUEST_BLOCK_HEADER Srb)
#define DBGGETSCSIOPSTR(_pSrb)
#define DBGGETADSENSECODESTR(_pSrb)
#define ClasspInitializeDebugGlobals()
#define DBGGETADSENSEQUALIFIERSTR(_pSrb)
#define DBGGETSRBSTATUSSTR(_pSrb)
#define DBGGETSENSECODESTR(_pSrb)
#define SnapDiskStartup()
#define SCSIOP_REPORT_LUNS
#define SRB_STATUS_INVALID_LUN
#define SRB_STATUS_REQUEST_FLUSHED
#define SRB_STATUS_PHASE_SEQUENCE_FAILURE
#define SRB_STATUS_NO_HBA
#define SRB_STATUS_BUS_RESET
#define SRB_STATUS_INVALID_TARGET_ID
#define SRB_STATUS_NOT_POWERED
#define SRB_STATUS_UNEXPECTED_BUS_FREE
#define SRB_STATUS_DATA_OVERRUN
#define SRB_STATUS_ABORTED
#define SRB_STATUS_PENDING
#define SRB_STATUS_INVALID_PATH_ID
#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH
#define SRB_STATUS_TIMEOUT
#define SRB_STATUS_AUTOSENSE_VALID
#define SRB_STATUS_ERROR_RECOVERY
#define SRB_STATUS_MESSAGE_REJECTED
#define SRB_STATUS_ABORT_FAILED
#define SRB_STATUS_SELECTION_TIMEOUT
#define SRB_STATUS_BAD_FUNCTION
#define SRB_STATUS(Status)
#define SRB_STATUS_INTERNAL_ERROR
#define SRB_STATUS_COMMAND_TIMEOUT
#define SRB_STATUS_PARITY_ERROR
#define SRB_STATUS_REQUEST_SENSE_FAILED
#define SRB_STATUS_NO_DEVICE
#define SRB_STATUS_SUCCESS
#define SRB_STATUS_INVALID_REQUEST
#define ExAllocatePoolWithTag(hernya, size, tag)
#define RtlCompareMemory(s1, s2, l)
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define KeInitializeSpinLock(sl)
#define IOCTL_STORAGE_CHECK_VERIFY2
#define IOCTL_STORAGE_LOAD_MEDIA2
_In_ ULONG FramesToCapture
_In_ ULONG _Out_opt_ PULONG BackTraceHash
#define InterlockedCompareExchange
#define DbgPrintEx(cmpid, lvl, fmt,...)
#define IOCTL_STORAGE_GET_HOTPLUG_INFO
#define DPFLTR_INFO_LEVEL
#define _Out_writes_to_(s, c)
#define UNREFERENCED_PARAMETER(P)
#define IOCTL_STORAGE_QUERY_PROPERTY
#define IOCTL_STORAGE_RELEASE
#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER
#define IOCTL_STORAGE_GET_DEVICE_NUMBER
#define IOCTL_STORAGE_CHECK_VERIFY
#define IOCTL_STORAGE_PERSISTENT_RESERVE_IN
#define IOCTL_STORAGE_PERSISTENT_RESERVE_OUT
#define IOCTL_STORAGE_LOAD_MEDIA
#define IOCTL_STORAGE_RESERVE
#define IOCTL_STORAGE_GET_MEDIA_TYPES
#define OBSOLETE_IOCTL_STORAGE_RESET_BUS
#define IOCTL_STORAGE_RESET_DEVICE
#define IOCTL_STORAGE_PREDICT_FAILURE
#define IOCTL_STORAGE_FIND_NEW_DEVICES
#define IOCTL_STORAGE_RESET_BUS
#define IOCTL_STORAGE_MCN_CONTROL
#define IOCTL_STORAGE_EJECT_MEDIA
#define IOCTL_STORAGE_EJECTION_CONTROL
#define OBSOLETE_IOCTL_STORAGE_RESET_DEVICE
#define IOCTL_STORAGE_MEDIA_REMOVAL
ULONG NTAPI KeQueryTimeIncrement(VOID)
_Null_terminated_ char * NTSTRSAFE_PSTR
NTSTRSAFEAPI RtlStringCchVPrintfA(_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cchDest, _In_ _Printf_format_string_ NTSTRSAFE_PCSTR pszFormat, _In_ va_list argList)
#define SCSI_SENSEQ_STATE_CHANGE_INPUT
#define SCSI_ADSENSE_COPY_PROTECTION_FAILURE
#define SCSI_SENSEQ_RECALCULATION_IN_PROGRESS
#define SCSIOP_MOVE_MEDIUM
#define SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED
#define SCSIOP_SEND_OPC_INFORMATION
#define SCSIOP_RESERVE_TRACK_RZONE
#define SCSIOP_INIT_ELEMENT_STATUS
#define SCSIOP_SEND_VOLUME_TAG
#define SCSIOP_READ_TRACK_INFORMATION
#define SCSI_SENSE_OPTIONS_FIXED_FORMAT_IF_UNKNOWN_FORMAT_INDICATED
#define SCSI_SENSEQ_WRITE_PROTECT_DISABLE
#define SCSI_SENSEQ_ILLEGAL_ELEMENT_ADDR
#define SCSIOP_READ_FORMATTED_CAPACITY
#define SCSIOP_READ_DISK_INFORMATION
#define SCSI_SENSEQ_REBUILD_IN_PROGRESS
#define SCSIOP_PERSISTENT_RESERVE_IN
#define SCSI_SENSEQ_MEDIUM_REMOVAL
#define SCSIOP_INIT_ELEMENT_RANGE
#define SCSIOP_SYNCHRONIZE_CACHE16
#define SCSIOP_READ_ELEMENT_STATUS
#define SCSI_SENSEQ_SOURCE_EMPTY
#define SCSI_ADSENSE_OPERATOR_REQUEST
#define SCSIOP_READ_CAPACITY16
#define SCSI_SENSEQ_DESTINATION_FULL
#define SCSIOP_PERSISTENT_RESERVE_OUT
#define SCSI_SENSEQ_WRITE_PROTECT_ENABLE
#define SCSIOP_REQUEST_VOL_ELEMENT
struct SRB_ALIGN _STORAGE_REQUEST_BLOCK_HEADER * PSTORAGE_REQUEST_BLOCK_HEADER
#define KeQueryTickCount(CurrentCount)
FORCEINLINE PVOID SrbGetDataBuffer(_In_ PVOID Srb)
FORCEINLINE PVOID SrbGetSenseInfoBuffer(_In_ PVOID Srb)
FORCEINLINE ULONG SrbGetSystemStatus(_In_ PVOID Srb)
FORCEINLINE UCHAR SrbGetSenseInfoBufferLength(_In_ PVOID Srb)
FORCEINLINE ULONG SrbGetDataTransferLength(_In_ PVOID Srb)
FORCEINLINE PVOID SrbGetOriginalRequest(_In_ PVOID Srb)
#define TRACE_LEVEL_WARNING
#define TRACE_LEVEL_ERROR
#define TRACE_LEVEL_INFORMATION
base of all file and directory entries
PSTORAGE_REQUEST_BLOCK_HEADER Srb
#define RtlZeroMemory(Destination, Length)
#define STATUS_INSUFFICIENT_RESOURCES
struct _CDB::_CDB10 CDB10
struct _CDB::_CDB6GENERIC CDB6GENERIC
_In_ WDFCOLLECTION _In_ ULONG Index
void int int ULONGLONG int va_list * ap
NTSYSAPI USHORT NTAPI RtlCaptureStackBackTrace(_In_ ULONG FramesToSkip, _In_ ULONG FramesToCapture, _Out_writes_to_(FramesToCapture, return) PVOID *BackTrace, _Out_opt_ PULONG BackTraceHash)