31 #pragma warning(disable:4201) // nonstandard extension used : nameless struct/union 32 #pragma warning(disable:4214) // nonstandard extension used : bit field types other than int 33 #pragma warning(disable:4152) // nonstandard extension, function/data pointer conversion in expression 48 #define DEBUG_COMP_ID DPFLTR_CDROM_ID 56 #define WPP_GUID_CDROM (A4196372, C3C4, 42d5, 87BF, 7EDB2E9BCC27) 57 #ifndef WPP_CONTROL_GUIDS 58 #define WPP_CONTROL_GUIDS WPP_CONTROL_GUIDS_NORMAL_FLAGS(WPP_GUID_CDROM) 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 88 #define CDROM_HACK_DEC_RRD (0x00000001) 89 #define CDROM_HACK_FUJITSU_FMCD_10x (0x00000002) 91 #define CDROM_HACK_HITACHI_GD_2000 (0x00000008) 92 #define CDROM_HACK_TOSHIBA_SD_W1101 (0x00000010) 96 #define CDROM_HACK_BAD_GET_CONFIG_SUPPORT (0x00000100) 99 #define CDROM_HACK_BAD_TYPE_ONE_GET_CONFIG (0x00000800) 100 #define CDROM_HACK_BAD_VENDOR_PROFILES (0x00001000) 101 #define CDROM_HACK_MSFT_VIRTUAL_ODD (0x00002000) 102 #define CDROM_HACK_LOCKED_PAGES (0x80000000) // not a valid flag to save 104 #define CDROM_HACK_VALID_FLAGS (0x00003fff) 105 #define CDROM_HACK_INVALID_FLAGS (~CDROM_HACK_VALID_FLAGS) 115 #define WRITE_RETRY_DELAY_CD_1x ((LONGLONG)4266667) 116 #define WRITE_RETRY_DELAY_CD_4x ((LONGLONG)1066667) 117 #define WRITE_RETRY_DELAY_CD_10x ((LONGLONG) 426667) 118 #define WRITE_RETRY_DELAY_DVD_1x ((LONGLONG) 473373) 119 #define WRITE_RETRY_DELAY_DVD_4x ((LONGLONG) 118343) 120 #define WRITE_RETRY_DELAY_DVD_16x ((LONGLONG) 29586) 121 #define WRITE_RETRY_DELAY_HDDVD_1x ((LONGLONG) 143498) 124 #define MAXIMUM_RETRIES 4 126 #define CDROM_GET_CONFIGURATION_TIMEOUT (0x4) 127 #define CDROM_READ_DISC_INFORMATION_TIMEOUT (0x4) 128 #define CDROM_TEST_UNIT_READY_TIMEOUT (0x14) 129 #define CDROM_GET_PERFORMANCE_TIMEOUT (0x14) 130 #define CDROM_READ_CAPACITY_TIMEOUT (0x14) 132 #define START_UNIT_TIMEOUT (60 * 4) 135 #define MEDIA_CHANGE_TIMEOUT_TIME 300 139 #define DEV_SAFE_START_UNIT 0x00000004 143 #define DEV_POWER_PROTECTED 0x00000010 149 #define CDROM_SPECIAL_DISABLE_SPIN_DOWN 0x00000001 157 #define CDROM_SPECIAL_DISABLE_WRITE_CACHE 0x00000010 162 #define SRB_CLASS_FLAGS_LOW_PRIORITY 0x10000000 165 #define SRB_CLASS_FLAGS_PAGING 0x40000000 176 #define CDROM_INTERPRET_SENSE_INFO2_MAXIMUM_HISTORY_COUNT 30000 181 #define IOCTL_MCN_SYNC_FAKE_IOCTL IOCTL_DISK_UPDATE_DRIVE_SIZE 237 #define CDROM_FLAG_WINPE_MODE 0x00000001 241 #define CdromMmcUpdateComplete 0 242 #define CdromMmcUpdateRequired 1 243 #define CdromMmcUpdateStarted 2 589 #if (NTDDI_VERSION >= NTDDI_WIN8) 680 #define SCSI_CDROM_TIMEOUT 10 681 #define SCSI_CHANGER_BONUS_TIMEOUT 10 688 #define SCSI_CDROM_OPC_TIMEOUT 260 690 #define HITACHI_MODE_DATA_SIZE 12 691 #define MODE_DATA_SIZE 64 693 #define RAW_SECTOR_SIZE 2352 694 #define COOKED_SECTOR_SIZE 2048 696 #define CDROM_SRB_LIST_SIZE 4 698 #define PLAY_ACTIVE(x) (x->DeviceAdditionalData.PlayActive) 700 #define MSF_TO_LBA(Minutes,Seconds,Frames) \ 701 (ULONG)((60 * 75 * (Minutes)) + (75 * (Seconds)) + ((Frames) - 150)) 706 #define CD_DA_SECTOR 1 707 #define YELLOW_MODE1_SECTOR 2 708 #define YELLOW_MODE2_SECTOR 3 709 #define FORM2_MODE1_SECTOR 4 710 #define FORM2_MODE2_SECTOR 5 712 #define MAX_COPY_PROTECT_AGID 4 714 #ifdef ExAllocatePool 715 #undef ExAllocatePool 716 #define ExAllocatePool #assert(FALSE) 724 #define CDROM_TAG_AUTORUN_DISABLE 'ACcS' // "ScCA" - Autorun disable functionality 725 #define CDROM_TAG_MEDIA_CHANGE_DETECTION 'aCcS' // "ScCa" - Media change detection 727 #define CDROM_TAG_SCRATCH 'BCcS' // "ScSB" - Scratch buffer (usually 64k) 728 #define CDROM_TAG_GET_CONFIG 'CCcS' // "ScCC" - Ioctl GET_CONFIGURATION 729 #define CDROM_TAG_COMPLETION_CONTEXT 'cCcS' // "ScCc" - Context of completion routine 730 #define CDROM_TAG_DESCRIPTOR 'DCcS' // "ScCD" - Adaptor & Device descriptor buffer 731 #define CDROM_TAG_DISC_INFO 'dCcS' // "ScCd" - Disc information 732 #define CDROM_TAG_SYNC_EVENT 'eCcS' // "ScCe" - Request sync event 733 #define CDROM_TAG_FEATURE 'FCcS' // "ScCF" - Feature descriptor 734 #define CDROM_TAG_GESN 'GCcS' // "ScCG" - GESN buffer 735 #define CDROM_TAG_SENSE_INFO 'ICcS' // "ScCI" - Sense info buffers 736 #define CDROM_TAG_INQUIRY 'iCcS' // "ScCi" - Cached inquiry buffer 737 #define CDROM_TAG_MODE_DATA 'MCcS' // "ScCM" - Mode data buffer 738 #define CDROM_TAG_STREAM 'OCCS' // "SCCO" - Set stream buffer 739 #define CDROM_TAG_NOTIFICATION 'oCcS' // "ScCo" - Device Notification buffer 740 #define CDROM_TAG_PLAY_ACTIVE 'pCcS' // "ScCp" - Play active checks 741 #define CDROM_TAG_REGISTRY 'rCcS' // "ScCr" - Registry string 742 #define CDROM_TAG_SRB 'SCcS' // "ScCS" - Srb allocation 743 #define CDROM_TAG_STRINGS 'sCcS' // "ScCs" - Assorted string data 744 #define CDROM_TAG_UPDATE_CAP 'UCcS' // "ScCU" - Update capacity path 745 #define CDROM_TAG_ZERO_POWER_ODD 'ZCcS' // "ScCZ" - Zero Power ODD 747 #define DVD_TAG_READ_KEY 'uCcS' // "ScCu" - Read buffer for dvd key 748 #define DVD_TAG_RPC2_CHECK 'VCcS' // "ScCV" - Read buffer for dvd/rpc2 check 749 #define DVD_TAG_DVD_REGION 'vCcS' // "ScCv" - Read buffer for rpc2 check 750 #define DVD_TAG_SECURITY 'XCcS' // "ScCX" - Security descriptor 754 #define CDROM_SUBKEY_NAME (L"CdRom") // store new settings here 755 #define CDROM_READ_CD_NAME (L"ReadCD") // READ_CD support previously detected 756 #define CDROM_NON_MMC_DRIVE_NAME (L"NonMmc") // MMC commands hang 757 #define CDROM_TYPE_ONE_GET_CONFIG_NAME (L"NoTypeOneGetConfig") // Type One Get Config commands not supported 758 #define CDROM_NON_MMC_VENDOR_SPECIFIC_PROFILE (L"NonMmcVendorSpecificProfile") // GET_CONFIG returns vendor specific header 760 #define DVD_DEFAULT_REGION (L"DefaultDvdRegion") // this is init. by the dvd class installer 761 #define DVD_MAX_REGION 8 764 #define AACS_MKB_PACK_SIZE 0x8000 // does not include header 782 #define FREE_POOL(_PoolPtr) \ 783 if (_PoolPtr != NULL) { \ 784 ExFreePool(_PoolPtr); \ 788 #define EXCLUSIVE_MODE(_CdData) (_CdData->ExclusiveOwner != NULL) 789 #define EXCLUSIVE_OWNER(_CdData, _FileObject) (_CdData->ExclusiveOwner == _FileObject) 791 #define IS_SCSIOP_READ(opCode) \ 792 ((opCode == SCSIOP_READ6) || \ 793 (opCode == SCSIOP_READ) || \ 794 (opCode == SCSIOP_READ12) || \ 795 (opCode == SCSIOP_READ16)) 797 #define IS_SCSIOP_WRITE(opCode) \ 798 ((opCode == SCSIOP_WRITE6) || \ 799 (opCode == SCSIOP_WRITE) || \ 800 (opCode == SCSIOP_WRITE12) || \ 801 (opCode == SCSIOP_WRITE16)) 803 #define IS_SCSIOP_READWRITE(opCode) (IS_SCSIOP_READ(opCode) || IS_SCSIOP_WRITE(opCode)) 806 #define SET_FLAG(Flags, Bit) ((Flags) |= (Bit)) 807 #define CLEAR_FLAG(Flags, Bit) ((Flags) &= ~(Bit)) 808 #define TEST_FLAG(Flags, Bit) (((Flags) & (Bit)) != 0) 814 if (((
Ch >=
'0') && (
Ch <=
'9')) ||
815 (((
Ch|0x20) >=
'a') && ((
Ch|0x20) <=
'z')) ||
924 DeviceReleaseMcnResources(
930 DeviceRetrieveDescriptor(
938 DeviceRetrieveHackFlagsFromRegistry(
976 DeviceGetTimeOutValueFromRegistry();
980 ScanForSpecialHandler(
987 DeviceSendSrbSynchronously(
1061 DeviceCacheDeviceInquiryData(
1067 DeviceCacheGetConfigurationData(
1073 DeviceFindFeaturePage(
1081 DevicePrintAllFeaturePages(
1088 DeviceSetRawReadInfo(
1100 MediaReadCapacityDataInterpret(
1107 DeviceInitReleaseQueueContext(
1113 DeviceInitPowerContext(
1119 DeviceCreateWellKnownName(
1125 DeviceInitializeDvd(
1131 DevicePickDvdRegion(
1137 DeviceRegisterInterface(
1144 DeviceSendPowerDownProcessRequest(
1152 DeviceScanForSpecial(
1160 DeviceInitializeHotplugInfo(
1184 DeviceInitializeMediaChangeDetection(
1197 DeviceSendDelayedMediaChangeNotifications(
1209 DeviceCleanupProtectedLocks(
1216 DeviceCleanupDisableMcn(
1223 DeviceUnlockExclusive(
1231 RequestProcessSerializedIoctl(
1244 DeviceSendRequestSynchronously(
1270 DeviceEnableMediaChangeDetection(
1278 DeviceDisableMediaChangeDetection(
1313 DeviceRetrieveModeSenseUsingScratch(
1323 ModeSenseFindSpecificPage(
1332 PerformEjectionControl(
1341 DeviceDisableMainTimer(
1347 DeviceEnableMainTimer(
1360 RequestSetupMcnRequest(
1367 RequestSendMcnRequest(
1373 RequestPostWorkMcnRequest(
1379 PowerContextReuseRequest(
1385 PowerContextBeginUse(
1401 DeviceInitializeZPODD(
1407 DeviceReleaseZPODDResources(
1419 DeviceZPODDIsInHomePosition(
1435 DvdStartSessionReadKey(
1481 #ifndef SIZEOF_ARRAY 1482 #define SIZEOF_ARRAY(ar) (sizeof(ar)/sizeof((ar)[0])) 1483 #endif // !defined(SIZEOF_ARRAY) 1487 #define UNIT_100NS_PER_SECOND (10*1000*1000) 1488 #define SECONDS_TO_100NS_UNITS(x) (((LONGLONG)x) * UNIT_100NS_PER_SECOND) 1493 #define SET_FLAG(Flags, Bit) ((Flags) |= (Bit)) 1494 #define CLEAR_FLAG(Flags, Bit) ((Flags) &= ~(Bit)) 1495 #define TEST_FLAG(Flags, Bit) (((Flags) & (Bit)) != 0) 1518 #pragma prefast(push) 1519 #pragma prefast(disable: 28175, "there is no other way to check if there is volume mounted") 1522 #pragma prefast(pop) 1528 ConvertSectorsPerSecondTo100nsUnitsFor64kWrite(
1564 return currentStack->
Flags;
1580 value = TimeOutValue;
1620 #pragma warning(pop) // un-sets any local warning changes 1622 #endif // __CDROMP_H__ struct _ERROR_RECOVERY_DATA ERROR_RECOVERY_DATA
LARGE_INTEGER TimeSentDownLasttTime
PSRB_HISTORY_ITEM SrbHistoryItem
BOOLEAN StreamingReadSupported
PCDROM_DRIVER_EXTENSION DriverExtension
_In_ WDFREQUEST _In_ BOOLEAN RequestFormated
EVT_WDF_OBJECT_CONTEXT_CLEANUP DeviceEvtCleanup
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_IRQL_requires_max_(DISPATCH_LEVEL) NTKERNELAPI BOOLEAN NTAPI PsIsThreadTerminating(_In_ PETHREAD Thread)
VOID RequestSetupMcnSyncIrp(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension)
FORCEINLINE UCHAR RequestGetCurrentStackLocationFlags(_In_ WDFREQUEST Request)
BOOLEAN ReleaseQueueInProgress
* PSTORAGE_DESCRIPTOR_HEADER
UNICODE_STRING WellKnownName
LARGE_INTEGER StartingOffset
* PSTORAGE_ADAPTER_DESCRIPTOR
CDROM_SCRATCH_READ_WRITE_CONTEXT ScratchReadWriteContext
SENSE_DATA CapabilitiesSenseData
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID RequestSetReceivedTime(_In_ WDFREQUEST Request)
_In_ size_t _In_ UCHAR PageMode
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
#define _In_range_(lb, ub)
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
NTSTATUS DeviceZPODDGetPowerupReason(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _Out_ PSTORAGE_IDLE_POWERUP_REASON PowerupReason)
struct _CDROM_DEVICE_EXTENSION CDROM_DEVICE_EXTENSION
_In_ PSCSI_REQUEST_BLOCK Srb
struct _CDROM_DRIVER_EXTENSION CDROM_DRIVER_EXTENSION
_Field_size_bytes_(CapabilitiesBufferSize) PGET_CONFIGURATION_HEADER CapabilitiesBuffer
WDFREQUEST OriginalRequest
struct _CDROM_REQUEST_CONTEXT CDROM_REQUEST_CONTEXT
VOID DeviceSetMediaChangeStateEx(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ MEDIA_CHANGE_DETECTION_STATE NewState, _Inout_opt_ PMEDIA_CHANGE_DETECTION_STATE OldState)
EVT_WDF_REQUEST_COMPLETION_ROUTINE DeviceReleaseQueueCompletion
EVT_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE SequentialQueueEvtCanceledOnQueue
_In_ const GUID _In_ ULONG ExtraDataSize
#define SRB_FLAGS_FREE_SENSE_BUFFER
PCDROM_PRIVATE_FDO_DATA PrivateFdoData
EVT_WDF_DRIVER_DEVICE_ADD DriverEvtDeviceAdd
#define UNREFERENCED_PARAMETER(P)
WDFWORKITEM ReadWriteWorkItem
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
PSRB_HISTORY ScratchHistory
#define _Deref_out_range_(lb, ub)
CDROM_DATA DeviceAdditionalData
struct _CDROM_SCRATCH_CONTEXT CDROM_SCRATCH_CONTEXT
WDFQUEUE ManualVolumeReadyQueue
#define CDROM_EXCLUSIVE_CALLER_LENGTH
_Field_size_bytes_(CachedInquiryDataByteCount) PINQUIRYDATA CachedInquiryData
struct _CDROM_SCRATCH_READ_WRITE_CONTEXT CDROM_SCRATCH_READ_WRITE_CONTEXT
_In_ ULONG const _In_ FEATURE_NUMBER const Feature
NTSTATUS RequestSend(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDFIOTARGET IoTarget, _In_ ULONG Flags, _Out_opt_ PBOOLEAN RequestSent)
struct _CDROM_DRIVER_EXTENSION * PCDROM_DRIVER_EXTENSION
LARGE_INTEGER CompleteTime
EVT_WDF_WORKITEM ReadWriteWorkItemRoutine
EVT_WDF_WORKITEM IoctlWorkItemRoutine
WDFREQUEST CapabilitiesRequest
LARGE_INTEGER TimeReceived
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
CDROM_READ_WRITE_CONTEXT ReadWriteWorkItemContext
EVT_WDF_FILE_CLOSE DeviceEvtFileClose
BOOLEAN PartialMdlIsBuilt
struct _CDROM_POWER_OPTIONS CDROM_POWER_OPTIONS
EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL SequentialQueueEvtIoDeviceControl
EVT_WDF_DEVICE_D0_EXIT DeviceEvtD0Exit
NTSTATUS DeviceErrorHandlerForMmc(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb, _Inout_ PNTSTATUS Status, _Inout_ PBOOLEAN Retry)
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
PSYNC_HANDLER SyncCallback
EVT_WDF_REQUEST_COMPLETION_ROUTINE RequestDummyCompletionRoutine
_Field_range_(4 *1024, 64 *1024) ULONG ScratchBufferSize
EVT_WDF_DEVICE_SURPRISE_REMOVAL DeviceEvtSurpriseRemoval
_In_ size_t _In_ UCHAR _In_ BOOLEAN Use6Byte
struct _COMPLETION_CONTEXT * PCOMPLETION_CONTEXT
ULONG ScratchInUseLineNumber
VOID NTAPI SequentialQueueEvtIoReadWrite(_In_ WDFQUEUE Queue, _In_ WDFREQUEST Request, _In_ size_t Length)
struct _COMPLETION_CONTEXT COMPLETION_CONTEXT
NTSTATUS RequestSetContextFields(_In_ WDFREQUEST Request, _In_ PSYNC_HANDLER Handler)
struct _CDROM_DEVICE_EXTENSION * PCDROM_DEVICE_EXTENSION
struct _CDROM_POWER_CONTEXT CDROM_POWER_CONTEXT
ULONG ScanForSpecialFlags
DRIVER_INITIALIZE DriverEntry
MODE_READ_RECOVERY_PAGE ReadRecoveryPage
_In_ WDFREQUEST _In_ size_t OutputBufferLength
WDFMEMORY ReleaseQueueInputMemory
enum CDROM_DEVICE_INTERFACES * PCDROM_DEVICE_INTERFACES
FEATURE_NUMBER ValidationSchema
EVT_WDF_DEVICE_D0_ENTRY DeviceEvtD0Entry
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS RequestDuidGetDeviceIdProperty(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
VOID RequestCompletion(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ NTSTATUS Status, _In_ ULONG_PTR Information)
MODE_PARAMETER_HEADER Header
_In_ ULONG _In_ UCHAR _In_ UCHAR PageControl
struct _CDROM_IOCTL_CONTEXT CDROM_IOCTL_CONTEXT
VOID DeviceSendNotification(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ const GUID *Guid, _In_ ULONG ExtraDataSize, _In_opt_ PVOID ExtraData)
* PSTORAGE_DEVICE_DESCRIPTOR
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
BOOLEAN ReadWriteIsCompleted
_In_ CDROM_SCAN_FOR_SPECIAL_INFO DeviceList[]
struct _ERROR_RECOVERY_DATA * PERROR_RECOVERY_DATA
struct _CDROM_REQUEST_CONTEXT * PCDROM_REQUEST_CONTEXT
VOID DevicePerfIncrementErrorCount(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension)
CDROM_IOCTL_CONTEXT IoctlWorkItemContext
WDFREQUEST ReleaseQueueRequest
SCSI_REQUEST_BLOCK CapabilitiesSrb
WDFREQUEST OriginalRequest
NTSTATUS DeviceErrorHandlerForHitachiGD2000(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb, _Inout_ PNTSTATUS Status, _Inout_ PBOOLEAN Retry)
#define SCSI_CDROM_OPC_TIMEOUT
_In_ PFILE_OBJECT_CONTEXT FileObjectContext
_Field_size_bytes_(ScratchBufferSize) PVOID ScratchBuffer
PCSTR ScratchInUseFileName
union _CDROM_POWER_CONTEXT::@1002 PowerChangeState
_In_z_ PCHAR TargetString
VOID RequestClearSendTime(_In_ WDFREQUEST Request)
WDFFILEOBJECT ExclusiveOwner
EVT_WDF_OBJECT_CONTEXT_CLEANUP DriverEvtCleanup
VOID DeviceSendStartUnit(_In_ WDFDEVICE Device)
#define CLEAR_FLAG(Flags, Bit)
EVT_WDF_REQUEST_COMPLETION_ROUTINE * PFN_WDF_REQUEST_COMPLETION_ROUTINE
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
_In_ ULONG _In_ UCHAR PageCode
enum _MEDIA_CHANGE_DETECTION_STATE MEDIA_CHANGE_DETECTION_STATE
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
#define TEST_FLAG(Flags, Bit)
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
BOOLEAN ReadWriteRetryInitialized
PSTORAGE_DEVICE_DESCRIPTOR DeviceDescriptor
SYNC_HANDLER * PSYNC_HANDLER
#define MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS
FORCEINLINE _Ret_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG ConvertSectorsPerSecondTo100nsUnitsFor64kWrite(_In_range_(1
CDROM_SCRATCH_CONTEXT ScratchContext
struct _CDROM_SCRATCH_READ_WRITE_CONTEXT * PCDROM_SCRATCH_READ_WRITE_CONTEXT
VOID RequestProcessInternalDeviceControl(_In_ WDFREQUEST Request, _In_ PCDROM_DEVICE_EXTENSION DeviceExtension)
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
LARGE_INTEGER StartingOffset
_Must_inspect_result_ _In_ ULONG Flags
struct _CDROM_POWER_OPTIONS * PCDROM_POWER_OPTIONS
WDFREQUEST ScratchRequest
struct _CDROM_MMC_EXTENSION * PCDROM_MMC_EXTENSION
PSTORAGE_ADAPTER_DESCRIPTOR AdapterDescriptor
EVT_WDF_IO_QUEUE_IO_DEFAULT CreateQueueEvtIoDefault
NTSTATUS SYNC_HANDLER(_In_ WDFDEVICE Device, _In_ WDFREQUEST Request)
PZERO_POWER_ODD_INFO ZeroPowerODDInfo
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
VOID(* PCDROM_ERROR_HANDLER)(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb, _Inout_ PNTSTATUS Status, _Inout_ PBOOLEAN Retry)
IO_COMPLETION_ROUTINE RequestAsynchronousIrpCompletion
EVT_WDF_DEVICE_SELF_MANAGED_IO_INIT DeviceEvtSelfManagedIoInit
BOOLEAN IsVolumeOnlinePending
FORCEINLINE ULONG SectorsPerSecond
_In_ WDFFILEOBJECT _In_ BOOLEAN IgnorePreviousMediaChanges
FORCEINLINE ULONG CountOfSetBitsUChar(UCHAR _X)
_In_ WDFREQUEST _In_ MEDIA_LOCK_TYPE LockType
LARGE_INTEGER Step1CompleteTime
C_ASSERT((MAXULONG - sizeof(SRB_HISTORY))/30000 >=sizeof(SRB_HISTORY_ITEM))
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
enum _STORAGE_PROPERTY_ID * PSTORAGE_PROPERTY_ID
_In_ PREAD_CAPACITY_DATA ReadCapacityBuffer
struct _CDROM_SCRATCH_CONTEXT * PCDROM_SCRATCH_CONTEXT
enum _MEDIA_CHANGE_DETECTION_STATE * PMEDIA_CHANGE_DETECTION_STATE
EVT_WDF_OBJECT_CONTEXT_CLEANUP RequestEvtCleanup
ULONG CachedInquiryDataByteCount
BOOLEAN PowerDownInProgress
_In_reads_bytes_(Length) PCHAR ModeSenseBuffer
UCHAR CallerName[CDROM_EXCLUSIVE_CALLER_LENGTH]
VOID(* PCDROM_SCAN_FOR_SPECIAL_HANDLER)(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ ULONG_PTR Data)
FORCEINLINE ULONG CountOfSetBitsUlongPtr(ULONG_PTR _X)
FORCEINLINE ULONG TimeOutValueGetCapValue(_In_ ULONG TimeOutValue, _In_ ULONG Times)
NTSTATUS RequestSynchronizeProcessWithSerialQueue(_In_ WDFDEVICE Device, _In_ WDFREQUEST Request)
PSCSI_REQUEST_BLOCK ScratchSrb
BOOLEAN RequestSenseInfoInterpret(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ PSCSI_REQUEST_BLOCK Srb, _In_ ULONG RetriedCount, _Out_ NTSTATUS *Status, _Out_opt_ _Deref_out_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG *RetryIntervalIn100ns)
BOOLEAN RequestSenseInfoInterpretForScratchBuffer(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ ULONG RetriedCount, _Out_ NTSTATUS *Status, _Out_ _Deref_out_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG *RetryIntervalIn100ns)
struct _CDROM_DATA * PCDROM_DATA
FORCEINLINE VOID FREE_PORT_ALLOCATED_SENSE_BUFFER(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
_In_ PSCSI_REQUEST_BLOCK _Out_ NTSTATUS _Inout_ BOOLEAN * Retry
_In_opt_ PWSTR _In_ PWSTR ParameterName
ULONG MaxPageAlignedTransferBytes
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
ULONG CapabilitiesBufferSize
DEVICE_TYPE DriveDeviceType
EVT_WDFDEVICE_WDM_IRP_PREPROCESS RequestProcessSetPower
FORCEINLINE BOOLEAN PORT_ALLOCATED_SENSE(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
GLsizei const GLfloat * value
PDEVICE_POWER_DESCRIPTOR PowerDescriptor
PCDROM_DEVICE_EXTENSION DeviceExtension
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN _In_opt_ WDFREQUEST OriginalRequest
EVT_WDFDEVICE_WDM_IRP_PREPROCESS RequestProcessShutdownFlush
WDFSPINLOCK ReleaseQueueSpinLock
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 Handler
struct _CDROM_MMC_EXTENSION CDROM_MMC_EXTENSION
FILE_OBJECT_CONTEXT KernelModeMcnContext
enum _FEATURE_NUMBER FEATURE_NUMBER
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN WriteToDevice
EVT_WDF_TIMER DeviceMainTimerTickHandler
WDFWAITLOCK ShutdownFlushWaitLock
WDFWAITLOCK EjectSynchronizationLock
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
UCHAR SenseInfoBufferLength
LARGE_INTEGER PartitionLength
#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE
DISK_GEOMETRY DiskGeometry
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID DeviceReleaseQueue(_In_ WDFDEVICE Device)
CDROM_POWER_DOWN_STATE PowerDown
PDRIVER_OBJECT DriverObject
EVT_WDF_REQUEST_COMPLETION_ROUTINE DeviceAsynchronousCompletion
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
POWER_SETTING_CALLBACK DevicePowerSettingCallback
BOOLEAN ReleaseQueueNeeded
_In_opt_ PWSTR _In_ PWSTR _Inout_ PULONG ParameterValue
FORCEINLINE BOOLEAN IsVolumeMounted(_In_ PDEVICE_OBJECT DeviceObject)
_In_opt_ PWSTR SubkeyName
FORCEINLINE ULONG CountOfSetBitsULong(ULONG _X)
char * strchr(const char *String, int ch)
#define WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(_contexttype, _castingfunction)
LARGE_INTEGER TimeSentDownFirstTime
struct _CDROM_IOCTL_CONTEXT * PCDROM_IOCTL_CONTEXT
LONGLONG ReadWriteRetryDelay100nsUnits
SCSI_REQUEST_BLOCK ReleaseQueueSrb
CDROM_POWER_OPTIONS Options
FORCEINLINE BOOLEAN ValidChar(UCHAR Ch)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
_In_ PSTORAGE_PROPERTY_ID PropertyId
EVT_WDF_DEVICE_SELF_MANAGED_IO_CLEANUP DeviceEvtSelfManagedIoCleanup
struct _CDROM_DATA CDROM_DATA
_Must_inspect_result_ _In_ WDFDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIOTARGET * IoTarget
BOOLEAN DeviceIsMmcUpdateRequired(_In_ WDFDEVICE Device)
_In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_PARAMETERS RequestParameters
KSPIN_LOCK ReadWriteCancelSpinLock
struct _CDROM_POWER_CONTEXT * PCDROM_POWER_CONTEXT
EVT_WDF_IO_IN_CALLER_CONTEXT DeviceEvtIoInCallerContext
VOID RequestSetSentTime(_In_ WDFREQUEST Request)
PCDROM_ERROR_HANDLER ErrorHandler
PDEVICE_OBJECT DeviceObject
NTSTATUS RequestIsIoctlBlockedByExclusiveAccess(_In_ WDFREQUEST Request, _Out_ PBOOLEAN IsBlocked)
PMEDIA_CHANGE_DETECTION_INFO MediaChangeDetectionInfo
EVT_WDF_WORKITEM DeviceRestoreDefaultSpeed
UNICODE_STRING MountedDeviceInterfaceName
BOOLEAN NTAPI PsIsThreadTerminating(IN PETHREAD Thread)
IN OUT PVCB IN PDEVICE_OBJECT TargetDeviceObject
BOOLEAN StreamingWriteSupported
CDROM_POWER_UP_STATE PowerUp
struct _CDROM_READ_WRITE_CONTEXT CDROM_READ_WRITE_CONTEXT
VOID DeviceSendIoctlAsynchronously(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ ULONG IoControlCode, _In_ PDEVICE_OBJECT TargetDeviceObject)
struct _CDROM_READ_WRITE_CONTEXT * PCDROM_READ_WRITE_CONTEXT
CDROM_SCAN_FOR_SPECIAL_INFO CdromHackItems[]
LONGLONG RetryIntervalIn100ns
KEVENT EjectSynchronizationEvent
MODE_PARAMETER_BLOCK BlockDescriptor
NTSTATUS RequestDuidGetDeviceProperty(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
FORCEINLINE ULONG CountOfSetBitsULong32(ULONG32 _X)
ULONG MaxUnalignedTransferBytes
_In_ BOOLEAN _In_ BOOLEAN SetIdleTimeout
WDFREQUEST OriginalRequest
CDROM_POWER_CONTEXT PowerContext
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID BufferAddress
WDFWORKITEM IoctlWorkItem
UNICODE_STRING DeviceName
FORCEINLINE ULONG CountOfSetBitsULong64(ULONG64 _X)