/* Header autogenerated by Brandon Falk's PDB Dumper * * Invocation: C:\projects\pdbdump_2\pdbdump.exe L:\symbolarchive\win8_spB_x64\classpnp.pdb\6C0E7AA5F77E4E0C95A9A87ED541118D2\classpnp.pdb */ struct LIST_ENTRY64 { unsigned long long Flink; /* +0x0000 */ unsigned long long Blink; /* +0x0008 */ }; struct LIST_ENTRY32 { unsigned long Flink; /* +0x0000 */ unsigned long Blink; /* +0x0004 */ }; struct _LIST_ENTRY { unsigned char Flink[8]; /* +0x0000 20 10 00 00 */ unsigned char Blink[8]; /* +0x0008 20 10 00 00 */ }; struct _SINGLE_LIST_ENTRY { unsigned char Next[8]; /* +0x0000 32 10 00 00 */ }; struct _UNICODE_STRING { unsigned short Length; /* +0x0000 */ unsigned short MaximumLength; /* +0x0002 */ unsigned short *Buffer; /* +0x0008 */ }; struct _STRING { unsigned short Length; /* +0x0000 */ unsigned short MaximumLength; /* +0x0002 */ char *Buffer; /* +0x0008 */ }; /* struct { unsigned long LowPart; +0x0000 long HighPart; +0x0004 }; */ struct _LARGE_INTEGER { unsigned long LowPart; /* +0x0000 */ long HighPart; /* +0x0004 */ /* unsigned char u[0]; +0x0000 44 10 00 00 */ long long QuadPart; /* +0x0000 */ }; /* struct { unsigned long LowPart; +0x0000 unsigned long HighPart; +0x0004 }; */ struct _ULARGE_INTEGER { unsigned long LowPart; /* +0x0000 */ unsigned long HighPart; /* +0x0004 */ /* unsigned char u[0]; +0x0000 49 10 00 00 */ unsigned long long QuadPart; /* +0x0000 */ }; struct _RTL_BITMAP { unsigned long SizeOfBitMap; /* +0x0000 */ unsigned long *Buffer; /* +0x0008 */ }; struct _FAST_MUTEX { unsigned char Count[8]; /* +0x0000 1b 10 00 00 */ void *Owner; /* +0x0008 */ unsigned long Contention; /* +0x0010 */ unsigned char Event[24]; /* +0x0018 64 10 00 00 */ unsigned long OldIrql; /* +0x0030 */ }; enum _EVENT_TYPE { NotificationEvent = 0, SynchronizationEvent = 1 }; struct _KEVENT { unsigned char Header[24]; /* +0x0000 6f 10 00 00 */ }; struct _LOOKASIDE_LIST_EX { unsigned char L[96]; /* +0x0000 74 10 00 00 */ }; struct _SLIST_ENTRY { unsigned char Next[16]; /* +0x0000 78 10 00 00 */ }; /* struct { /* unsigned char Depth[0]; +0x0000 81 10 00 00 /* unsigned char Sequence[0]; +0x0000 82 10 00 00 unsigned char NextEntry[8]; +0x0000 83 10 00 00 /* unsigned char HeaderType[0]; +0x0008 84 10 00 00 /* unsigned char Init[0]; +0x0008 85 10 00 00 /* unsigned char Reserved[0]; +0x0008 86 10 00 00 unsigned char Region[8]; +0x0008 87 10 00 00 }; */ /* struct { /* unsigned char Depth[0]; +0x0000 81 10 00 00 unsigned char Sequence[8]; +0x0000 8a 10 00 00 /* unsigned char HeaderType[0]; +0x0008 84 10 00 00 /* unsigned char Reserved[0]; +0x0008 8b 10 00 00 unsigned char NextEntry[8]; +0x0008 8c 10 00 00 }; */ struct _SLIST_HEADER { unsigned long long Alignment; /* +0x0000 */ unsigned long long Region; /* +0x0008 */ /* unsigned char Header8[0]; +0x0000 89 10 00 00 */ unsigned char HeaderX64[16]; /* +0x0000 8e 10 00 00 */ }; enum _POOL_TYPE { NonPagedPool = 0, NonPagedPoolExecute = 0, PagedPool = 1, NonPagedPoolMustSucceed = 2, DontUseThisType = 3, NonPagedPoolCacheAligned = 4, PagedPoolCacheAligned = 5, NonPagedPoolCacheAlignedMustS = 6, MaxPoolType = 7, NonPagedPoolBase = 0, NonPagedPoolBaseMustSucceed = 2, NonPagedPoolBaseCacheAligned = 4, NonPagedPoolBaseCacheAlignedMustS = 6, NonPagedPoolSession = 32, PagedPoolSession = 33, NonPagedPoolMustSucceedSession = 34, DontUseThisTypeSession = 35, NonPagedPoolCacheAlignedSession = 36, PagedPoolCacheAlignedSession = 37, NonPagedPoolCacheAlignedMustSSession = 38, NonPagedPoolNx = 512, NonPagedPoolNxCacheAligned = 516, NonPagedPoolSessionNx = 544 }; struct _NPAGED_LOOKASIDE_LIST { unsigned char L[128]; /* +0x0000 a3 10 00 00 */ }; struct _WORK_QUEUE_ITEM { unsigned char List[16]; /* +0x0000 1f 10 00 00 */ unsigned char WorkerRoutine[8]; /* +0x0010 ac 10 00 00 */ void *Parameter; /* +0x0018 */ }; struct _MDL { unsigned char Next[8]; /* +0x0000 b6 10 00 00 */ short Size; /* +0x0008 */ short MdlFlags; /* +0x000a */ unsigned char Process[8]; /* +0x0010 b8 10 00 00 */ void *MappedSystemVa; /* +0x0018 */ void *StartVa; /* +0x0020 */ unsigned long ByteCount; /* +0x0028 */ unsigned long ByteOffset; /* +0x002c */ }; enum _MEMORY_CACHING_TYPE { MmNonCached = 0, MmCached = 1, MmWriteCombined = 2, MmHardwareCoherentCached = 3, MmNonCachedUnordered = 4, MmUSWCCached = 5, MmMaximumCacheType = 6 }; /* struct { /* unsigned char MasterIrp[0]; +0x0000 ca 10 00 00 long IrpCount; +0x0000 void *SystemBuffer; +0x0000 }; */ /* struct { /* unsigned char UserApcRoutine[0]; +0x0000 d1 10 00 00 void *IssuingProcess; +0x0000 void *UserApcContext; +0x0008 }; */ /* struct { /* unsigned char AsynchronousParameters[0]; +0x0000 d3 10 00 00 unsigned char AllocationSize[16]; +0x0000 42 10 00 00 }; */ /* struct { /* unsigned char DeviceQueueEntry[0]; +0x0000 db 10 00 00 unsigned char DriverContext[32]; +0x0000 dc 10 00 00 unsigned char Thread[8]; +0x0020 c8 10 00 00 char *AuxiliaryBuffer; +0x0028 unsigned char ListEntry[16]; +0x0030 1f 10 00 00 /* unsigned char CurrentStackLocation[0]; +0x0040 de 10 00 00 unsigned long PacketType; +0x0040 unsigned char OriginalFileObject[8]; +0x0048 e0 10 00 00 }; */ /* struct { /* unsigned char Overlay[0]; +0x0000 e2 10 00 00 /* unsigned char Apc[0]; +0x0000 e3 10 00 00 void *CompletionKey; +0x0000 }; */ struct _IRP { short Type; /* +0x0000 */ unsigned short Size; /* +0x0002 */ unsigned char MdlAddress[8]; /* +0x0008 b6 10 00 00 */ unsigned long Flags; /* +0x0010 */ unsigned char AssociatedIrp[8]; /* +0x0018 cc 10 00 00 */ unsigned char ThreadListEntry[16]; /* +0x0020 1f 10 00 00 */ unsigned char IoStatus[16]; /* +0x0030 cd 10 00 00 */ char RequestorMode; /* +0x0040 */ unsigned char PendingReturned; /* +0x0041 */ char StackCount; /* +0x0042 */ char CurrentLocation; /* +0x0043 */ unsigned char Cancel; /* +0x0044 */ unsigned char CancelIrql; /* +0x0045 */ char ApcEnvironment; /* +0x0046 */ unsigned char AllocationFlags; /* +0x0047 */ unsigned char UserIosb[8]; /* +0x0048 ce 10 00 00 */ unsigned char UserEvent[8]; /* +0x0050 68 10 00 00 */ unsigned char Overlay[16]; /* +0x0058 d5 10 00 00 */ unsigned char CancelRoutine[8]; /* +0x0068 da 10 00 00 */ void *UserBuffer; /* +0x0070 */ unsigned char Tail[88]; /* +0x0078 e5 10 00 00 */ }; /* struct { unsigned char SecurityContext[8]; +0x0000 ea 10 00 00 unsigned long Options; +0x0008 unsigned short FileAttributes; +0x0010 unsigned short ShareAccess; +0x0012 unsigned long EaLength; +0x0018 }; */ /* struct { unsigned char SecurityContext[8]; +0x0000 ea 10 00 00 unsigned long Options; +0x0008 unsigned short Reserved; +0x0010 unsigned short ShareAccess; +0x0012 unsigned char Parameters[8]; +0x0018 ee 10 00 00 }; */ /* struct { unsigned char SecurityContext[8]; +0x0000 ea 10 00 00 unsigned long Options; +0x0008 unsigned short Reserved; +0x0010 unsigned short ShareAccess; +0x0012 unsigned char Parameters[8]; +0x0018 f2 10 00 00 }; */ /* struct { unsigned long Length; +0x0000 unsigned long Key; +0x0008 unsigned char ByteOffset[8]; +0x0010 42 10 00 00 }; */ enum _FILE_INFORMATION_CLASS { FileDirectoryInformation = 1, FileFullDirectoryInformation = 2, FileBothDirectoryInformation = 3, FileBasicInformation = 4, FileStandardInformation = 5, FileInternalInformation = 6, FileEaInformation = 7, FileAccessInformation = 8, FileNameInformation = 9, FileRenameInformation = 10, FileLinkInformation = 11, FileNamesInformation = 12, FileDispositionInformation = 13, FilePositionInformation = 14, FileFullEaInformation = 15, FileModeInformation = 16, FileAlignmentInformation = 17, FileAllInformation = 18, FileAllocationInformation = 19, FileEndOfFileInformation = 20, FileAlternateNameInformation = 21, FileStreamInformation = 22, FilePipeInformation = 23, FilePipeLocalInformation = 24, FilePipeRemoteInformation = 25, FileMailslotQueryInformation = 26, FileMailslotSetInformation = 27, FileCompressionInformation = 28, FileObjectIdInformation = 29, FileCompletionInformation = 30, FileMoveClusterInformation = 31, FileQuotaInformation = 32, FileReparsePointInformation = 33, FileNetworkOpenInformation = 34, FileAttributeTagInformation = 35, FileTrackingInformation = 36, FileIdBothDirectoryInformation = 37, FileIdFullDirectoryInformation = 38, FileValidDataLengthInformation = 39, FileShortNameInformation = 40, FileIoCompletionNotificationInformation = 41, FileIoStatusBlockRangeInformation = 42, FileIoPriorityHintInformation = 43, FileSfioReserveInformation = 44, FileSfioVolumeInformation = 45, FileHardLinkInformation = 46, FileProcessIdsUsingFileInformation = 47, FileNormalizedNameInformation = 48, FileNetworkPhysicalNameInformation = 49, FileIdGlobalTxDirectoryInformation = 50, FileIsRemoteDeviceInformation = 51, FileAttributeCacheInformation = 52, FileNumaNodeInformation = 53, FileStandardLinkInformation = 54, FileRemoteProtocolInformation = 55, FileRenameInformationBypassAccessCheck = 56, FileLinkInformationBypassAccessCheck = 57, FileIntegrityStreamInformation = 58, FileVolumeNameInformation = 59, FileMaximumInformation = 60 }; /* struct { unsigned long Length; +0x0000 unsigned char FileName[8]; +0x0008 37 10 00 00 unsigned char FileInformationClass[8]; +0x0010 f8 10 00 00 unsigned long FileIndex; +0x0018 }; */ /* struct { unsigned long Length; +0x0000 unsigned long CompletionFilter; +0x0008 }; */ /* struct { unsigned long Length; +0x0000 unsigned char FileInformationClass[8]; +0x0008 f8 10 00 00 }; */ /* struct { unsigned long Length; +0x0000 unsigned char FileInformationClass[8]; +0x0008 f8 10 00 00 unsigned char FileObject[8]; +0x0010 e0 10 00 00 unsigned char ReplaceIfExists; +0x0018 unsigned char AdvanceOnly; +0x0019 unsigned long ClusterCount; +0x0018 void *DeleteHandle; +0x0018 }; */ /* struct { unsigned long Length; +0x0000 void *EaList; +0x0008 unsigned long EaListLength; +0x0010 unsigned long EaIndex; +0x0018 }; */ /* struct { unsigned long Length; +0x0000 }; */ enum _FSINFOCLASS { FileFsVolumeInformation = 1, FileFsLabelInformation = 2, FileFsSizeInformation = 3, FileFsDeviceInformation = 4, FileFsAttributeInformation = 5, FileFsControlInformation = 6, FileFsFullSizeInformation = 7, FileFsObjectIdInformation = 8, FileFsDriverPathInformation = 9, FileFsVolumeFlagsInformation = 10, FileFsSectorSizeInformation = 11, FileFsMaximumInformation = 12 }; /* struct { unsigned long Length; +0x0000 unsigned char FsInformationClass[8]; +0x0008 06 11 00 00 }; */ /* struct { unsigned long OutputBufferLength; +0x0000 unsigned long InputBufferLength; +0x0008 unsigned long FsControlCode; +0x0010 void *Type3InputBuffer; +0x0018 }; */ /* struct { unsigned char Length[8]; +0x0000 0b 11 00 00 unsigned long Key; +0x0008 unsigned char ByteOffset[8]; +0x0010 42 10 00 00 }; */ /* struct { unsigned long OutputBufferLength; +0x0000 unsigned long InputBufferLength; +0x0008 unsigned long IoControlCode; +0x0010 void *Type3InputBuffer; +0x0018 }; */ /* struct { unsigned long SecurityInformation; +0x0000 unsigned long Length; +0x0008 }; */ /* struct { unsigned long SecurityInformation; +0x0000 void *SecurityDescriptor; +0x0008 }; */ /* struct { unsigned char Vpb[8]; +0x0000 15 11 00 00 unsigned char DeviceObject[8]; +0x0008 d7 10 00 00 }; */ /* struct { unsigned char Srb[8]; +0x0000 19 11 00 00 }; */ /* struct { unsigned long Length; +0x0000 void *StartSid; +0x0008 unsigned char SidList[8]; +0x0010 1d 11 00 00 unsigned long SidListLength; +0x0018 }; */ enum _DEVICE_RELATION_TYPE { BusRelations = 0, EjectionRelations = 1, PowerRelations = 2, RemovalRelations = 3, TargetDeviceRelation = 4, SingleBusRelations = 5, TransportRelations = 6 }; /* struct { unsigned char Type[4]; +0x0000 21 11 00 00 }; */ /* struct { unsigned char InterfaceType[8]; +0x0000 26 11 00 00 unsigned short Size; +0x0008 unsigned short Version; +0x000a unsigned char Interface[8]; +0x0010 28 11 00 00 void *InterfaceSpecificData; +0x0018 }; */ /* struct { unsigned char Capabilities[8]; +0x0000 2c 11 00 00 }; */ /* struct { unsigned char IoResourceRequirementList[8]; +0x0000 30 11 00 00 }; */ /* struct { unsigned long WhichSpace; +0x0000 void *Buffer; +0x0008 unsigned long Offset; +0x0010 unsigned long Length; +0x0018 }; */ /* struct { unsigned char Lock; +0x0000 }; */ enum BUS_QUERY_ID_TYPE { BusQueryDeviceID = 0, BusQueryHardwareIDs = 1, BusQueryCompatibleIDs = 2, BusQueryInstanceID = 3, BusQueryDeviceSerialNumber = 4, BusQueryContainerID = 5 }; /* struct { unsigned char IdType[4]; +0x0000 38 11 00 00 }; */ enum DEVICE_TEXT_TYPE { DeviceTextDescription = 0, DeviceTextLocationInformation = 1 }; /* struct { unsigned char DeviceTextType[8]; +0x0000 3c 11 00 00 unsigned long LocaleId; +0x0008 }; */ enum _DEVICE_USAGE_NOTIFICATION_TYPE { DeviceUsageTypeUndefined = 0, DeviceUsageTypePaging = 1, DeviceUsageTypeHibernation = 2, DeviceUsageTypeDumpFile = 3, DeviceUsageTypeBoot = 4 }; /* struct { unsigned char InPath; +0x0000 unsigned char Reserved[7]; +0x0001 3f 11 00 00 unsigned char Type[8]; +0x0008 41 11 00 00 }; */ enum _SYSTEM_POWER_STATE { PowerSystemUnspecified = 0, PowerSystemWorking = 1, PowerSystemSleeping1 = 2, PowerSystemSleeping2 = 3, PowerSystemSleeping3 = 4, PowerSystemHibernate = 5, PowerSystemShutdown = 6, PowerSystemMaximum = 7 }; /* struct { unsigned char PowerState[4]; +0x0000 45 11 00 00 }; */ /* struct { unsigned char PowerSequence[8]; +0x0000 49 11 00 00 }; */ enum _POWER_STATE_TYPE { SystemPowerState = 0, DevicePowerState = 1 }; enum POWER_ACTION { PowerActionNone = 0, PowerActionReserved = 1, PowerActionSleep = 2, PowerActionHibernate = 3, PowerActionShutdown = 4, PowerActionShutdownReset = 5, PowerActionShutdownOff = 6, PowerActionWarmEject = 7 }; /* struct { unsigned long SystemContext; +0x0000 unsigned char SystemPowerStateContext[8]; +0x0000 4c 11 00 00 unsigned char Type[8]; +0x0008 4e 11 00 00 unsigned char State[8]; +0x0010 4f 11 00 00 unsigned char ShutdownType[8]; +0x0018 51 11 00 00 }; */ /* struct { unsigned char AllocatedResources[8]; +0x0000 55 11 00 00 unsigned char AllocatedResourcesTranslated[8]; +0x0008 55 11 00 00 }; */ /* struct { unsigned long long ProviderId; +0x0000 void *DataPath; +0x0008 unsigned long BufferSize; +0x0010 void *Buffer; +0x0018 }; */ /* struct { void *Argument1; +0x0000 void *Argument2; +0x0008 void *Argument3; +0x0010 void *Argument4; +0x0018 }; */ /* struct { /* unsigned char Create[0]; +0x0000 ec 10 00 00 /* unsigned char CreatePipe[0]; +0x0000 f0 10 00 00 /* unsigned char CreateMailslot[0]; +0x0000 f4 10 00 00 /* unsigned char Read[0]; +0x0000 f6 10 00 00 /* unsigned char Write[0]; +0x0000 f6 10 00 00 /* unsigned char QueryDirectory[0]; +0x0000 fa 10 00 00 /* unsigned char NotifyDirectory[0]; +0x0000 fc 10 00 00 /* unsigned char QueryFile[0]; +0x0000 fe 10 00 00 /* unsigned char SetFile[0]; +0x0000 00 11 00 00 /* unsigned char QueryEa[0]; +0x0000 02 11 00 00 /* unsigned char SetEa[0]; +0x0000 04 11 00 00 /* unsigned char QueryVolume[0]; +0x0000 08 11 00 00 /* unsigned char SetVolume[0]; +0x0000 08 11 00 00 /* unsigned char FileSystemControl[0]; +0x0000 0a 11 00 00 /* unsigned char LockControl[0]; +0x0000 0d 11 00 00 /* unsigned char DeviceIoControl[0]; +0x0000 0f 11 00 00 /* unsigned char QuerySecurity[0]; +0x0000 11 11 00 00 /* unsigned char SetSecurity[0]; +0x0000 13 11 00 00 /* unsigned char MountVolume[0]; +0x0000 17 11 00 00 /* unsigned char VerifyVolume[0]; +0x0000 17 11 00 00 /* unsigned char Scsi[0]; +0x0000 1b 11 00 00 /* unsigned char QueryQuota[0]; +0x0000 1f 11 00 00 /* unsigned char SetQuota[0]; +0x0000 04 11 00 00 /* unsigned char QueryDeviceRelations[0]; +0x0000 23 11 00 00 /* unsigned char QueryInterface[0]; +0x0000 2a 11 00 00 /* unsigned char DeviceCapabilities[0]; +0x0000 2e 11 00 00 /* unsigned char FilterResourceRequirements[0]; +0x0000 32 11 00 00 /* unsigned char ReadWriteConfig[0]; +0x0000 34 11 00 00 /* unsigned char SetLock[0]; +0x0000 36 11 00 00 /* unsigned char QueryId[0]; +0x0000 3a 11 00 00 /* unsigned char QueryDeviceText[0]; +0x0000 3e 11 00 00 /* unsigned char UsageNotification[0]; +0x0000 43 11 00 00 /* unsigned char WaitWake[0]; +0x0000 47 11 00 00 /* unsigned char PowerSequence[0]; +0x0000 4b 11 00 00 /* unsigned char Power[0]; +0x0000 53 11 00 00 /* unsigned char StartDevice[0]; +0x0000 57 11 00 00 /* unsigned char WMI[0]; +0x0000 59 11 00 00 unsigned char Others[32]; +0x0000 5b 11 00 00 }; */ struct _IO_STACK_LOCATION { unsigned char MajorFunction; /* +0x0000 */ unsigned char MinorFunction; /* +0x0001 */ unsigned char Flags; /* +0x0002 */ unsigned char Control; /* +0x0003 */ unsigned char Parameters[32]; /* +0x0008 5d 11 00 00 */ unsigned char DeviceObject[8]; /* +0x0028 d7 10 00 00 */ unsigned char FileObject[8]; /* +0x0030 e0 10 00 00 */ unsigned char CompletionRoutine[8]; /* +0x0038 60 11 00 00 */ void *Context; /* +0x0040 */ }; /* struct { /* unsigned char ListEntry[0]; +0x0000 1f 10 00 00 unsigned char Wcb[72]; +0x0000 72 11 00 00 }; */ struct _DEVICE_OBJECT { short Type; /* +0x0000 */ unsigned short Size; /* +0x0002 */ long ReferenceCount; /* +0x0004 */ unsigned char DriverObject[8]; /* +0x0008 6f 11 00 00 */ unsigned char NextDevice[8]; /* +0x0010 d7 10 00 00 */ unsigned char AttachedDevice[8]; /* +0x0018 d7 10 00 00 */ unsigned char CurrentIrp[8]; /* +0x0020 ca 10 00 00 */ unsigned char Timer[8]; /* +0x0028 71 11 00 00 */ unsigned long Flags; /* +0x0030 */ unsigned long Characteristics; /* +0x0034 */ unsigned char Vpb[8]; /* +0x0038 15 11 00 00 */ void *DeviceExtension; /* +0x0040 */ unsigned long DeviceType; /* +0x0048 */ char StackSize; /* +0x004c */ unsigned char Queue[72]; /* +0x0050 74 11 00 00 */ unsigned long AlignmentRequirement; /* +0x0098 */ unsigned char DeviceQueue[40]; /* +0x00a0 75 11 00 00 */ unsigned char Dpc[64]; /* +0x00c8 66 11 00 00 */ unsigned long ActiveThreadCount; /* +0x0108 */ void *SecurityDescriptor; /* +0x0110 */ unsigned char DeviceLock[24]; /* +0x0118 64 10 00 00 */ unsigned short SectorSize; /* +0x0130 */ unsigned short Spare1; /* +0x0132 */ unsigned char DeviceObjectExtension[8]; /* +0x0138 77 11 00 00 */ void *Reserved; /* +0x0140 */ }; struct _KDPC { unsigned char Type; /* +0x0000 */ unsigned char Importance; /* +0x0001 */ unsigned char Number[6]; /* +0x0002 55 10 00 00 */ unsigned char DpcListEntry[16]; /* +0x0008 1f 10 00 00 */ unsigned char DeferredRoutine[8]; /* +0x0018 6a 11 00 00 */ void *DeferredContext; /* +0x0020 */ void *SystemArgument1; /* +0x0028 */ void *SystemArgument2; /* +0x0030 */ void *DpcData; /* +0x0038 */ }; struct _EVENT_DATA_DESCRIPTOR { unsigned long long Ptr; /* +0x0000 */ unsigned long Size; /* +0x0008 */ unsigned long Reserved; /* +0x000c */ }; struct _EVENT_DESCRIPTOR { unsigned short Id; /* +0x0000 */ unsigned char Version; /* +0x0002 */ unsigned char Channel; /* +0x0003 */ unsigned char Level; /* +0x0004 */ unsigned char Opcode; /* +0x0005 */ unsigned short Task; /* +0x0006 */ unsigned long long Keyword; /* +0x0008 */ }; enum _DEVICE_POWER_STATE { PowerDeviceUnspecified = 0, PowerDeviceD0 = 1, PowerDeviceD1 = 2, PowerDeviceD2 = 3, PowerDeviceD3 = 4, PowerDeviceMaximum = 5 }; enum _DEVICE_WAKE_DEPTH { DeviceWakeDepthNotWakeable = 0, DeviceWakeDepthD0 = 1, DeviceWakeDepthD1 = 2, DeviceWakeDepthD2 = 3, DeviceWakeDepthD3hot = 4, DeviceWakeDepthD3cold = 5, DeviceWakeDepthMaximum = 6 }; struct _DMA_ADAPTER { unsigned short Version; /* +0x0000 */ unsigned short Size; /* +0x0002 */ unsigned char DmaOperations[8]; /* +0x0008 a5 11 00 00 */ }; enum _IO_ALLOCATION_ACTION { KeepObject = 1, DeallocateObject = 2, DeallocateObjectKeepRegisters = 3 }; enum DMA_COMPLETION_STATUS { DmaComplete = 0, DmaAborted = 1, DmaError = 2, DmaCancelled = 3 }; struct _DMA_OPERATIONS { unsigned long Size; /* +0x0000 */ unsigned char PutDmaAdapter[8]; /* +0x0008 ab 11 00 00 */ unsigned char AllocateCommonBuffer[8]; /* +0x0010 ae 11 00 00 */ unsigned char FreeCommonBuffer[8]; /* +0x0018 b1 11 00 00 */ unsigned char AllocateAdapterChannel[8]; /* +0x0020 b9 11 00 00 */ unsigned char FlushAdapterBuffers[8]; /* +0x0028 bc 11 00 00 */ unsigned char FreeAdapterChannel[8]; /* +0x0030 ab 11 00 00 */ unsigned char FreeMapRegisters[8]; /* +0x0038 bf 11 00 00 */ unsigned char MapTransfer[8]; /* +0x0040 c2 11 00 00 */ unsigned char GetDmaAlignment[8]; /* +0x0048 c4 11 00 00 */ unsigned char ReadDmaCounter[8]; /* +0x0050 c4 11 00 00 */ unsigned char GetScatterGatherList[8]; /* +0x0058 cc 11 00 00 */ unsigned char PutScatterGatherList[8]; /* +0x0060 cf 11 00 00 */ unsigned char CalculateScatterGatherList[8]; /* +0x0068 d2 11 00 00 */ unsigned char BuildScatterGatherList[8]; /* +0x0070 d5 11 00 00 */ unsigned char BuildMdlFromScatterGatherList[8]; /* +0x0078 d8 11 00 00 */ unsigned char GetDmaAdapterInfo[8]; /* +0x0080 dd 11 00 00 */ unsigned char GetDmaTransferInfo[8]; /* +0x0088 e2 11 00 00 */ unsigned char InitializeDmaTransferContext[8]; /* +0x0090 e5 11 00 00 */ unsigned char AllocateCommonBufferEx[8]; /* +0x0098 e8 11 00 00 */ unsigned char AllocateAdapterChannelEx[8]; /* +0x00a0 eb 11 00 00 */ unsigned char ConfigureAdapterChannel[8]; /* +0x00a8 ee 11 00 00 */ unsigned char CancelAdapterChannel[8]; /* +0x00b0 f1 11 00 00 */ unsigned char MapTransferEx[8]; /* +0x00b8 f9 11 00 00 */ unsigned char GetScatterGatherListEx[8]; /* +0x00c0 fd 11 00 00 */ unsigned char BuildScatterGatherListEx[8]; /* +0x00c8 00 12 00 00 */ unsigned char FlushAdapterBuffersEx[8]; /* +0x00d0 03 12 00 00 */ unsigned char FreeAdapterObject[8]; /* +0x00d8 06 12 00 00 */ unsigned char CancelMappedTransfer[8]; /* +0x00e0 e5 11 00 00 */ }; struct _RTL_SPLAY_LINKS { unsigned char Parent[8]; /* +0x0000 12 12 00 00 */ unsigned char LeftChild[8]; /* +0x0008 12 12 00 00 */ unsigned char RightChild[8]; /* +0x0010 12 12 00 00 */ }; struct _RTL_DYNAMIC_HASH_TABLE_CONTEXT { unsigned char ChainHead[8]; /* +0x0000 20 10 00 00 */ unsigned char PrevLinkage[8]; /* +0x0008 20 10 00 00 */ unsigned long long Signature; /* +0x0010 */ }; struct _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR { unsigned char HashEntry[24]; /* +0x0000 1c 12 00 00 */ unsigned char ChainHead[8]; /* +0x0018 20 10 00 00 */ unsigned long BucketIndex; /* +0x0020 */ }; struct _RTL_DYNAMIC_HASH_TABLE { unsigned long Flags; /* +0x0000 */ unsigned long Shift; /* +0x0004 */ unsigned long TableSize; /* +0x0008 */ unsigned long Pivot; /* +0x000c */ unsigned long DivisorMask; /* +0x0010 */ unsigned long NumEntries; /* +0x0014 */ unsigned long NonEmptyBuckets; /* +0x0018 */ unsigned long NumEnumerators; /* +0x001c */ void *Directory; /* +0x0020 */ }; struct _KPCR { /* unsigned char NtTib[0]; +0x0000 27 12 00 00 */ unsigned char GdtBase[8]; /* +0x0000 29 12 00 00 */ unsigned char TssBase[8]; /* +0x0008 2b 12 00 00 */ unsigned long long UserRsp; /* +0x0010 */ unsigned char Self[8]; /* +0x0018 26 12 00 00 */ unsigned char CurrentPrcb[8]; /* +0x0020 2d 12 00 00 */ unsigned char LockArray[8]; /* +0x0028 2f 12 00 00 */ void *Used_Self; /* +0x0030 */ unsigned char IdtBase[8]; /* +0x0038 31 12 00 00 */ unsigned char Unused[16]; /* +0x0040 32 12 00 00 */ unsigned char Irql; /* +0x0050 */ unsigned char SecondLevelCacheAssociativity; /* +0x0051 */ unsigned char ObsoleteNumber; /* +0x0052 */ unsigned char Fill0; /* +0x0053 */ unsigned char Unused0[12]; /* +0x0054 33 12 00 00 */ unsigned short MajorVersion; /* +0x0060 */ unsigned short MinorVersion; /* +0x0062 */ unsigned long StallScaleFactor; /* +0x0064 */ unsigned char Unused1[24]; /* +0x0068 34 12 00 00 */ unsigned char KernelReserved[60]; /* +0x0080 35 12 00 00 */ unsigned long SecondLevelCacheSize; /* +0x00bc */ unsigned char HalReserved[64]; /* +0x00c0 36 12 00 00 */ unsigned long Unused2; /* +0x0100 */ void *KdVersionBlock; /* +0x0108 */ void *Unused3; /* +0x0110 */ unsigned char PcrAlign1[96]; /* +0x0118 37 12 00 00 */ }; struct _IO_DRIVER_CREATE_CONTEXT { short Size; /* +0x0000 */ unsigned char ExtraCreateParameter[8]; /* +0x0008 40 12 00 00 */ void *DeviceObjectHint; /* +0x0010 */ unsigned char TxnParameters[8]; /* +0x0018 42 12 00 00 */ }; enum _WHEA_ERROR_TYPE { WheaErrTypeProcessor = 0, WheaErrTypeMemory = 1, WheaErrTypePCIExpress = 2, WheaErrTypeNMI = 3, WheaErrTypePCIXBus = 4, WheaErrTypePCIXDevice = 5, WheaErrTypeGeneric = 6 }; enum _WHEA_ERROR_SEVERITY { WheaErrSevRecoverable = 0, WheaErrSevFatal = 1, WheaErrSevCorrected = 2, WheaErrSevInformational = 3 }; enum _WHEA_ERROR_SOURCE_TYPE { WheaErrSrcTypeMCE = 0, WheaErrSrcTypeCMC = 1, WheaErrSrcTypeCPE = 2, WheaErrSrcTypeNMI = 3, WheaErrSrcTypePCIe = 4, WheaErrSrcTypeGeneric = 5, WheaErrSrcTypeINIT = 6, WheaErrSrcTypeBOOT = 7, WheaErrSrcTypeSCIGeneric = 8, WheaErrSrcTypeIPFMCA = 9, WheaErrSrcTypeIPFCMC = 10, WheaErrSrcTypeIPFCPE = 11, WheaErrSrcTypeMax = 12 }; enum _WHEA_ERROR_PACKET_DATA_FORMAT { WheaDataFormatIPFSalRecord = 0, WheaDataFormatXPFMCA = 1, WheaDataFormatMemory = 2, WheaDataFormatPCIExpress = 3, WheaDataFormatNMIPort = 4, WheaDataFormatPCIXBus = 5, WheaDataFormatPCIXDevice = 6, WheaDataFormatGeneric = 7, WheaDataFormatMax = 8 }; struct _WHEA_ERROR_PACKET_V2 { unsigned long Signature; /* +0x0000 */ unsigned long Version; /* +0x0004 */ unsigned long Length; /* +0x0008 */ unsigned char Flags[4]; /* +0x000c 47 12 00 00 */ unsigned char ErrorType[4]; /* +0x0010 49 12 00 00 */ unsigned char ErrorSeverity[4]; /* +0x0014 4b 12 00 00 */ unsigned long ErrorSourceId; /* +0x0018 */ unsigned char ErrorSourceType[4]; /* +0x001c 4d 12 00 00 */ unsigned char NotifyType[16]; /* +0x0020 24 11 00 00 */ unsigned long long Context; /* +0x0030 */ unsigned char DataFormat[4]; /* +0x0038 4f 12 00 00 */ unsigned long Reserved1; /* +0x003c */ unsigned long DataOffset; /* +0x0040 */ unsigned long DataLength; /* +0x0044 */ unsigned long PshedDataOffset; /* +0x0048 */ unsigned long PshedDataLength; /* +0x004c */ }; struct _WHEA_ERROR_RECORD { unsigned char Header[128]; /* +0x0000 54 12 00 00 */ unsigned char SectionDescriptor[72]; /* +0x0080 56 12 00 00 */ }; struct _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR { unsigned long SectionOffset; /* +0x0000 */ unsigned long SectionLength; /* +0x0004 */ unsigned char Revision[2]; /* +0x0008 5b 12 00 00 */ unsigned char ValidBits[1]; /* +0x000a 5c 12 00 00 */ unsigned char Reserved; /* +0x000b */ unsigned char Flags[4]; /* +0x000c 5d 12 00 00 */ unsigned char SectionType[16]; /* +0x0010 24 11 00 00 */ unsigned char FRUId[16]; /* +0x0020 24 11 00 00 */ unsigned char SectionSeverity[4]; /* +0x0030 4b 12 00 00 */ unsigned char FRUText[20]; /* +0x0034 5e 12 00 00 */ }; struct _GUID { unsigned long Data1; /* +0x0000 */ unsigned short Data2; /* +0x0004 */ unsigned short Data3; /* +0x0006 */ unsigned char Data4[8]; /* +0x0008 66 12 00 00 */ }; struct _SENSE_DATA { /* unsigned char ErrorCode[0]; +0x0000 6e 12 00 00 */ unsigned char Valid[1]; /* +0x0000 6f 12 00 00 */ unsigned char SegmentNumber; /* +0x0001 */ /* unsigned char SenseKey[0]; +0x0002 70 12 00 00 */ /* unsigned char Reserved[0]; +0x0002 71 12 00 00 */ /* unsigned char IncorrectLength[0]; +0x0002 72 12 00 00 */ /* unsigned char EndOfMedia[0]; +0x0002 73 12 00 00 */ unsigned char FileMark[1]; /* +0x0002 6f 12 00 00 */ unsigned char Information[4]; /* +0x0003 74 12 00 00 */ unsigned char AdditionalSenseLength; /* +0x0007 */ unsigned char CommandSpecificInformation[4]; /* +0x0008 74 12 00 00 */ unsigned char AdditionalSenseCode; /* +0x000c */ unsigned char AdditionalSenseCodeQualifier; /* +0x000d */ unsigned char FieldReplaceableUnitCode; /* +0x000e */ unsigned char SenseKeySpecific[3]; /* +0x000f 3f 11 00 00 */ }; struct _DESCRIPTOR_SENSE_DATA { /* unsigned char ErrorCode[0]; +0x0000 6e 12 00 00 */ unsigned char Reserved1[1]; /* +0x0000 6f 12 00 00 */ /* unsigned char SenseKey[0]; +0x0001 70 12 00 00 */ unsigned char Reserved2[1]; /* +0x0001 7a 12 00 00 */ unsigned char AdditionalSenseCode; /* +0x0002 */ unsigned char AdditionalSenseCodeQualifier; /* +0x0003 */ unsigned char Reserved3[3]; /* +0x0004 3f 11 00 00 */ unsigned char AdditionalSenseLength; /* +0x0007 */ unsigned char DescriptorBuffer[12]; /* +0x0008 7b 12 00 00 */ }; struct _SCSI_SENSE_DESCRIPTOR_INFORMATION { unsigned char DescriptorType; /* +0x0000 */ unsigned char AdditionalLength; /* +0x0001 */ /* unsigned char Valid[0]; +0x0002 84 12 00 00 */ unsigned char Reserved1[1]; /* +0x0002 85 12 00 00 */ unsigned char Reserved2; /* +0x0003 */ unsigned char Information[8]; /* +0x0004 66 12 00 00 */ }; struct _SCSI_SENSE_DESCRIPTOR_BLOCK_COMMAND { unsigned char DescriptorType; /* +0x0000 */ unsigned char AdditionalLength; /* +0x0001 */ unsigned char Reserved1; /* +0x0002 */ /* unsigned char Reserved2[0]; +0x0003 8a 12 00 00 */ /* unsigned char IncorrectLength[0]; +0x0003 72 12 00 00 */ unsigned char Reserved3[1]; /* +0x0003 8b 12 00 00 */ }; struct _FUNCTIONAL_DEVICE_EXTENSION { unsigned long Version; /* +0x0000 */ /* unsigned char DeviceObject[-8]; +0x0008 d7 10 00 00 */ unsigned char CommonExtension[512]; /* +0x0000 93 12 00 00 */ unsigned char LowerPdo[8]; /* +0x0200 d7 10 00 00 */ unsigned char DeviceDescriptor[8]; /* +0x0208 95 12 00 00 */ unsigned char AdapterDescriptor[8]; /* +0x0210 97 12 00 00 */ unsigned char DevicePowerState[4]; /* +0x0218 9c 11 00 00 */ unsigned long DMByteSkew; /* +0x021c */ unsigned long DMSkew; /* +0x0220 */ unsigned char DMActive; /* +0x0224 */ unsigned char SenseDataLength; /* +0x0225 */ unsigned char Reserved0[2]; /* +0x0226 98 12 00 00 */ unsigned char DiskGeometry[24]; /* +0x0228 99 12 00 00 */ unsigned char SenseData[8]; /* +0x0240 6d 12 00 00 */ unsigned long TimeOutValue; /* +0x0248 */ unsigned long DeviceNumber; /* +0x024c */ unsigned long SrbFlags; /* +0x0250 */ unsigned long ErrorCount; /* +0x0254 */ long LockCount; /* +0x0258 */ long ProtectedLockCount; /* +0x025c */ long InternalLockCount; /* +0x0260 */ unsigned char EjectSynchronizationEvent[24]; /* +0x0268 64 10 00 00 */ unsigned short DeviceFlags; /* +0x0280 */ unsigned char SectorShift; /* +0x0282 */ unsigned char CdbForceUnitAccess; /* +0x0283 */ unsigned char MediaChangeDetectionInfo[8]; /* +0x0288 9b 12 00 00 */ unsigned char Unused1[8]; /* +0x0290 68 10 00 00 */ void *Unused2; /* +0x0298 */ unsigned char KernelModeMcnContext[24]; /* +0x02a0 9c 12 00 00 */ unsigned long MediaChangeCount; /* +0x02b8 */ void *DeviceDirectory; /* +0x02c0 */ unsigned long long ReleaseQueueSpinLock; /* +0x02c8 */ unsigned char ReleaseQueueIrp[8]; /* +0x02d0 ca 10 00 00 */ unsigned char ReleaseQueueSrb[88]; /* +0x02d8 18 11 00 00 */ unsigned char ReleaseQueueNeeded; /* +0x0330 */ unsigned char ReleaseQueueInProgress; /* +0x0331 */ unsigned char ReleaseQueueIrpFromPool; /* +0x0332 */ unsigned char FailurePredicted; /* +0x0333 */ unsigned long FailureReason; /* +0x0334 */ unsigned char FailurePredictionInfo[8]; /* +0x0338 9e 12 00 00 */ unsigned char PowerDownInProgress; /* +0x0340 */ unsigned long EnumerationInterlock; /* +0x0344 */ unsigned char ChildLock[24]; /* +0x0348 64 10 00 00 */ unsigned char ChildLockOwner[8]; /* +0x0360 1a 10 00 00 */ unsigned long ChildLockAcquisitionCount; /* +0x0368 */ unsigned long ScanForSpecialFlags; /* +0x036c */ unsigned char PowerRetryDpc[64]; /* +0x0370 66 11 00 00 */ unsigned char PowerRetryTimer[64]; /* +0x03b0 9f 12 00 00 */ unsigned char PowerContext[136]; /* +0x03f0 a0 12 00 00 */ unsigned char PrivateFdoData[8]; /* +0x0478 a2 12 00 00 */ unsigned char FunctionSupportInfo[8]; /* +0x0480 a4 12 00 00 */ unsigned char MiniportDescriptor[8]; /* +0x0488 a6 12 00 00 */ unsigned long long Reserved4; /* +0x0490 */ }; struct _SCSI_REQUEST_BLOCK { unsigned short Length; /* +0x0000 */ unsigned char Function; /* +0x0002 */ unsigned char SrbStatus; /* +0x0003 */ unsigned char ScsiStatus; /* +0x0004 */ unsigned char PathId; /* +0x0005 */ unsigned char TargetId; /* +0x0006 */ unsigned char Lun; /* +0x0007 */ unsigned char QueueTag; /* +0x0008 */ unsigned char QueueAction; /* +0x0009 */ unsigned char CdbLength; /* +0x000a */ unsigned char SenseInfoBufferLength; /* +0x000b */ unsigned long SrbFlags; /* +0x000c */ unsigned long DataTransferLength; /* +0x0010 */ unsigned long TimeOutValue; /* +0x0014 */ void *DataBuffer; /* +0x0018 */ void *SenseInfoBuffer; /* +0x0020 */ unsigned char NextSrb[8]; /* +0x0028 19 11 00 00 */ void *OriginalRequest; /* +0x0030 */ void *SrbExtension; /* +0x0038 */ unsigned long InternalStatus; /* +0x0040 */ unsigned long QueueSortKey; /* +0x0040 */ unsigned long LinkTimeoutValue; /* +0x0040 */ unsigned long Reserved; /* +0x0044 */ unsigned char Cdb[16]; /* +0x0048 aa 12 00 00 */ }; struct _STORAGE_DEVICE_UNIQUE_IDENTIFIER { unsigned long Version; /* +0x0000 */ unsigned long Size; /* +0x0004 */ unsigned long StorageDeviceIdOffset; /* +0x0008 */ unsigned long StorageDeviceOffset; /* +0x000c */ unsigned long DriveLayoutSignatureOffset; /* +0x0010 */ }; enum _DUID_MATCH_STATUS { DuidExactMatch = 0, DuidSubIdMatch = 1, DuidNoMatch = 2, DuidErrorGeneral = 100, DuidErrorMissingDuid = 101, DuidErrorVersionMismatch = 102, DuidErrorInvalidDuid = 103, DuidErrorInvalidDeviceIdDescSize = 104, DuidErrorInvalidDeviceDescSize = 105, DuidErrorInvalidLayoutSigSize = 106, DuidErrorInvalidLayoutSigVersion = 107, DuidErrorMaximum = 108 }; struct _STORAGE_DEVICE_ID_DESCRIPTOR { unsigned long Version; /* +0x0000 */ unsigned long Size; /* +0x0004 */ unsigned long NumberOfIdentifiers; /* +0x0008 */ unsigned char Identifiers[4]; /* +0x000c bd 12 00 00 */ }; enum _STORAGE_IDENTIFIER_CODE_SET { StorageIdCodeSetReserved = 0, StorageIdCodeSetBinary = 1, StorageIdCodeSetAscii = 2, StorageIdCodeSetUtf8 = 3 }; enum _STORAGE_IDENTIFIER_TYPE { StorageIdTypeVendorSpecific = 0, StorageIdTypeVendorId = 1, StorageIdTypeEUI64 = 2, StorageIdTypeFCPHName = 3, StorageIdTypePortRelative = 4, StorageIdTypeTargetPortGroup = 5, StorageIdTypeLogicalUnitGroup = 6, StorageIdTypeMD5LogicalUnitIdentifier = 7, StorageIdTypeScsiNameString = 8 }; enum _STORAGE_ASSOCIATION_TYPE { StorageIdAssocDevice = 0, StorageIdAssocPort = 1, StorageIdAssocTarget = 2 }; struct _STORAGE_IDENTIFIER { unsigned char CodeSet[4]; /* +0x0000 c4 12 00 00 */ unsigned char Type[4]; /* +0x0004 c6 12 00 00 */ unsigned short IdentifierSize; /* +0x0008 */ unsigned short NextOffset; /* +0x000a */ unsigned char Association[4]; /* +0x000c c8 12 00 00 */ unsigned char Identifier[4]; /* +0x0010 bd 12 00 00 */ }; enum _STORAGE_BUS_TYPE { BusTypeUnknown = 0, BusTypeScsi = 1, BusTypeAtapi = 2, BusTypeAta = 3, BusType1394 = 4, BusTypeSsa = 5, BusTypeFibre = 6, BusTypeUsb = 7, BusTypeRAID = 8, BusTypeiScsi = 9, BusTypeSas = 10, BusTypeSata = 11, BusTypeSd = 12, BusTypeMmc = 13, BusTypeVirtual = 14, BusTypeFileBackedVirtual = 15, BusTypeMax = 16, BusTypeMaxReserved = 127 }; struct _STORAGE_DEVICE_DESCRIPTOR { unsigned long Version; /* +0x0000 */ unsigned long Size; /* +0x0004 */ unsigned char DeviceType; /* +0x0008 */ unsigned char DeviceTypeModifier; /* +0x0009 */ unsigned char RemovableMedia; /* +0x000a */ unsigned char CommandQueueing; /* +0x000b */ unsigned long VendorIdOffset; /* +0x000c */ unsigned long ProductIdOffset; /* +0x0010 */ unsigned long ProductRevisionOffset; /* +0x0014 */ unsigned long SerialNumberOffset; /* +0x0018 */ unsigned char BusType[4]; /* +0x001c cf 12 00 00 */ unsigned long RawPropertiesLength; /* +0x0020 */ unsigned char RawDeviceProperties[4]; /* +0x0024 bd 12 00 00 */ }; /* struct { unsigned long MbrSignature; +0x0000 unsigned char GptDiskId[16]; +0x0000 24 11 00 00 }; */ struct _STORAGE_DEVICE_LAYOUT_SIGNATURE { unsigned long Version; /* +0x0000 */ unsigned long Size; /* +0x0004 */ unsigned char Mbr; /* +0x0008 */ unsigned char DeviceSpecific[16]; /* +0x000c d8 12 00 00 */ }; enum _SRBEXDATATYPE { SrbExDataTypeUnknown = 0, SrbExDataTypeBidirectional = 1, SrbExDataTypeScsiCdb16 = 64, SrbExDataTypeScsiCdb32 = 65, SrbExDataTypeScsiCdbVar = 66, SrbExDataTypeWmi = 96, SrbExDataTypePower = 97, SrbExDataTypePnP = 98, SrbExDataTypeIoInfo = 128, = 32771 }; struct _SRBEX_DATA { unsigned char Type[4]; /* +0x0000 63 13 00 00 */ unsigned long Length; /* +0x0004 */ unsigned char Data[8]; /* +0x0008 bd 12 00 00 */ }; struct _STORAGE_REQUEST_BLOCK { unsigned short Length; /* +0x0000 */ unsigned char Function; /* +0x0002 */ unsigned char SrbStatus; /* +0x0003 */ unsigned char ReservedUchar[4]; /* +0x0004 74 12 00 00 */ unsigned long Signature; /* +0x0008 */ unsigned long Version; /* +0x000c */ unsigned long SrbLength; /* +0x0010 */ unsigned long SrbFunction; /* +0x0014 */ unsigned long SrbFlags; /* +0x0018 */ unsigned long ReservedUlong; /* +0x001c */ unsigned long RequestTag; /* +0x0020 */ unsigned short RequestPriority; /* +0x0024 */ unsigned short RequestAttribute; /* +0x0026 */ unsigned long TimeOutValue; /* +0x0028 */ unsigned long SystemStatus; /* +0x002c */ unsigned long ZeroGuard1; /* +0x0030 */ unsigned long AddressOffset; /* +0x0034 */ unsigned long NumSrbExData; /* +0x0038 */ unsigned long DataTransferLength; /* +0x003c */ void *DataBuffer; /* +0x0040 */ void *ZeroGuard2; /* +0x0048 */ void *OriginalRequest; /* +0x0050 */ void *ClassContext; /* +0x0058 */ void *PortContext; /* +0x0060 */ void *MiniportContext; /* +0x0068 */ unsigned char NextSrb[8]; /* +0x0070 67 13 00 00 */ unsigned char SrbExDataOffset[8]; /* +0x0078 68 13 00 00 */ }; struct _STOR_ADDRESS { unsigned short Type; /* +0x0000 */ unsigned short Port; /* +0x0002 */ unsigned long AddressLength; /* +0x0004 */ unsigned char AddressData[8]; /* +0x0008 bd 12 00 00 */ }; struct _CDB { /* unsigned char CDB6GENERIC[0]; +0x0000 75 13 00 00 */ /* unsigned char CDB6READWRITE[0]; +0x0000 76 13 00 00 */ /* unsigned char CDB6INQUIRY[0]; +0x0000 77 13 00 00 */ /* unsigned char CDB6INQUIRY3[0]; +0x0000 78 13 00 00 */ /* unsigned char CDB6VERIFY[0]; +0x0000 79 13 00 00 */ /* unsigned char CDB6FORMAT[0]; +0x0000 7a 13 00 00 */ /* unsigned char CDB10[0]; +0x0000 7b 13 00 00 */ /* unsigned char CDB12[0]; +0x0000 7c 13 00 00 */ /* unsigned char CDB16[0]; +0x0000 7d 13 00 00 */ /* unsigned char SECURITY_PROTOCOL_IN[0]; +0x0000 7e 13 00 00 */ /* unsigned char SECURITY_PROTOCOL_OUT[0]; +0x0000 7f 13 00 00 */ /* unsigned char UNMAP[0]; +0x0000 80 13 00 00 */ /* unsigned char PAUSE_RESUME[0]; +0x0000 81 13 00 00 */ /* unsigned char READ_TOC[0]; +0x0000 82 13 00 00 */ /* unsigned char READ_DISK_INFORMATION[0]; +0x0000 83 13 00 00 */ /* unsigned char READ_DISC_INFORMATION[0]; +0x0000 83 13 00 00 */ /* unsigned char READ_TRACK_INFORMATION[0]; +0x0000 84 13 00 00 */ /* unsigned char RESERVE_TRACK_RZONE[0]; +0x0000 85 13 00 00 */ /* unsigned char SEND_OPC_INFORMATION[0]; +0x0000 86 13 00 00 */ /* unsigned char REPAIR_TRACK[0]; +0x0000 87 13 00 00 */ /* unsigned char CLOSE_TRACK[0]; +0x0000 88 13 00 00 */ /* unsigned char READ_BUFFER_CAPACITY[0]; +0x0000 89 13 00 00 */ /* unsigned char SEND_CUE_SHEET[0]; +0x0000 8a 13 00 00 */ /* unsigned char READ_HEADER[0]; +0x0000 8b 13 00 00 */ /* unsigned char PLAY_AUDIO[0]; +0x0000 8c 13 00 00 */ /* unsigned char PLAY_AUDIO_MSF[0]; +0x0000 8d 13 00 00 */ /* unsigned char BLANK_MEDIA[0]; +0x0000 8e 13 00 00 */ /* unsigned char PLAY_CD[0]; +0x0000 8f 13 00 00 */ /* unsigned char SCAN_CD[0]; +0x0000 90 13 00 00 */ /* unsigned char STOP_PLAY_SCAN[0]; +0x0000 91 13 00 00 */ /* unsigned char SUBCHANNEL[0]; +0x0000 92 13 00 00 */ /* unsigned char READ_CD[0]; +0x0000 93 13 00 00 */ /* unsigned char READ_CD_MSF[0]; +0x0000 94 13 00 00 */ /* unsigned char PLXTR_READ_CDDA[0]; +0x0000 95 13 00 00 */ /* unsigned char NEC_READ_CDDA[0]; +0x0000 96 13 00 00 */ /* unsigned char MODE_SENSE[0]; +0x0000 97 13 00 00 */ /* unsigned char MODE_SENSE10[0]; +0x0000 98 13 00 00 */ /* unsigned char MODE_SELECT[0]; +0x0000 99 13 00 00 */ /* unsigned char MODE_SELECT10[0]; +0x0000 9a 13 00 00 */ /* unsigned char LOCATE[0]; +0x0000 9b 13 00 00 */ /* unsigned char LOGSENSE[0]; +0x0000 9c 13 00 00 */ /* unsigned char LOGSELECT[0]; +0x0000 9d 13 00 00 */ /* unsigned char PRINT[0]; +0x0000 9e 13 00 00 */ /* unsigned char SEEK[0]; +0x0000 9f 13 00 00 */ /* unsigned char ERASE[0]; +0x0000 a0 13 00 00 */ /* unsigned char START_STOP[0]; +0x0000 a1 13 00 00 */ /* unsigned char MEDIA_REMOVAL[0]; +0x0000 a2 13 00 00 */ /* unsigned char SEEK_BLOCK[0]; +0x0000 a3 13 00 00 */ /* unsigned char REQUEST_BLOCK_ADDRESS[0]; +0x0000 a4 13 00 00 */ /* unsigned char PARTITION[0]; +0x0000 a5 13 00 00 */ /* unsigned char WRITE_TAPE_MARKS[0]; +0x0000 a6 13 00 00 */ /* unsigned char SPACE_TAPE_MARKS[0]; +0x0000 a7 13 00 00 */ /* unsigned char READ_POSITION[0]; +0x0000 a8 13 00 00 */ /* unsigned char CDB6READWRITETAPE[0]; +0x0000 a9 13 00 00 */ /* unsigned char INIT_ELEMENT_STATUS[0]; +0x0000 aa 13 00 00 */ /* unsigned char INITIALIZE_ELEMENT_RANGE[0]; +0x0000 ab 13 00 00 */ /* unsigned char POSITION_TO_ELEMENT[0]; +0x0000 ac 13 00 00 */ /* unsigned char MOVE_MEDIUM[0]; +0x0000 ad 13 00 00 */ /* unsigned char EXCHANGE_MEDIUM[0]; +0x0000 ae 13 00 00 */ /* unsigned char READ_ELEMENT_STATUS[0]; +0x0000 af 13 00 00 */ /* unsigned char SEND_VOLUME_TAG[0]; +0x0000 b0 13 00 00 */ /* unsigned char REQUEST_VOLUME_ELEMENT_ADDRESS[0]; +0x0000 b1 13 00 00 */ /* unsigned char LOAD_UNLOAD[0]; +0x0000 b2 13 00 00 */ /* unsigned char MECH_STATUS[0]; +0x0000 b3 13 00 00 */ /* unsigned char SYNCHRONIZE_CACHE10[0]; +0x0000 b4 13 00 00 */ /* unsigned char GET_EVENT_STATUS_NOTIFICATION[0]; +0x0000 b5 13 00 00 */ /* unsigned char GET_PERFORMANCE[0]; +0x0000 b6 13 00 00 */ /* unsigned char READ_DVD_STRUCTURE[0]; +0x0000 b7 13 00 00 */ /* unsigned char SET_STREAMING[0]; +0x0000 b8 13 00 00 */ /* unsigned char SEND_DVD_STRUCTURE[0]; +0x0000 b9 13 00 00 */ /* unsigned char SEND_KEY[0]; +0x0000 ba 13 00 00 */ /* unsigned char REPORT_KEY[0]; +0x0000 bb 13 00 00 */ /* unsigned char SET_READ_AHEAD[0]; +0x0000 bc 13 00 00 */ /* unsigned char READ_FORMATTED_CAPACITIES[0]; +0x0000 bd 13 00 00 */ /* unsigned char REPORT_LUNS[0]; +0x0000 be 13 00 00 */ /* unsigned char PERSISTENT_RESERVE_IN[0]; +0x0000 bf 13 00 00 */ /* unsigned char PERSISTENT_RESERVE_OUT[0]; +0x0000 c0 13 00 00 */ /* unsigned char GET_CONFIGURATION[0]; +0x0000 c1 13 00 00 */ /* unsigned char SET_CD_SPEED[0]; +0x0000 c2 13 00 00 */ /* unsigned char READ12[0]; +0x0000 c3 13 00 00 */ /* unsigned char WRITE12[0]; +0x0000 c4 13 00 00 */ /* unsigned char READ16[0]; +0x0000 c5 13 00 00 */ /* unsigned char WRITE16[0]; +0x0000 c6 13 00 00 */ /* unsigned char VERIFY16[0]; +0x0000 c7 13 00 00 */ /* unsigned char SYNCHRONIZE_CACHE16[0]; +0x0000 c8 13 00 00 */ /* unsigned char READ_CAPACITY16[0]; +0x0000 c9 13 00 00 */ /* unsigned char ATA_PASSTHROUGH16[0]; +0x0000 ca 13 00 00 */ /* unsigned char GET_LBA_STATUS[0]; +0x0000 cb 13 00 00 */ /* unsigned char TOKEN_OPERATION[0]; +0x0000 cc 13 00 00 */ /* unsigned char RECEIVE_TOKEN_INFORMATION[0]; +0x0000 cd 13 00 00 */ /* unsigned char AsUlong[0]; +0x0000 ce 13 00 00 */ unsigned char AsByte[16]; /* +0x0000 aa 12 00 00 */ }; struct _SRBEX_DATA_SCSI_CDB16 { unsigned char Type[4]; /* +0x0000 63 13 00 00 */ unsigned long Length; /* +0x0004 */ unsigned char ScsiStatus; /* +0x0008 */ unsigned char SenseInfoBufferLength; /* +0x0009 */ unsigned char CdbLength; /* +0x000a */ unsigned char Reserved; /* +0x000b */ unsigned long Reserved1; /* +0x000c */ void *SenseInfoBuffer; /* +0x0010 */ unsigned char Cdb[16]; /* +0x0018 aa 12 00 00 */ }; struct _SRBEX_DATA_SCSI_CDB32 { unsigned char Type[4]; /* +0x0000 63 13 00 00 */ unsigned long Length; /* +0x0004 */ unsigned char ScsiStatus; /* +0x0008 */ unsigned char SenseInfoBufferLength; /* +0x0009 */ unsigned char CdbLength; /* +0x000a */ unsigned char Reserved; /* +0x000b */ unsigned long Reserved1; /* +0x000c */ void *SenseInfoBuffer; /* +0x0010 */ unsigned char Cdb[32]; /* +0x0018 d8 13 00 00 */ }; struct _SRBEX_DATA_SCSI_CDB_VAR { unsigned char Type[4]; /* +0x0000 63 13 00 00 */ unsigned long Length; /* +0x0004 */ unsigned char ScsiStatus; /* +0x0008 */ unsigned char SenseInfoBufferLength; /* +0x0009 */ unsigned char Reserved[2]; /* +0x000a 98 12 00 00 */ unsigned long CdbLength; /* +0x000c */ unsigned char Reserved1[8]; /* +0x0010 de 13 00 00 */ void *SenseInfoBuffer; /* +0x0018 */ unsigned char Cdb[8]; /* +0x0020 bd 12 00 00 */ }; struct _STOR_ADDR_BTL8 { unsigned short Type; /* +0x0000 */ unsigned short Port; /* +0x0002 */ unsigned long AddressLength; /* +0x0004 */ unsigned char Path; /* +0x0008 */ unsigned char Target; /* +0x0009 */ unsigned char Lun; /* +0x000a */ unsigned char Reserved; /* +0x000b */ }; enum _IO_PRIORITY_HINT { IoPriorityVeryLow = 0, IoPriorityLow = 1, IoPriorityNormal = 2, IoPriorityHigh = 3, IoPriorityCritical = 4, MaxIoPriorityTypes = 5 }; /* struct { /* unsigned char SrbEx[0]; +0x0000 66 13 00 00 unsigned char PowerSrbBuffer[184]; +0x0000 f3 13 00 00 }; */ /* struct { /* unsigned char SrbEx[0]; +0x0000 66 13 00 00 unsigned char ReleaseQueueSrbBuffer[144]; +0x0000 f6 13 00 00 }; */ /* struct { unsigned long OriginalSrbFlags; +0x0000 unsigned long SuccessfulIO; +0x0004 unsigned long ReEnableThreshhold; +0x0008 }; */ /* struct { unsigned char Delta[8]; +0x0000 42 10 00 00 unsigned char Tick[8]; +0x0008 42 10 00 00 unsigned char ListHead[8]; +0x0010 fd 13 00 00 unsigned long Granularity; +0x0018 unsigned long long Lock; +0x0020 unsigned char Dpc[64]; +0x0028 66 11 00 00 unsigned char Timer[64]; +0x0068 9f 12 00 00 }; */ struct _CLASS_PRIVATE_FDO_DATA { void *DetermineSupportedExtendedCommandsThread; /* +0x0000 */ unsigned char DetermineSupportedExtendedCommandsStartEvent[24]; /* +0x0008 64 10 00 00 */ unsigned char DetermineSupportedExtendedCommandsCompleteEvent[24]; /* +0x0020 64 10 00 00 */ unsigned char DetermineSupportedExtendedCommandsComplete; /* +0x0038 */ unsigned char Reserved[7]; /* +0x0039 3f 11 00 00 */ unsigned long long SupportedExtendedCommands; /* +0x0040 */ unsigned long TotalScsiSenseDeferredErrorDataCount; /* +0x0048 */ unsigned long TotalScsiSenseDescriptorDataCount; /* +0x004c */ unsigned long TotalScsiSenseUnknownFormatCount; /* +0x0050 */ unsigned long long SqmData; /* +0x0058 */ unsigned char PowerSrb[184]; /* +0x0060 f5 13 00 00 */ unsigned char ReleaseQueueSrb[144]; /* +0x0118 f8 13 00 00 */ unsigned long TrackingFlags; /* +0x01a8 */ unsigned long UpdateDiskPropertiesWorkItemActive; /* +0x01ac */ unsigned long LocalMinWorkingSetTransferPackets; /* +0x01b0 */ unsigned long LocalMaxWorkingSetTransferPackets; /* +0x01b4 */ unsigned char AllFdosListEntry[16]; /* +0x01b8 1f 10 00 00 */ unsigned char Perf[16]; /* +0x01c8 fa 13 00 00 */ unsigned long long HackFlags; /* +0x01d8 */ unsigned char HotplugInfo[8]; /* +0x01e0 fb 13 00 00 */ unsigned char Retry[168]; /* +0x01e8 ff 13 00 00 */ unsigned char TimerInitialized; /* +0x0290 */ unsigned char LoggedTURFailureSinceLastIO; /* +0x0291 */ unsigned char LoggedSYNCFailure; /* +0x0292 */ unsigned char ReleaseQueueIrpAllocated; /* +0x0293 */ unsigned char ReleaseQueueIrp[8]; /* +0x0298 ca 10 00 00 */ unsigned char AllTransferPacketsList[16]; /* +0x02a0 1f 10 00 00 */ unsigned char FreeTransferPacketsList[16]; /* +0x02b0 7b 10 00 00 */ unsigned long NumFreeTransferPackets; /* +0x02c0 */ unsigned long NumTotalTransferPackets; /* +0x02c4 */ unsigned long DbgPeakNumTransferPackets; /* +0x02c8 */ unsigned char DeferredClientIrpList[16]; /* +0x02d0 1f 10 00 00 */ unsigned long HwMaxXferLen; /* +0x02e0 */ unsigned char SrbTemplate[8]; /* +0x02e8 01 14 00 00 */ unsigned long long SpinLock; /* +0x02f0 */ unsigned char LastKnownDriveCapacityData[12]; /* +0x02f8 02 14 00 00 */ unsigned char IsCachedDriveCapDataValid; /* +0x0304 */ unsigned long ErrorLogNextIndex; /* +0x0308 */ unsigned char ErrorLogs[2048]; /* +0x0310 04 14 00 00 */ unsigned long NumHighPriorityPagingIo; /* +0x0b10 */ unsigned long MaxInterleavedNormalIo; /* +0x0b14 */ unsigned char ThrottleStartTime[8]; /* +0x0b18 42 10 00 00 */ unsigned char ThrottleStopTime[8]; /* +0x0b20 42 10 00 00 */ unsigned char LongestThrottlePeriod[8]; /* +0x0b28 42 10 00 00 */ unsigned char IdlePrioritySupported; /* +0x0b30 */ unsigned long long IdleListLock; /* +0x0b38 */ unsigned char IdleIrpList[16]; /* +0x0b40 1f 10 00 00 */ unsigned char IdleTimer[64]; /* +0x0b50 9f 12 00 00 */ unsigned char IdleDpc[64]; /* +0x0b90 66 11 00 00 */ unsigned short IdleInterval; /* +0x0bd0 */ unsigned short IdleActiveIoMax; /* +0x0bd2 */ unsigned short IdleTimerInterval; /* +0x0bd4 */ unsigned short StarvationCount; /* +0x0bd6 */ unsigned long IdleTimerTicks; /* +0x0bd8 */ unsigned long IdleTicks; /* +0x0bdc */ unsigned long IdleIoCount; /* +0x0be0 */ long IdleTimerStarted; /* +0x0be4 */ unsigned char LastIoTime[8]; /* +0x0be8 42 10 00 00 */ long ActiveIoCount; /* +0x0bf0 */ long ActiveIdleIoCount; /* +0x0bf4 */ unsigned char InterpretSenseInfo[8]; /* +0x0bf8 06 14 00 00 */ unsigned long MaxPowerOperationRetryCount; /* +0x0c00 */ unsigned char PowerProcessIrp[8]; /* +0x0c08 ca 10 00 00 */ unsigned char PerfCounterFrequency[16]; /* +0x0c10 42 10 00 00 */ }; /* struct { /* unsigned char BlockLimits[0]; +0x0000 0f 14 00 00 /* unsigned char BlockDeviceCharacteristics[0]; +0x0000 10 14 00 00 /* unsigned char LBProvisioning[0]; +0x0000 11 14 00 00 /* unsigned char BlockDeviceRODLimits[0]; +0x0000 12 14 00 00 unsigned char Reserved[4]; +0x0000 13 14 00 00 }; */ enum CLASS_FUNCTION_SUPPORT { SupportUnknown = 0, Supported = 1, NotSupported = 2 }; /* struct { unsigned char SeekPenaltyProperty[4]; +0x0000 17 14 00 00 unsigned char AccessAlignmentProperty[4]; +0x0004 17 14 00 00 unsigned char TrimProperty[4]; +0x0008 17 14 00 00 unsigned char TrimProcess[4]; +0x000c 17 14 00 00 }; */ struct _CLASS_FUNCTION_SUPPORT_INFO { unsigned char ValidInquiryPages[4]; /* +0x0000 15 14 00 00 */ unsigned char LowerLayerSupport[16]; /* +0x0004 19 14 00 00 */ unsigned char RegAccessAlignmentQueryNotSupported; /* +0x0014 */ unsigned char Reserved[3]; /* +0x0015 3f 11 00 00 */ unsigned char BlockLimitsData[32]; /* +0x0018 1a 14 00 00 */ unsigned char DeviceCharacteristicsData[8]; /* +0x0038 1b 14 00 00 */ unsigned char LBProvisioningData[12]; /* +0x0040 1c 14 00 00 */ unsigned char ReadCapacity16Data[28]; /* +0x004c 1d 14 00 00 */ unsigned char BlockDeviceRODLimitsData[32]; /* +0x0068 1e 14 00 00 */ }; enum _STORAGE_PORT_CODE_SET { StoragePortCodeSetReserved = 0, StoragePortCodeSetStorport = 1, StoragePortCodeSetSCSIport = 2, StoragePortCodeSetSpaceport = 3, StoragePortCodeSetATAport = 4, StoragePortCodeSetUSBport = 5, StoragePortCodeSetSBP2port = 6 }; struct _STORAGE_MINIPORT_DESCRIPTOR { unsigned long Version; /* +0x0000 */ unsigned long Size; /* +0x0004 */ unsigned char Portdriver[4]; /* +0x0008 23 14 00 00 */ unsigned char LUNResetSupported; /* +0x000c */ unsigned char TargetResetSupported; /* +0x000d */ unsigned short IoTimeoutValue; /* +0x000e */ }; struct _TRANSFER_PACKET { unsigned char AllPktsListEntry[16]; /* +0x0000 1f 10 00 00 */ unsigned char SlistEntry[16]; /* +0x0010 77 10 00 00 */ unsigned char Irp[8]; /* +0x0020 ca 10 00 00 */ unsigned char Fdo[8]; /* +0x0028 d7 10 00 00 */ unsigned char OriginalIrp[8]; /* +0x0030 ca 10 00 00 */ unsigned char CompleteOriginalIrpWhenLastPacketCompletes; /* +0x0038 */ unsigned long NumRetries; /* +0x003c */ unsigned char RetryTimer[64]; /* +0x0040 9f 12 00 00 */ unsigned char RetryTimerDPC[64]; /* +0x0080 66 11 00 00 */ long long RetryIn100nsUnits; /* +0x00c0 */ unsigned char SyncEventPtr[8]; /* +0x00c8 68 10 00 00 */ unsigned char DriverUsesStartIO; /* +0x00d0 */ unsigned char InLowMemRetry; /* +0x00d1 */ unsigned char *LowMemRetry_remainingBufPtr; /* +0x00d8 */ unsigned long LowMemRetry_remainingBufLen; /* +0x00e0 */ unsigned char LowMemRetry_nextChunkTargetLocation[8]; /* +0x00e8 42 10 00 00 */ unsigned char *BufPtrCopy; /* +0x00f0 */ unsigned long BufLenCopy; /* +0x00f8 */ unsigned char TargetLocationCopy[8]; /* +0x0100 42 10 00 00 */ unsigned char SrbErrorSenseData[24]; /* +0x0108 2e 14 00 00 */ unsigned char Srb[8]; /* +0x0120 01 14 00 00 */ unsigned char UsePartialMdl; /* +0x0128 */ unsigned char PartialMdl[8]; /* +0x0130 b6 10 00 00 */ unsigned char RetryHistory[8]; /* +0x0138 30 14 00 00 */ unsigned long long RequestStartTime; /* +0x0140 */ unsigned char ActivityId[24]; /* +0x0148 24 11 00 00 */ }; struct _STORAGE_REQUEST_BLOCK_HEADER { unsigned short Length; /* +0x0000 */ unsigned char Function; /* +0x0002 */ unsigned char SrbStatus; /* +0x0003 */ }; struct _SEND_DVD_STRUCTURE { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[5]; /* +0x0002 45 14 00 00 */ unsigned char Format; /* +0x0007 */ unsigned char ParameterListLength[2]; /* +0x0008 98 12 00 00 */ unsigned char Reserved3; /* +0x000a */ unsigned char Control; /* +0x000b */ }; /* struct { /* unsigned char Link[0]; +0x0000 84 12 00 00 /* unsigned char Flag[0]; +0x0000 4a 14 00 00 /* unsigned char Reserved[0]; +0x0000 4b 14 00 00 unsigned char VendorUnique[1]; +0x0000 8b 12 00 00 }; */ /* struct { unsigned char value; +0x0000 unsigned char Fields[1]; +0x0000 4d 14 00 00 }; */ struct _SPACE_TAPE_MARKS { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Code[0]; +0x0001 48 14 00 00 */ /* unsigned char Reserved[0]; +0x0001 49 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char NumMarksMSB; /* +0x0002 */ unsigned char NumMarks; /* +0x0003 */ unsigned char NumMarksLSB; /* +0x0004 */ unsigned char Byte6[1]; /* +0x0005 4f 14 00 00 */ }; enum _INTERFACE_TYPE { InterfaceTypeUndefined = -1, Internal = 0, Isa = 1, Eisa = 2, MicroChannel = 3, TurboChannel = 4, PCIBus = 5, VMEBus = 6, NuBus = 7, PCMCIABus = 8, CBus = 9, MPIBus = 10, MPSABus = 11, ProcessorInternal = 12, InternalPowerBus = 13, PNPISABus = 14, PNPBus = 15, Vmcs = 16, ACPIBus = 17, MaximumInterfaceType = 18 }; struct _IO_RESOURCE_REQUIREMENTS_LIST { unsigned long ListSize; /* +0x0000 */ unsigned char InterfaceType[4]; /* +0x0004 53 14 00 00 */ unsigned long BusNumber; /* +0x0008 */ unsigned long SlotNumber; /* +0x000c */ unsigned char Reserved[12]; /* +0x0010 33 12 00 00 */ unsigned long AlternativeLists; /* +0x001c */ unsigned char List[40]; /* +0x0020 55 14 00 00 */ }; struct _FILE_OBJECT_EXTENSION { unsigned char FileObject[8]; /* +0x0000 e0 10 00 00 */ unsigned char DeviceObject[8]; /* +0x0008 d7 10 00 00 */ unsigned long LockCount; /* +0x0010 */ unsigned long McnDisableCount; /* +0x0014 */ }; struct _DISPATCHER_HEADER { unsigned char Type; /* +0x0000 */ unsigned char TimerControlFlags; /* +0x0001 */ /* unsigned char Absolute[0]; +0x0001 84 12 00 00 */ /* unsigned char Wake[0]; +0x0001 4a 14 00 00 */ /* unsigned char Coalescable[0]; +0x0001 5a 14 00 00 */ /* unsigned char KeepShifting[0]; +0x0001 5b 14 00 00 */ /* unsigned char EncodedTolerableDelay[0]; +0x0001 7a 12 00 00 */ unsigned char Abandoned; /* +0x0001 */ unsigned char Signalling; /* +0x0001 */ unsigned char ThreadControlFlags; /* +0x0002 */ /* unsigned char CycleProfiling[0]; +0x0002 84 12 00 00 */ /* unsigned char CounterProfiling[0]; +0x0002 4a 14 00 00 */ /* unsigned char GroupScheduling[0]; +0x0002 5a 14 00 00 */ /* unsigned char AffinitySet[0]; +0x0002 5b 14 00 00 */ /* unsigned char Reserved[0]; +0x0002 7a 12 00 00 */ unsigned char Hand; /* +0x0002 */ unsigned char Size; /* +0x0002 */ unsigned char TimerMiscFlags; /* +0x0003 */ /* unsigned char Index[0]; +0x0003 5c 14 00 00 */ /* unsigned char Inserted[0]; +0x0003 73 12 00 00 */ /* unsigned char Expired[0]; +0x0003 5d 14 00 00 */ unsigned char DebugActive; /* +0x0003 */ /* unsigned char ActiveDR7[0]; +0x0003 84 12 00 00 */ /* unsigned char Instrumented[0]; +0x0003 4a 14 00 00 */ /* unsigned char Reserved2[0]; +0x0003 4b 14 00 00 */ /* unsigned char UmsScheduled[0]; +0x0003 73 12 00 00 */ /* unsigned char UmsPrimary[0]; +0x0003 6f 12 00 00 */ unsigned char DpcActive; /* +0x0003 */ unsigned char Lock[4]; /* +0x0000 1b 10 00 00 */ long SignalState; /* +0x0004 */ unsigned char WaitListHead[16]; /* +0x0008 1f 10 00 00 */ }; enum FAILURE_PREDICTION_METHOD { FailurePredictionNone = 0, FailurePredictionIoctl = 1, FailurePredictionSmart = 2, FailurePredictionSense = 3 }; struct _FAILURE_PREDICTION_INFO { unsigned char Method[4]; /* +0x0000 61 14 00 00 */ unsigned long CountDown; /* +0x0004 */ unsigned long Period; /* +0x0008 */ unsigned char WorkQueueItem[8]; /* +0x0010 63 14 00 00 */ unsigned char Event[24]; /* +0x0018 64 10 00 00 */ }; struct _PLXTR_READ_CDDA { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved0[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlockByte0; /* +0x0002 */ unsigned char LogicalBlockByte1; /* +0x0003 */ unsigned char LogicalBlockByte2; /* +0x0004 */ unsigned char LogicalBlockByte3; /* +0x0005 */ unsigned char TransferBlockByte0; /* +0x0006 */ unsigned char TransferBlockByte1; /* +0x0007 */ unsigned char TransferBlockByte2; /* +0x0008 */ unsigned char TransferBlockByte3; /* +0x0009 */ unsigned char SubCode; /* +0x000a */ unsigned char Control; /* +0x000b */ }; struct _SEND_CUE_SHEET { unsigned char OperationCode; /* +0x0000 */ unsigned char Reserved[5]; /* +0x0001 45 14 00 00 */ unsigned char CueSheetSize[3]; /* +0x0006 3f 11 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _KAPC { unsigned char Type; /* +0x0000 */ unsigned char SpareByte0; /* +0x0001 */ unsigned char Size; /* +0x0002 */ unsigned char SpareByte1; /* +0x0003 */ unsigned long SpareLong0; /* +0x0004 */ unsigned char Thread[8]; /* +0x0008 1a 10 00 00 */ unsigned char ApcListEntry[16]; /* +0x0010 1f 10 00 00 */ unsigned char Reserved[24]; /* +0x0020 34 12 00 00 */ void *NormalContext; /* +0x0038 */ void *SystemArgument1; /* +0x0040 */ void *SystemArgument2; /* +0x0048 */ char ApcStateIndex; /* +0x0050 */ char ApcMode; /* +0x0051 */ unsigned char Inserted; /* +0x0052 */ }; enum _MEDIA_CHANGE_DETECTION_STATE { MediaUnknown = 0, MediaPresent = 1, MediaNotPresent = 2, MediaUnavailable = 3 }; /* struct { unsigned char Supported; +0x0000 unsigned char HackEventMask; +0x0001 unsigned char EventMask; +0x0002 unsigned char NoChangeEventMask; +0x0003 unsigned char *Buffer; +0x0008 unsigned char Mdl[8]; +0x0010 b6 10 00 00 unsigned long BufferSize; +0x0018 }; */ /* struct { /* unsigned char Srb[0]; +0x0000 18 11 00 00 /* unsigned char SrbEx[0]; +0x0000 66 13 00 00 unsigned char SrbExBuffer[184]; +0x0000 f3 13 00 00 }; */ struct _MEDIA_CHANGE_DETECTION_INFO { unsigned char MediaChangeMutex[56]; /* +0x0000 6c 14 00 00 */ unsigned char MediaChangeDetectionState[4]; /* +0x0038 6e 14 00 00 */ long MediaChangeDetectionDisableCount; /* +0x003c */ long MediaChangeCountDown; /* +0x0040 */ long MediaChangeRetryCount; /* +0x0044 */ unsigned char Gesn[32]; /* +0x0048 70 14 00 00 */ long MediaChangeIrpInUse; /* +0x0068 */ unsigned char MediaChangeIrp[8]; /* +0x0070 ca 10 00 00 */ unsigned char MediaChangeSrb[184]; /* +0x0078 72 14 00 00 */ unsigned char *SenseBuffer; /* +0x0130 */ unsigned long SrbFlags; /* +0x0138 */ long MediaChangeIrpTimeInUse; /* +0x013c */ unsigned char MediaChangeIrpLost; /* +0x0140 */ unsigned char SenseBufferLength; /* +0x0141 */ }; struct _SENSE_DATA_EX { /* unsigned char FixedData[0]; +0x0000 6c 12 00 00 */ unsigned char DescriptorData[20]; /* +0x0000 78 12 00 00 */ }; struct _WHEA_ERROR_PACKET_FLAGS { /* unsigned char PreviousError[0]; +0x0000 0f 14 00 00 */ /* unsigned char Reserved1[0]; +0x0000 10 14 00 00 */ /* unsigned char HypervisorError[0]; +0x0000 11 14 00 00 */ /* unsigned char Simulated[0]; +0x0000 12 14 00 00 */ /* unsigned char PlatformPfaControl[0]; +0x0000 77 14 00 00 */ /* unsigned char PlatformDirectedOffline[0]; +0x0000 78 14 00 00 */ /* unsigned char Reserved2[0]; +0x0000 79 14 00 00 */ unsigned long AsULONG; /* +0x0000 */ }; struct _PRINT { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char TransferLength[3]; /* +0x0002 3f 11 00 00 */ unsigned char Control; /* +0x0005 */ }; struct _KMUTANT { unsigned char Header[24]; /* +0x0000 6f 10 00 00 */ unsigned char MutantListEntry[16]; /* +0x0018 1f 10 00 00 */ unsigned char OwnerThread[8]; /* +0x0028 1a 10 00 00 */ unsigned char Abandoned; /* +0x0030 */ unsigned char ApcDisable; /* +0x0031 */ }; struct _COMMON_DEVICE_EXTENSION { unsigned long Version; /* +0x0000 */ unsigned char DeviceObject[8]; /* +0x0008 d7 10 00 00 */ unsigned char LowerDeviceObject[8]; /* +0x0010 d7 10 00 00 */ unsigned char PartitionZeroExtension[8]; /* +0x0018 92 12 00 00 */ unsigned char DriverExtension[8]; /* +0x0020 81 14 00 00 */ long RemoveLock; /* +0x0028 */ unsigned char RemoveEvent[24]; /* +0x0030 64 10 00 00 */ unsigned long long RemoveTrackingSpinlock; /* +0x0048 */ void *RemoveTrackingList; /* +0x0050 */ long RemoveTrackingUntrackedCount; /* +0x0058 */ void *DriverData; /* +0x0060 */ /* unsigned char IsFdo[0]; +0x0068 84 12 00 00 */ /* unsigned char IsInitialized[0]; +0x0068 4a 14 00 00 */ unsigned char IsSrbLookasideListInitialized[1]; /* +0x0068 5a 14 00 00 */ unsigned char PreviousState; /* +0x0069 */ unsigned char CurrentState; /* +0x006a */ unsigned long IsRemoved; /* +0x006c */ unsigned char DeviceName[16]; /* +0x0070 36 10 00 00 */ unsigned char ChildList[8]; /* +0x0080 83 14 00 00 */ unsigned long PartitionNumber; /* +0x0088 */ unsigned char PartitionLength[8]; /* +0x0090 42 10 00 00 */ unsigned char StartingOffset[8]; /* +0x0098 42 10 00 00 */ unsigned char DevInfo[8]; /* +0x00a0 85 14 00 00 */ unsigned long PagingPathCount; /* +0x00a8 */ unsigned long DumpPathCount; /* +0x00ac */ unsigned long HibernationPathCount; /* +0x00b0 */ unsigned char PathCountEvent[72]; /* +0x00b8 64 10 00 00 */ unsigned char SrbLookasideList[128]; /* +0x0100 a1 10 00 00 */ unsigned char MountedDeviceInterfaceName[16]; /* +0x0180 36 10 00 00 */ unsigned long GuidCount; /* +0x0190 */ unsigned char GuidRegInfo[8]; /* +0x0198 87 14 00 00 */ unsigned char FileObjectDictionary[24]; /* +0x01a0 88 14 00 00 */ unsigned char PrivateCommonData[8]; /* +0x01b8 8a 14 00 00 */ unsigned char DispatchTable[8]; /* +0x01c0 8d 14 00 00 */ unsigned long long Reserved3; /* +0x01c8 */ unsigned long long Reserved4; /* +0x01d0 */ }; struct _NT_TIB { unsigned char ExceptionList[8]; /* +0x0000 91 14 00 00 */ void *StackBase; /* +0x0008 */ void *StackLimit; /* +0x0010 */ void *SubSystemTib; /* +0x0018 */ void *FiberData; /* +0x0020 */ unsigned long Version; /* +0x0020 */ void *ArbitraryUserPointer; /* +0x0028 */ unsigned char Self[8]; /* +0x0030 92 14 00 00 */ }; struct _WHEA_REVISION { unsigned char MinorRevision; /* +0x0000 */ unsigned char MajorRevision; /* +0x0001 */ unsigned short AsUSHORT; /* +0x0000 */ }; struct _SET_CD_SPEED { unsigned char OperationCode; /* +0x0000 */ unsigned char Reserved1; /* +0x0001 */ /* unsigned char RotationControl[0]; +0x0001 97 14 00 00 */ unsigned char Reserved3[1]; /* +0x0001 98 14 00 00 */ unsigned char ReadSpeed[2]; /* +0x0002 98 12 00 00 */ unsigned char WriteSpeed[2]; /* +0x0004 98 12 00 00 */ unsigned char Reserved2[5]; /* +0x0006 45 14 00 00 */ unsigned char Control; /* +0x000b */ }; struct _WHEA_ERROR_RECORD_HEADER { unsigned long Signature; /* +0x0000 */ unsigned char Revision[2]; /* +0x0004 5b 12 00 00 */ unsigned long SignatureEnd; /* +0x0006 */ unsigned short SectionCount; /* +0x000a */ unsigned char Severity[4]; /* +0x000c 4b 12 00 00 */ unsigned char ValidBits[4]; /* +0x0010 9b 14 00 00 */ unsigned long Length; /* +0x0014 */ unsigned char Timestamp[8]; /* +0x0018 9c 14 00 00 */ unsigned char PlatformId[16]; /* +0x0020 24 11 00 00 */ unsigned char PartitionId[16]; /* +0x0030 24 11 00 00 */ unsigned char CreatorId[16]; /* +0x0040 24 11 00 00 */ unsigned char NotifyType[16]; /* +0x0050 24 11 00 00 */ unsigned long long RecordId; /* +0x0060 */ unsigned char Flags[4]; /* +0x0068 9d 14 00 00 */ unsigned char PersistenceInfo[8]; /* +0x006c 9e 14 00 00 */ unsigned char Reserved[12]; /* +0x0074 7b 12 00 00 */ }; struct _SET_STREAMING { unsigned char OperationCode; /* +0x0000 */ unsigned char Reserved[8]; /* +0x0001 66 12 00 00 */ unsigned char ParameterListLength[2]; /* +0x0009 98 12 00 00 */ unsigned char Control; /* +0x000b */ }; enum _USER_ACTIVITY_PRESENCE { PowerUserPresent = 0, PowerUserNotPresent = 1, PowerUserInactive = 2, PowerUserMaximum = 3, PowerUserInvalid = 3 }; struct _CLASS_ERROR_LOG_DATA { unsigned char TickCount[8]; /* +0x0000 42 10 00 00 */ unsigned long PortNumber; /* +0x0008 */ /* unsigned char ErrorPaging[0]; +0x000c 84 12 00 00 */ /* unsigned char ErrorRetried[0]; +0x000c 4a 14 00 00 */ /* unsigned char ErrorUnhandled[0]; +0x000c 5a 14 00 00 */ unsigned char ErrorReserved[1]; /* +0x000c a5 14 00 00 */ unsigned char Reserved[3]; /* +0x000d 3f 11 00 00 */ unsigned char Srb[88]; /* +0x0010 18 11 00 00 */ unsigned char SenseData[24]; /* +0x0068 6c 12 00 00 */ }; struct _READ_CD { unsigned char OperationCode; /* +0x0000 */ /* unsigned char RelativeAddress[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved0[0]; +0x0001 4a 14 00 00 */ /* unsigned char ExpectedSectorType[0]; +0x0001 a8 14 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char StartingLBA[4]; /* +0x0002 74 12 00 00 */ unsigned char TransferBlocks[3]; /* +0x0006 3f 11 00 00 */ /* unsigned char Reserved2[0]; +0x0009 84 12 00 00 */ /* unsigned char ErrorFlags[0]; +0x0009 a9 14 00 00 */ /* unsigned char IncludeEDC[0]; +0x0009 5b 14 00 00 */ /* unsigned char IncludeUserData[0]; +0x0009 71 12 00 00 */ /* unsigned char HeaderCode[0]; +0x0009 aa 14 00 00 */ unsigned char IncludeSyncData[1]; /* +0x0009 6f 12 00 00 */ /* unsigned char SubChannelSelection[0]; +0x000a 48 14 00 00 */ unsigned char Reserved3[1]; /* +0x000a a5 14 00 00 */ unsigned char Control; /* +0x000b */ }; struct _GENERAL_LOOKASIDE { /* unsigned char ListHead[0]; +0x0000 7b 10 00 00 */ unsigned char SingleListHead[16]; /* +0x0000 31 10 00 00 */ unsigned short Depth; /* +0x0010 */ unsigned short MaximumDepth; /* +0x0012 */ unsigned long TotalAllocates; /* +0x0014 */ unsigned long AllocateMisses; /* +0x0018 */ unsigned long AllocateHits; /* +0x0018 */ unsigned long TotalFrees; /* +0x001c */ unsigned long FreeMisses; /* +0x0020 */ unsigned long FreeHits; /* +0x0020 */ unsigned char Type[4]; /* +0x0024 92 10 00 00 */ unsigned long Tag; /* +0x0028 */ unsigned long Size; /* +0x002c */ /* unsigned char AllocateEx[0]; +0x0030 95 10 00 00 */ unsigned char Allocate[8]; /* +0x0030 a8 10 00 00 */ /* unsigned char FreeEx[0]; +0x0038 9c 10 00 00 */ unsigned char Free[8]; /* +0x0038 ac 10 00 00 */ unsigned char ListEntry[16]; /* +0x0040 1f 10 00 00 */ unsigned long LastTotalAllocates; /* +0x0050 */ unsigned long LastAllocateMisses; /* +0x0054 */ unsigned long LastAllocateHits; /* +0x0054 */ unsigned char Future[40]; /* +0x0058 de 13 00 00 */ }; struct _FILE_OBJECT { short Type; /* +0x0000 */ short Size; /* +0x0002 */ unsigned char DeviceObject[8]; /* +0x0008 d7 10 00 00 */ unsigned char Vpb[8]; /* +0x0010 15 11 00 00 */ void *FsContext; /* +0x0018 */ void *FsContext2; /* +0x0020 */ unsigned char SectionObjectPointer[8]; /* +0x0028 b0 14 00 00 */ void *PrivateCacheMap; /* +0x0030 */ long FinalStatus; /* +0x0038 */ unsigned char RelatedFileObject[8]; /* +0x0040 e0 10 00 00 */ unsigned char LockOperation; /* +0x0048 */ unsigned char DeletePending; /* +0x0049 */ unsigned char ReadAccess; /* +0x004a */ unsigned char WriteAccess; /* +0x004b */ unsigned char DeleteAccess; /* +0x004c */ unsigned char SharedRead; /* +0x004d */ unsigned char SharedWrite; /* +0x004e */ unsigned char SharedDelete; /* +0x004f */ unsigned long Flags; /* +0x0050 */ unsigned char FileName[16]; /* +0x0058 36 10 00 00 */ unsigned char CurrentByteOffset[8]; /* +0x0068 42 10 00 00 */ unsigned long Waiters; /* +0x0070 */ unsigned long Busy; /* +0x0074 */ void *LastLock; /* +0x0078 */ unsigned char Lock[24]; /* +0x0080 64 10 00 00 */ unsigned char Event[24]; /* +0x0098 64 10 00 00 */ unsigned char CompletionContext[8]; /* +0x00b0 b2 14 00 00 */ unsigned long long IrpListLock; /* +0x00b8 */ unsigned char IrpList[16]; /* +0x00c0 1f 10 00 00 */ void *FileObjectExtension; /* +0x00d0 */ }; struct _IO_COMPLETION_CONTEXT { void *Port; /* +0x0000 */ void *Key; /* +0x0008 */ }; struct _START_STOP { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Immediate[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 b7 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[2]; /* +0x0002 98 12 00 00 */ /* unsigned char Start[0]; +0x0004 84 12 00 00 */ /* unsigned char LoadEject[0]; +0x0004 4a 14 00 00 */ unsigned char Reserved3[1]; /* +0x0004 98 14 00 00 */ unsigned char Control; /* +0x0005 */ }; struct _INTERFACE { unsigned short Size; /* +0x0000 */ unsigned short Version; /* +0x0002 */ void *Context; /* +0x0008 */ unsigned char InterfaceReference[8]; /* +0x0010 ac 10 00 00 */ unsigned char InterfaceDereference[8]; /* +0x0018 ac 10 00 00 */ }; struct _CDB12 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char RelativeAddress[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 a9 14 00 00 */ /* unsigned char ForceUnitAccess[0]; +0x0001 5b 14 00 00 */ /* unsigned char DisablePageOut[0]; +0x0001 71 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlock[4]; /* +0x0002 74 12 00 00 */ unsigned char TransferLength[4]; /* +0x0006 74 12 00 00 */ unsigned char Reserved2; /* +0x000a */ unsigned char Control; /* +0x000b */ }; struct _STORAGE_ADAPTER_DESCRIPTOR { unsigned long Version; /* +0x0000 */ unsigned long Size; /* +0x0004 */ unsigned long MaximumTransferLength; /* +0x0008 */ unsigned long MaximumPhysicalPages; /* +0x000c */ unsigned long AlignmentMask; /* +0x0010 */ unsigned char AdapterUsesPio; /* +0x0014 */ unsigned char AdapterScansDown; /* +0x0015 */ unsigned char CommandQueueing; /* +0x0016 */ unsigned char AcceleratedTransfer; /* +0x0017 */ unsigned char BusType; /* +0x0018 */ unsigned short BusMajorVersion; /* +0x001a */ unsigned short BusMinorVersion; /* +0x001c */ unsigned char SrbType; /* +0x001e */ unsigned char AddressType; /* +0x001f */ }; struct _DRIVER_OBJECT { short Type; /* +0x0000 */ short Size; /* +0x0002 */ unsigned char DeviceObject[8]; /* +0x0008 d7 10 00 00 */ unsigned long Flags; /* +0x0010 */ void *DriverStart; /* +0x0018 */ unsigned long DriverSize; /* +0x0020 */ void *DriverSection; /* +0x0028 */ unsigned char DriverExtension[8]; /* +0x0030 c1 14 00 00 */ unsigned char DriverName[16]; /* +0x0038 36 10 00 00 */ unsigned char HardwareDatabase[8]; /* +0x0048 37 10 00 00 */ unsigned char FastIoDispatch[8]; /* +0x0050 c3 14 00 00 */ unsigned char DriverInit[8]; /* +0x0058 c6 14 00 00 */ unsigned char DriverStartIo[8]; /* +0x0060 da 10 00 00 */ unsigned char DriverUnload[8]; /* +0x0068 c9 14 00 00 */ unsigned char MajorFunction[224]; /* +0x0070 ca 14 00 00 */ }; struct _PHYSICAL_DEVICE_EXTENSION { unsigned long Version; /* +0x0000 */ /* unsigned char DeviceObject[-8]; +0x0008 d7 10 00 00 */ unsigned char CommonExtension[512]; /* +0x0000 93 12 00 00 */ unsigned char IsMissing; /* +0x0200 */ unsigned char IsEnumerated; /* +0x0201 */ unsigned char PrivatePdoData[8]; /* +0x0208 ce 14 00 00 */ unsigned long long Reserved2; /* +0x0210 */ unsigned long long Reserved3; /* +0x0218 */ unsigned long long Reserved4; /* +0x0220 */ }; struct _DMA_TRANSFER_INFO { unsigned long Version; /* +0x0000 */ unsigned char V1[12]; /* +0x0004 d1 14 00 00 */ }; struct _PERSISTENT_RESERVE_OUT { unsigned char OperationCode; /* +0x0000 */ /* unsigned char ServiceAction[0]; +0x0001 8a 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 44 14 00 00 */ /* unsigned char Type[0]; +0x0002 70 12 00 00 */ unsigned char Scope[1]; /* +0x0002 7a 12 00 00 */ unsigned char Reserved2[4]; /* +0x0003 74 12 00 00 */ unsigned char ParameterListLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _DRIVER_EXTENSION { unsigned char DriverObject[8]; /* +0x0000 6f 11 00 00 */ unsigned char AddDevice[8]; /* +0x0008 d8 14 00 00 */ unsigned long Count; /* +0x0010 */ unsigned char ServiceKeyName[16]; /* +0x0018 36 10 00 00 */ }; enum CLASS_POWER_DOWN_STATE { PowerDownDeviceInitial = 0, PowerDownDeviceLocked = 1, PowerDownDeviceStopped = 2, PowerDownDeviceOff = 3, PowerDownDeviceUnlocked = 4 }; enum CLASS_POWER_DOWN_STATE2 { PowerDownDeviceInitial2 = 0, PowerDownDeviceLocked2 = 1, PowerDownDeviceFlushed2 = 2, PowerDownDeviceStopped2 = 3, PowerDownDeviceOff2 = 4, PowerDownDeviceUnlocked2 = 5 }; enum CLASS_POWER_DOWN_STATE3 { PowerDownDeviceInitial3 = 0, PowerDownDeviceLocked3 = 1, PowerDownDeviceQuiesced3 = 2, PowerDownDeviceFlushed3 = 3, PowerDownDeviceStopped3 = 4, PowerDownDeviceOff3 = 5, PowerDownDeviceUnlocked3 = 6 }; enum CLASS_POWER_UP_STATE { PowerUpDeviceInitial = 0, PowerUpDeviceLocked = 1, PowerUpDeviceOn = 2, PowerUpDeviceStarted = 3, PowerUpDeviceUnlocked = 4 }; /* struct { /* unsigned char PowerDown[0]; +0x0000 dc 14 00 00 /* unsigned char PowerDown2[0]; +0x0000 de 14 00 00 /* unsigned char PowerDown3[0]; +0x0000 e0 14 00 00 unsigned char PowerUp[4]; +0x0000 e2 14 00 00 }; */ struct _CLASS_POWER_CONTEXT { unsigned char PowerChangeState[4]; /* +0x0000 e4 14 00 00 */ unsigned char Options[4]; /* +0x0004 e5 14 00 00 */ unsigned char InUse; /* +0x0008 */ unsigned char QueueLocked; /* +0x0009 */ long FinalStatus; /* +0x000c */ unsigned long RetryCount; /* +0x0010 */ unsigned long RetryInterval; /* +0x0014 */ unsigned char CompletionRoutine[8]; /* +0x0018 60 11 00 00 */ unsigned char DeviceObject[8]; /* +0x0020 d7 10 00 00 */ unsigned char Irp[8]; /* +0x0028 ca 10 00 00 */ unsigned char Srb[88]; /* +0x0030 18 11 00 00 */ }; struct _SECURITY_PROTOCOL_OUT { unsigned char OperationCode; /* +0x0000 */ unsigned char SecurityProtocol; /* +0x0001 */ unsigned char SecurityProtocolSpecific[2]; /* +0x0002 98 12 00 00 */ /* unsigned char Reserved1[0]; +0x0004 6e 12 00 00 */ unsigned char INC_512[1]; /* +0x0004 6f 12 00 00 */ unsigned char Reserved2; /* +0x0005 */ unsigned char AllocationLength[4]; /* +0x0006 74 12 00 00 */ unsigned char Reserved3; /* +0x000a */ unsigned char Control; /* +0x000b */ }; struct _KSPIN_LOCK_QUEUE { unsigned char Next[8]; /* +0x0000 ea 14 00 00 */ unsigned char Lock[8]; /* +0x0008 eb 14 00 00 */ }; struct _CLASS_DRIVER_EXTENSION { unsigned char RegistryPath[16]; /* +0x0000 36 10 00 00 */ unsigned char InitData[392]; /* +0x0010 ee 14 00 00 */ unsigned long DeviceCount; /* +0x0198 */ unsigned char ClassFdoQueryWmiRegInfoEx[8]; /* +0x01a0 f1 14 00 00 */ unsigned char ClassPdoQueryWmiRegInfoEx[8]; /* +0x01a8 f1 14 00 00 */ unsigned long long EtwHandle; /* +0x01b0 */ unsigned char DeviceMajorFunctionTable[224]; /* +0x01b8 ca 14 00 00 */ unsigned char MpDeviceMajorFunctionTable[224]; /* +0x0298 ca 14 00 00 */ unsigned char InterpretSenseInfo[8]; /* +0x0378 06 14 00 00 */ unsigned char WorkingSet[8]; /* +0x0380 f3 14 00 00 */ unsigned long SrbSupport; /* +0x0388 */ }; struct _LOGSELECT { unsigned char OperationCode; /* +0x0000 */ /* unsigned char SPBit[0]; +0x0001 84 12 00 00 */ /* unsigned char PCRBit[0]; +0x0001 4a 14 00 00 */ /* unsigned char Reserved1[0]; +0x0001 a8 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ /* unsigned char Reserved[0]; +0x0002 5c 14 00 00 */ unsigned char PCBit[1]; /* +0x0002 8b 12 00 00 */ unsigned char Reserved2[4]; /* +0x0003 74 12 00 00 */ unsigned char ParameterListLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _UNMAP { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Anchor[0]; +0x0001 84 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 85 12 00 00 */ unsigned char Reserved2[4]; /* +0x0002 74 12 00 00 */ /* unsigned char GroupNumber[0]; +0x0006 8a 12 00 00 */ unsigned char Reserved3[1]; /* +0x0006 44 14 00 00 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _CDB6INQUIRY { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char PageCode; /* +0x0002 */ unsigned char IReserved; /* +0x0003 */ unsigned char AllocationLength; /* +0x0004 */ unsigned char Control; /* +0x0005 */ }; struct _READ_BUFFER_CAPACITY { unsigned char OperationCode; /* +0x0000 */ /* unsigned char BlockInfo[0]; +0x0001 84 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 85 12 00 00 */ unsigned char Reserved2[5]; /* +0x0002 45 14 00 00 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _READ_DISK_INFORMATION { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[5]; /* +0x0002 45 14 00 00 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _WRITE16 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 48 14 00 00 */ /* unsigned char ForceUnitAccess[0]; +0x0001 5b 14 00 00 */ /* unsigned char DisablePageOut[0]; +0x0001 71 12 00 00 */ unsigned char WriteProtect[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlock[8]; /* +0x0002 66 12 00 00 */ unsigned char TransferLength[4]; /* +0x000a 74 12 00 00 */ /* unsigned char Reserved2[0]; +0x000e 6e 12 00 00 */ unsigned char Streaming[1]; /* +0x000e 6f 12 00 00 */ unsigned char Control; /* +0x000f */ }; struct _DMA_ADAPTER_INFO { unsigned long Version; /* +0x0000 */ unsigned char V1[20]; /* +0x0004 02 15 00 00 */ }; struct _CM_RESOURCE_LIST { unsigned long Count; /* +0x0000 */ unsigned char List[36]; /* +0x0004 06 15 00 00 */ }; struct _CM_FULL_RESOURCE_DESCRIPTOR { unsigned char InterfaceType[4]; /* +0x0000 53 14 00 00 */ unsigned long BusNumber; /* +0x0004 */ unsigned char PartialResourceList[28]; /* +0x0008 09 15 00 00 */ }; struct _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS { /* unsigned char Primary[0]; +0x0000 0f 14 00 00 */ /* unsigned char ContainmentWarning[0]; +0x0000 10 14 00 00 */ /* unsigned char Reset[0]; +0x0000 11 14 00 00 */ /* unsigned char ThresholdExceeded[0]; +0x0000 12 14 00 00 */ /* unsigned char ResourceNotAvailable[0]; +0x0000 77 14 00 00 */ /* unsigned char LatentError[0]; +0x0000 78 14 00 00 */ /* unsigned char Reserved[0]; +0x0000 79 14 00 00 */ unsigned long AsULONG; /* +0x0000 */ }; struct _PLAY_AUDIO_MSF { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2; /* +0x0002 */ unsigned char StartingM; /* +0x0003 */ unsigned char StartingS; /* +0x0004 */ unsigned char StartingF; /* +0x0005 */ unsigned char EndingM; /* +0x0006 */ unsigned char EndingS; /* +0x0007 */ unsigned char EndingF; /* +0x0008 */ unsigned char Control; /* +0x0009 */ }; struct _POWER_SEQUENCE { unsigned long SequenceD1; /* +0x0000 */ unsigned long SequenceD2; /* +0x0004 */ unsigned long SequenceD3; /* +0x0008 */ }; struct _READ12 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char RelativeAddress[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 a9 14 00 00 */ /* unsigned char ForceUnitAccess[0]; +0x0001 5b 14 00 00 */ /* unsigned char DisablePageOut[0]; +0x0001 71 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlock[4]; /* +0x0002 74 12 00 00 */ unsigned char TransferLength[4]; /* +0x0006 74 12 00 00 */ /* unsigned char Reserved2[0]; +0x000a 6e 12 00 00 */ unsigned char Streaming[1]; /* +0x000a 6f 12 00 00 */ unsigned char Control; /* +0x000b */ }; struct _LOCATE { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Immediate[0]; +0x0001 84 12 00 00 */ /* unsigned char CPBit[0]; +0x0001 4a 14 00 00 */ /* unsigned char BTBit[0]; +0x0001 5a 14 00 00 */ /* unsigned char Reserved1[0]; +0x0001 49 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved3; /* +0x0002 */ unsigned char LogicalBlockAddress[4]; /* +0x0003 74 12 00 00 */ unsigned char Reserved4; /* +0x0007 */ unsigned char Partition; /* +0x0008 */ unsigned char Control; /* +0x0009 */ }; struct _READ_CAPACITY_DATA_EX { unsigned char LogicalBlockAddress[8]; /* +0x0000 42 10 00 00 */ unsigned long BytesPerBlock; /* +0x0008 */ }; struct _CLASS_VPD_B2_DATA { long CommandStatus; /* +0x0000 */ unsigned char ThresholdExponent; /* +0x0004 */ /* unsigned char DP[0]; +0x0005 84 12 00 00 */ /* unsigned char ANC_SUP[0]; +0x0005 4a 14 00 00 */ /* unsigned char Reserved0[0]; +0x0005 18 15 00 00 */ /* unsigned char LBPRZ[0]; +0x0005 71 12 00 00 */ /* unsigned char LBPWS10[0]; +0x0005 72 12 00 00 */ /* unsigned char LBPWS[0]; +0x0005 73 12 00 00 */ unsigned char LBPU[1]; /* +0x0005 6f 12 00 00 */ /* unsigned char ProvisioningType[0]; +0x0006 48 14 00 00 */ unsigned char Reserved1[2]; /* +0x0006 a5 14 00 00 */ unsigned long SoftThresholdEventPending; /* +0x0008 */ }; struct GUIDREGINFO { unsigned char Guid[16]; /* +0x0000 24 11 00 00 */ unsigned long InstanceCount; /* +0x0010 */ unsigned long Flags; /* +0x0014 */ }; struct _SYNCHRONIZE_CACHE16 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 84 12 00 00 */ /* unsigned char Immediate[0]; +0x0001 4a 14 00 00 */ unsigned char Reserved2[1]; /* +0x0001 98 14 00 00 */ unsigned char LogicalBlock[8]; /* +0x0002 66 12 00 00 */ unsigned char BlockCount[4]; /* +0x000a 74 12 00 00 */ unsigned char Reserved3; /* +0x000e */ unsigned char Control; /* +0x000f */ }; struct _INIT_ELEMENT_STATUS { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNubmer[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[3]; /* +0x0002 3f 11 00 00 */ /* unsigned char Reserved3[0]; +0x0005 6e 12 00 00 */ unsigned char NoBarCode[1]; /* +0x0005 6f 12 00 00 */ }; struct _IO_STATUS_BLOCK { long Status; /* +0x0000 */ void *Pointer; /* +0x0000 */ unsigned long long Information; /* +0x0008 */ }; struct _CLASS_POWER_OPTIONS { /* unsigned char PowerDown[0]; +0x0000 0f 14 00 00 */ /* unsigned char LockQueue[0]; +0x0000 10 14 00 00 */ /* unsigned char HandleSpinDown[0]; +0x0000 11 14 00 00 */ /* unsigned char HandleSpinUp[0]; +0x0000 12 14 00 00 */ unsigned char Reserved[4]; /* +0x0000 23 15 00 00 */ }; struct _REPAIR_TRACK { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Immediate[0]; +0x0001 84 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 85 12 00 00 */ unsigned char Reserved2[2]; /* +0x0002 98 12 00 00 */ unsigned char TrackNumber[2]; /* +0x0004 98 12 00 00 */ unsigned char Reserved3[3]; /* +0x0006 3f 11 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _PARTITION { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Immediate[0]; +0x0001 84 12 00 00 */ /* unsigned char Sel[0]; +0x0001 4a 14 00 00 */ unsigned char PartitionSelect[1]; /* +0x0001 98 14 00 00 */ unsigned char Reserved1[3]; /* +0x0002 3f 11 00 00 */ unsigned char Control; /* +0x0005 */ }; struct _CDB6VERIFY { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Fixed[0]; +0x0001 84 12 00 00 */ /* unsigned char ByteCompare[0]; +0x0001 4a 14 00 00 */ /* unsigned char Immediate[0]; +0x0001 5a 14 00 00 */ /* unsigned char Reserved[0]; +0x0001 49 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char VerificationLength[3]; /* +0x0002 3f 11 00 00 */ unsigned char Control; /* +0x0005 */ }; struct _CLASS_DEV_INFO { unsigned long DeviceExtensionSize; /* +0x0000 */ unsigned long DeviceType; /* +0x0004 */ unsigned char StackSize; /* +0x0008 */ unsigned long DeviceCharacteristics; /* +0x000c */ unsigned char ClassError[8]; /* +0x0010 2e 15 00 00 */ unsigned char ClassReadWriteVerification[8]; /* +0x0018 8c 14 00 00 */ unsigned char ClassDeviceControl[8]; /* +0x0020 8c 14 00 00 */ unsigned char ClassShutdownFlush[8]; /* +0x0028 8c 14 00 00 */ unsigned char ClassCreateClose[8]; /* +0x0030 8c 14 00 00 */ unsigned char ClassInitDevice[8]; /* +0x0038 31 15 00 00 */ unsigned char ClassStartDevice[8]; /* +0x0040 31 15 00 00 */ unsigned char ClassPowerDevice[8]; /* +0x0048 8c 14 00 00 */ unsigned char ClassStopDevice[8]; /* +0x0050 34 15 00 00 */ unsigned char ClassRemoveDevice[8]; /* +0x0058 34 15 00 00 */ unsigned char ClassQueryPnpCapabilities[8]; /* +0x0060 37 15 00 00 */ unsigned char ClassWmiInfo[64]; /* +0x0068 38 15 00 00 */ }; struct _KDEVICE_QUEUE_ENTRY { unsigned char DeviceListEntry[16]; /* +0x0000 1f 10 00 00 */ unsigned long SortKey; /* +0x0010 */ unsigned char Inserted; /* +0x0014 */ }; struct _CLASS_READ_CAPACITY16_DATA { long CommandStatus; /* +0x0000 */ unsigned long BytesPerLogicalSector; /* +0x0004 */ unsigned long BytesPerPhysicalSector; /* +0x0008 */ unsigned long BytesOffsetForSectorAlignment; /* +0x000c */ unsigned char LBProvisioningEnabled; /* +0x0010 */ unsigned char LBProvisioningReadZeros; /* +0x0011 */ unsigned char Reserved0[2]; /* +0x0012 98 12 00 00 */ unsigned long Reserved1; /* +0x0014 */ }; struct _TOKEN_OPERATION { unsigned char OperationCode; /* +0x0000 */ /* unsigned char ServiceAction[0]; +0x0001 8a 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[4]; /* +0x0002 74 12 00 00 */ unsigned char ListIdentifier[4]; /* +0x0006 74 12 00 00 */ unsigned char ParameterListLength[4]; /* +0x000a 74 12 00 00 */ /* unsigned char GroupNumber[0]; +0x000e 8a 12 00 00 */ unsigned char Reserved3[1]; /* +0x000e 44 14 00 00 */ unsigned char Control; /* +0x000f */ }; struct _GET_CONFIGURATION { unsigned char OperationCode; /* +0x0000 */ /* unsigned char RequestType[0]; +0x0001 97 14 00 00 */ unsigned char Reserved1[1]; /* +0x0001 98 14 00 00 */ unsigned char StartingFeature[2]; /* +0x0002 98 12 00 00 */ unsigned char Reserved2[3]; /* +0x0004 3f 11 00 00 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _SUBCHANNEL { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved0[0]; +0x0001 84 12 00 00 */ /* unsigned char Msf[0]; +0x0001 4a 14 00 00 */ /* unsigned char Reserved1[0]; +0x0001 a8 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ /* unsigned char Reserved2[0]; +0x0002 5c 14 00 00 */ /* unsigned char SubQ[0]; +0x0002 73 12 00 00 */ unsigned char Reserved3[1]; /* +0x0002 6f 12 00 00 */ unsigned char Format; /* +0x0003 */ unsigned char Reserved4[2]; /* +0x0004 98 12 00 00 */ unsigned char TrackNumber; /* +0x0006 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _READ_TOC { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved0[0]; +0x0001 84 12 00 00 */ /* unsigned char Msf[0]; +0x0001 4a 14 00 00 */ /* unsigned char Reserved1[0]; +0x0001 a8 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ /* unsigned char Format2[0]; +0x0002 70 12 00 00 */ unsigned char Reserved2[1]; /* +0x0002 7a 12 00 00 */ unsigned char Reserved3[3]; /* +0x0003 3f 11 00 00 */ unsigned char StartingTrack; /* +0x0006 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ /* unsigned char Control[0]; +0x0009 5c 14 00 00 */ unsigned char Format[1]; /* +0x0009 8b 12 00 00 */ }; struct _NEC_READ_CDDA { unsigned char OperationCode; /* +0x0000 */ unsigned char Reserved0; /* +0x0001 */ unsigned char LogicalBlockByte0; /* +0x0002 */ unsigned char LogicalBlockByte1; /* +0x0003 */ unsigned char LogicalBlockByte2; /* +0x0004 */ unsigned char LogicalBlockByte3; /* +0x0005 */ unsigned char Reserved1; /* +0x0006 */ unsigned char TransferBlockByte0; /* +0x0007 */ unsigned char TransferBlockByte1; /* +0x0008 */ unsigned char Control; /* +0x0009 */ }; struct _MODE_SELECT10 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char SPBit[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 4a 15 00 00 */ /* unsigned char PFBit[0]; +0x0001 71 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[5]; /* +0x0002 45 14 00 00 */ unsigned char ParameterListLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _DEVICE_CAPABILITIES { unsigned short Size; /* +0x0000 */ unsigned short Version; /* +0x0002 */ /* unsigned char DeviceD1[0]; +0x0004 0f 14 00 00 */ /* unsigned char DeviceD2[0]; +0x0004 10 14 00 00 */ /* unsigned char LockSupported[0]; +0x0004 11 14 00 00 */ /* unsigned char EjectSupported[0]; +0x0004 12 14 00 00 */ /* unsigned char Removable[0]; +0x0004 77 14 00 00 */ /* unsigned char DockDevice[0]; +0x0004 78 14 00 00 */ /* unsigned char UniqueID[0]; +0x0004 4d 15 00 00 */ /* unsigned char SilentInstall[0]; +0x0004 4e 15 00 00 */ /* unsigned char RawDeviceOK[0]; +0x0004 4f 15 00 00 */ /* unsigned char SurpriseRemovalOK[0]; +0x0004 50 15 00 00 */ /* unsigned char WakeFromD0[0]; +0x0004 51 15 00 00 */ /* unsigned char WakeFromD1[0]; +0x0004 52 15 00 00 */ /* unsigned char WakeFromD2[0]; +0x0004 53 15 00 00 */ /* unsigned char WakeFromD3[0]; +0x0004 54 15 00 00 */ /* unsigned char HardwareDisabled[0]; +0x0004 55 15 00 00 */ /* unsigned char NonDynamic[0]; +0x0004 56 15 00 00 */ /* unsigned char WarmEjectSupported[0]; +0x0004 57 15 00 00 */ /* unsigned char NoDisplayInUI[0]; +0x0004 58 15 00 00 */ /* unsigned char Reserved1[0]; +0x0004 59 15 00 00 */ unsigned char Reserved[4]; /* +0x0004 5a 15 00 00 */ unsigned long Address; /* +0x0008 */ unsigned long UINumber; /* +0x000c */ unsigned char DeviceState[28]; /* +0x0010 5b 15 00 00 */ unsigned char SystemWake[4]; /* +0x002c 45 11 00 00 */ unsigned char DeviceWake[4]; /* +0x0030 9c 11 00 00 */ unsigned long D1Latency; /* +0x0034 */ unsigned long D2Latency; /* +0x0038 */ unsigned long D3Latency; /* +0x003c */ }; enum CLASSENABLEDISABLEFUNCTION { EventGeneration = 0, DataBlockCollection = 1 }; struct _CLASS_WMI_INFO { unsigned long GuidCount; /* +0x0000 */ unsigned char GuidRegInfo[8]; /* +0x0008 87 14 00 00 */ unsigned char ClassQueryWmiRegInfo[8]; /* +0x0010 60 15 00 00 */ unsigned char ClassQueryWmiDataBlock[8]; /* +0x0018 63 15 00 00 */ unsigned char ClassSetWmiDataBlock[8]; /* +0x0020 63 15 00 00 */ unsigned char ClassSetWmiDataItem[8]; /* +0x0028 66 15 00 00 */ unsigned char ClassExecuteWmiMethod[8]; /* +0x0030 69 15 00 00 */ unsigned char ClassWmiFunctionControl[8]; /* +0x0038 6e 15 00 00 */ }; struct _PLAY_AUDIO { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char StartingBlockAddress[4]; /* +0x0002 74 12 00 00 */ unsigned char Reserved2; /* +0x0006 */ unsigned char PlayLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _SCAN_CD { unsigned char OperationCode; /* +0x0000 */ /* unsigned char RelativeAddress[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 4a 15 00 00 */ /* unsigned char Direct[0]; +0x0001 71 12 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char StartingAddress[4]; /* +0x0002 74 12 00 00 */ unsigned char Reserved2[3]; /* +0x0006 3f 11 00 00 */ /* unsigned char Reserved3[0]; +0x0009 5c 14 00 00 */ unsigned char Type[1]; /* +0x0009 8b 12 00 00 */ unsigned char Reserved4; /* +0x000a */ unsigned char Control; /* +0x000b */ }; struct _READ16 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 48 14 00 00 */ /* unsigned char ForceUnitAccess[0]; +0x0001 5b 14 00 00 */ /* unsigned char DisablePageOut[0]; +0x0001 71 12 00 00 */ unsigned char ReadProtect[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlock[8]; /* +0x0002 66 12 00 00 */ unsigned char TransferLength[4]; /* +0x000a 74 12 00 00 */ /* unsigned char Reserved2[0]; +0x000e 6e 12 00 00 */ unsigned char Streaming[1]; /* +0x000e 6f 12 00 00 */ unsigned char Control; /* +0x000f */ }; struct _WHEA_ERROR_RECORD_HEADER_VALIDBITS { /* unsigned char PlatformId[0]; +0x0000 0f 14 00 00 */ /* unsigned char Timestamp[0]; +0x0000 10 14 00 00 */ /* unsigned char PartitionId[0]; +0x0000 11 14 00 00 */ /* unsigned char Reserved[0]; +0x0000 77 15 00 00 */ unsigned long AsULONG; /* +0x0000 */ }; struct _CM_PARTIAL_RESOURCE_LIST { unsigned short Version; /* +0x0000 */ unsigned short Revision; /* +0x0002 */ unsigned long Count; /* +0x0004 */ unsigned char PartialDescriptors[20]; /* +0x0008 7b 15 00 00 */ }; struct _CLASS_INIT_DATA { unsigned long InitializationDataSize; /* +0x0000 */ unsigned char FdoData[168]; /* +0x0008 84 14 00 00 */ unsigned char PdoData[168]; /* +0x00b0 84 14 00 00 */ unsigned char ClassAddDevice[8]; /* +0x0158 d8 14 00 00 */ unsigned char ClassEnumerateDevice[8]; /* +0x0160 31 15 00 00 */ unsigned char ClassQueryId[8]; /* +0x0168 80 15 00 00 */ unsigned char ClassStartIo[8]; /* +0x0170 da 10 00 00 */ unsigned char ClassUnload[8]; /* +0x0178 c9 14 00 00 */ unsigned char ClassTick[8]; /* +0x0180 82 15 00 00 */ }; struct _SECTION_OBJECT_POINTERS { void *DataSectionObject; /* +0x0000 */ void *SharedCacheMap; /* +0x0008 */ void *ImageSectionObject; /* +0x0010 */ }; struct _WRITE_TAPE_MARKS { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Immediate[0]; +0x0001 84 12 00 00 */ /* unsigned char WriteSetMarks[0]; +0x0001 4a 14 00 00 */ /* unsigned char Reserved[0]; +0x0001 a8 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char TransferLength[3]; /* +0x0002 3f 11 00 00 */ unsigned char Control; /* +0x0005 */ }; struct _SRB_HISTORY { unsigned char ClassDriverUse[32]; /* +0x0000 89 15 00 00 */ unsigned long TotalHistoryCount; /* +0x0020 */ unsigned long UsedHistoryCount; /* +0x0024 */ unsigned char History[40]; /* +0x0028 8b 15 00 00 */ }; struct _POSITION_TO_ELEMENT { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char TransportElementAddress[2]; /* +0x0002 98 12 00 00 */ unsigned char DestinationElementAddress[2]; /* +0x0004 98 12 00 00 */ unsigned char Reserved2[2]; /* +0x0006 98 12 00 00 */ /* unsigned char Flip[0]; +0x0008 84 12 00 00 */ unsigned char Reserved3[1]; /* +0x0008 85 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _KDEVICE_QUEUE { short Type; /* +0x0000 */ short Size; /* +0x0002 */ unsigned char DeviceListHead[16]; /* +0x0008 1f 10 00 00 */ unsigned long long Lock; /* +0x0018 */ unsigned char Busy; /* +0x0020 */ /* unsigned char Reserved[0]; +0x0020 90 15 00 00 */ unsigned char Hint[8]; /* +0x0020 91 15 00 00 */ }; struct _SYSTEM_POWER_STATE_CONTEXT { /* unsigned char Reserved1[0]; +0x0000 94 15 00 00 */ /* unsigned char TargetSystemState[0]; +0x0000 95 15 00 00 */ /* unsigned char EffectiveSystemState[0]; +0x0000 96 15 00 00 */ /* unsigned char CurrentSystemState[0]; +0x0000 97 15 00 00 */ /* unsigned char IgnoreHibernationPath[0]; +0x0000 98 15 00 00 */ /* unsigned char PseudoTransition[0]; +0x0000 99 15 00 00 */ /* unsigned char Reserved2[0]; +0x0000 9a 15 00 00 */ unsigned long ContextAsUlong; /* +0x0000 */ }; struct _LOAD_UNLOAD { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Immediate[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 b7 14 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[2]; /* +0x0002 98 12 00 00 */ /* unsigned char Start[0]; +0x0004 84 12 00 00 */ /* unsigned char LoadEject[0]; +0x0004 4a 14 00 00 */ unsigned char Reserved3[1]; /* +0x0004 98 14 00 00 */ unsigned char Reserved4[3]; /* +0x0005 3f 11 00 00 */ unsigned char Slot; /* +0x0008 */ unsigned char Reserved5[3]; /* +0x0009 3f 11 00 00 */ }; struct _SCATTER_GATHER_LIST { unsigned long NumberOfElements; /* +0x0000 */ unsigned long long Reserved; /* +0x0008 */ /* unsigned char Elements[0]; +0x0010 a0 15 00 00 */ }; struct _PLAY_CD { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 84 12 00 00 */ /* unsigned char CMSF[0]; +0x0001 4a 14 00 00 */ /* unsigned char ExpectedSectorType[0]; +0x0001 a8 14 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ /* unsigned char LBA[0]; +0x0002 a3 15 00 00 */ unsigned char MSF[8]; /* +0x0002 a4 15 00 00 */ /* unsigned char Audio[0]; +0x000a 84 12 00 00 */ /* unsigned char Composite[0]; +0x000a 4a 14 00 00 */ /* unsigned char Port1[0]; +0x000a 5a 14 00 00 */ /* unsigned char Port2[0]; +0x000a 5b 14 00 00 */ /* unsigned char Reserved2[0]; +0x000a a5 15 00 00 */ unsigned char Speed[1]; /* +0x000a 6f 12 00 00 */ unsigned char Control; /* +0x000b */ }; struct _DMA_TRANSFER_INFO_V1 { unsigned long MapRegisterCount; /* +0x0000 */ unsigned long ScatterGatherElementCount; /* +0x0004 */ unsigned long ScatterGatherListSize; /* +0x0008 */ }; struct _WHEA_TIMESTAMP { /* unsigned char Seconds[0]; +0x0000 aa 15 00 00 */ /* unsigned char Minutes[0]; +0x0000 ab 15 00 00 */ /* unsigned char Hours[0]; +0x0000 ac 15 00 00 */ /* unsigned char Precise[0]; +0x0000 ad 15 00 00 */ /* unsigned char Reserved[0]; +0x0000 ae 15 00 00 */ /* unsigned char Day[0]; +0x0000 af 15 00 00 */ /* unsigned char Month[0]; +0x0000 b0 15 00 00 */ /* unsigned char Year[0]; +0x0000 b1 15 00 00 */ /* unsigned char Century[0]; +0x0000 b2 15 00 00 */ unsigned char AsLARGE_INTEGER[8]; /* +0x0000 42 10 00 00 */ }; struct _VPB { short Type; /* +0x0000 */ short Size; /* +0x0002 */ unsigned short Flags; /* +0x0004 */ unsigned short VolumeLabelLength; /* +0x0006 */ unsigned char DeviceObject[8]; /* +0x0008 d7 10 00 00 */ unsigned char RealDevice[8]; /* +0x0010 d7 10 00 00 */ unsigned long SerialNumber; /* +0x0018 */ unsigned long ReferenceCount; /* +0x001c */ unsigned char VolumeLabel[64]; /* +0x0020 b5 15 00 00 */ }; struct _CLASS_VPD_B1_DATA { long CommandStatus; /* +0x0000 */ unsigned short MediumRotationRate; /* +0x0004 */ unsigned short Reserved; /* +0x0006 */ }; enum _MEMORY_CACHING_TYPE_ORIG { MmFrameBufferCached = 2 }; struct _REPORT_LUNS { unsigned char OperationCode; /* +0x0000 */ unsigned char Reserved1[5]; /* +0x0001 45 14 00 00 */ unsigned char AllocationLength[4]; /* +0x0006 74 12 00 00 */ unsigned char Reserved2[1]; /* +0x000a bd 12 00 00 */ unsigned char Control; /* +0x000b */ }; struct _VERIFY16 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 84 12 00 00 */ /* unsigned char ByteCheck[0]; +0x0001 4a 14 00 00 */ /* unsigned char BlockVerify[0]; +0x0001 5a 14 00 00 */ /* unsigned char Reserved2[0]; +0x0001 5b 14 00 00 */ /* unsigned char DisablePageOut[0]; +0x0001 71 12 00 00 */ unsigned char VerifyProtect[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlock[8]; /* +0x0002 66 12 00 00 */ unsigned char VerificationLength[4]; /* +0x000a 74 12 00 00 */ /* unsigned char Reserved3[0]; +0x000e 6e 12 00 00 */ unsigned char Streaming[1]; /* +0x000e 6f 12 00 00 */ unsigned char Control; /* +0x000f */ }; struct _SRB_HISTORY_ITEM { unsigned char TickCountSent[8]; /* +0x0000 42 10 00 00 */ unsigned char TickCountCompleted[8]; /* +0x0008 42 10 00 00 */ unsigned long MillisecondsDelayOnRetry; /* +0x0010 */ unsigned char NormalizedSenseData[18]; /* +0x0014 6c 12 00 00 */ unsigned char SrbStatus; /* +0x0026 */ unsigned char ClassDriverUse; /* +0x0027 */ }; struct _REPORT_KEY { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlockAddress[4]; /* +0x0002 74 12 00 00 */ unsigned char Reserved2[2]; /* +0x0006 98 12 00 00 */ unsigned char AllocationLength[2]; /* +0x0008 98 12 00 00 */ /* unsigned char KeyFormat[0]; +0x000a 5c 14 00 00 */ unsigned char AGID[1]; /* +0x000a 8b 12 00 00 */ unsigned char Control; /* +0x000b */ }; struct _POWER_STATE { /* unsigned char SystemState[0]; +0x0000 45 11 00 00 */ unsigned char DeviceState[4]; /* +0x0000 9c 11 00 00 */ }; struct _SEND_KEY { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[6]; /* +0x0002 c6 15 00 00 */ unsigned char ParameterListLength[2]; /* +0x0008 98 12 00 00 */ /* unsigned char KeyFormat[0]; +0x000a 5c 14 00 00 */ unsigned char AGID[1]; /* +0x000a 8b 12 00 00 */ unsigned char Control; /* +0x000b */ }; struct _READ_ELEMENT_STATUS { unsigned char OperationCode; /* +0x0000 */ /* unsigned char ElementType[0]; +0x0001 70 12 00 00 */ /* unsigned char VolTag[0]; +0x0001 71 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char StartingElementAddress[2]; /* +0x0002 98 12 00 00 */ unsigned char NumberOfElements[2]; /* +0x0004 98 12 00 00 */ unsigned char Reserved1; /* +0x0006 */ unsigned char AllocationLength[3]; /* +0x0007 3f 11 00 00 */ unsigned char Reserved2; /* +0x000a */ unsigned char Control; /* +0x000b */ }; struct _CDB6INQUIRY3 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char EnableVitalProductData[0]; +0x0001 84 12 00 00 */ /* unsigned char CommandSupportData[0]; +0x0001 4a 14 00 00 */ unsigned char Reserved1[1]; /* +0x0001 98 14 00 00 */ unsigned char PageCode; /* +0x0002 */ unsigned char Reserved2; /* +0x0003 */ unsigned char AllocationLength; /* +0x0004 */ unsigned char Control; /* +0x0005 */ }; struct _CLASS_VPD_B0_DATA { long CommandStatus; /* +0x0000 */ unsigned long MaxUnmapLbaCount; /* +0x0004 */ unsigned long MaxUnmapBlockDescrCount; /* +0x0008 */ unsigned long OptimalUnmapGranularity; /* +0x000c */ unsigned long UnmapGranularityAlignment; /* +0x0010 */ unsigned char UGAVALID; /* +0x0014 */ unsigned char Reserved0; /* +0x0015 */ unsigned short OptimalTransferLengthGranularity; /* +0x0016 */ unsigned long MaximumTransferLength; /* +0x0018 */ unsigned long OptimalTransferLength; /* +0x001c */ }; struct _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_VALIDBITS { /* unsigned char FRUId[0]; +0x0000 84 12 00 00 */ /* unsigned char FRUText[0]; +0x0000 4a 14 00 00 */ /* unsigned char Reserved[0]; +0x0000 98 14 00 00 */ unsigned char AsUCHAR; /* +0x0000 */ }; struct _CLASS_INTERPRET_SENSE_INFO2 { unsigned long Size; /* +0x0000 */ unsigned long HistoryCount; /* +0x0004 */ unsigned char Compress[8]; /* +0x0008 d3 15 00 00 */ unsigned char Interpret[8]; /* +0x0010 d6 15 00 00 */ }; struct _CDB6READWRITETAPE { unsigned char OperationCode; /* +0x0000 */ /* unsigned char VendorSpecific[0]; +0x0001 8a 12 00 00 */ unsigned char Reserved[1]; /* +0x0001 44 14 00 00 */ unsigned char TransferLenMSB; /* +0x0002 */ unsigned char TransferLen; /* +0x0003 */ unsigned char TransferLenLSB; /* +0x0004 */ /* unsigned char Link[0]; +0x0005 84 12 00 00 */ /* unsigned char Flag[0]; +0x0005 4a 14 00 00 */ /* unsigned char Reserved1[0]; +0x0005 4b 14 00 00 */ unsigned char VendorUnique[1]; /* +0x0005 8b 12 00 00 */ }; struct _DICTIONARY { unsigned long long Signature; /* +0x0000 */ unsigned char List[8]; /* +0x0008 dc 15 00 00 */ unsigned long long SpinLock; /* +0x0010 */ }; enum _MODE { KernelMode = 0, UserMode = 1, MaximumMode = 2 }; struct _IO_RESOURCE_LIST { unsigned short Version; /* +0x0000 */ unsigned short Revision; /* +0x0002 */ unsigned long Count; /* +0x0004 */ unsigned char Descriptors[32]; /* +0x0008 e2 15 00 00 */ }; struct _WHEA_ERROR_RECORD_HEADER_FLAGS { /* unsigned char Recovered[0]; +0x0000 0f 14 00 00 */ /* unsigned char PreviousError[0]; +0x0000 10 14 00 00 */ /* unsigned char Simulated[0]; +0x0000 11 14 00 00 */ /* unsigned char Reserved[0]; +0x0000 77 15 00 00 */ unsigned long AsULONG; /* +0x0000 */ }; struct _INITIALIZE_ELEMENT_RANGE { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Range[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 b7 14 00 00 */ unsigned char LogicalUnitNubmer[1]; /* +0x0001 44 14 00 00 */ unsigned char FirstElementAddress[2]; /* +0x0002 98 12 00 00 */ unsigned char Reserved2[2]; /* +0x0004 98 12 00 00 */ unsigned char NumberOfElements[2]; /* +0x0006 98 12 00 00 */ unsigned char Reserved3; /* +0x0008 */ /* unsigned char Reserved4[0]; +0x0009 6e 12 00 00 */ unsigned char NoBarCode[1]; /* +0x0009 6f 12 00 00 */ }; struct _READ_TRACK_INFORMATION { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Track[0]; +0x0001 97 14 00 00 */ /* unsigned char Reserved4[0]; +0x0001 a8 14 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char BlockAddress[4]; /* +0x0002 74 12 00 00 */ unsigned char Reserved3; /* +0x0006 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _CLASS_RETRY_INFO { unsigned char Next[8]; /* +0x0000 fd 13 00 00 */ }; /* struct { unsigned char Start[8]; +0x0000 42 10 00 00 unsigned long Length; +0x0008 }; */ /* struct { unsigned long Level; +0x0000 unsigned long Vector; +0x0004 unsigned long long Affinity; +0x0008 }; */ /* struct { unsigned short Reserved; +0x0000 unsigned short MessageCount; +0x0002 unsigned long Vector; +0x0004 unsigned long long Affinity; +0x0008 }; */ /* struct { /* unsigned char Raw[0]; +0x0000 f2 15 00 00 unsigned char Translated[16]; +0x0000 f0 15 00 00 }; */ /* struct { unsigned long Channel; +0x0000 unsigned long Port; +0x0004 unsigned long Reserved1; +0x0008 }; */ /* struct { unsigned long Channel; +0x0000 unsigned long RequestLine; +0x0004 unsigned long Reserved1; +0x0008 }; */ /* struct { unsigned char Data[12]; +0x0000 33 12 00 00 }; */ /* struct { unsigned long Start; +0x0000 unsigned long Length; +0x0004 unsigned long Reserved; +0x0008 }; */ /* struct { unsigned long DataSize; +0x0000 unsigned long Reserved1; +0x0004 unsigned long Reserved2; +0x0008 }; */ /* struct { unsigned char Start[8]; +0x0000 42 10 00 00 unsigned long Length40; +0x0008 }; */ /* struct { unsigned char Start[8]; +0x0000 42 10 00 00 unsigned long Length48; +0x0008 }; */ /* struct { unsigned char Start[8]; +0x0000 42 10 00 00 unsigned long Length64; +0x0008 }; */ /* struct { unsigned char Class; +0x0000 unsigned char Type; +0x0001 unsigned char Reserved1; +0x0002 unsigned char Reserved2; +0x0003 unsigned long IdLowPart; +0x0004 unsigned long IdHighPart; +0x0008 }; */ /* struct { /* unsigned char Generic[0]; +0x0000 ee 15 00 00 /* unsigned char Port[0]; +0x0000 ee 15 00 00 /* unsigned char Interrupt[0]; +0x0000 f0 15 00 00 /* unsigned char MessageInterrupt[0]; +0x0000 f4 15 00 00 /* unsigned char Memory[0]; +0x0000 ee 15 00 00 /* unsigned char Dma[0]; +0x0000 f6 15 00 00 /* unsigned char DmaV3[0]; +0x0000 f8 15 00 00 /* unsigned char DevicePrivate[0]; +0x0000 fa 15 00 00 /* unsigned char BusNumber[0]; +0x0000 fc 15 00 00 /* unsigned char DeviceSpecificData[0]; +0x0000 fe 15 00 00 /* unsigned char Memory40[0]; +0x0000 00 16 00 00 /* unsigned char Memory48[0]; +0x0000 02 16 00 00 /* unsigned char Memory64[0]; +0x0000 04 16 00 00 unsigned char Connection[16]; +0x0000 06 16 00 00 }; */ struct _CM_PARTIAL_RESOURCE_DESCRIPTOR { unsigned char Type; /* +0x0000 */ unsigned char ShareDisposition; /* +0x0001 */ unsigned short Flags; /* +0x0002 */ unsigned char u[16]; /* +0x0004 08 16 00 00 */ }; struct _WAIT_CONTEXT_BLOCK { /* unsigned char WaitQueueEntry[0]; +0x0000 db 10 00 00 */ unsigned char DmaWaitEntry[16]; /* +0x0000 1f 10 00 00 */ unsigned long NumberOfChannels; /* +0x0010 */ /* unsigned char SyncCallback[0]; +0x0014 0f 14 00 00 */ /* unsigned char DmaContext[0]; +0x0014 10 14 00 00 */ unsigned char Reserved[4]; /* +0x0014 0b 16 00 00 */ unsigned char DeviceRoutine[8]; /* +0x0018 b6 11 00 00 */ void *DeviceContext; /* +0x0020 */ unsigned long NumberOfMapRegisters; /* +0x0028 */ void *DeviceObject; /* +0x0030 */ void *CurrentIrp; /* +0x0038 */ unsigned char BufferChainingDpc[8]; /* +0x0040 67 11 00 00 */ }; struct _LOGSENSE { unsigned char OperationCode; /* +0x0000 */ /* unsigned char SPBit[0]; +0x0001 84 12 00 00 */ /* unsigned char PPCBit[0]; +0x0001 4a 14 00 00 */ /* unsigned char Reserved1[0]; +0x0001 a8 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ /* unsigned char PageCode[0]; +0x0002 5c 14 00 00 */ unsigned char PCBit[1]; /* +0x0002 8b 12 00 00 */ unsigned char Reserved2; /* +0x0003 */ unsigned char Reserved3; /* +0x0004 */ unsigned char ParameterPointer[2]; /* +0x0005 98 12 00 00 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _RTL_DYNAMIC_HASH_TABLE_ENTRY { unsigned char Linkage[16]; /* +0x0000 1f 10 00 00 */ unsigned long long Signature; /* +0x0010 */ }; struct _PAUSE_RESUME { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[6]; /* +0x0002 c6 15 00 00 */ unsigned char Action; /* +0x0008 */ unsigned char Control; /* +0x0009 */ }; enum _INTERLOCKED_RESULT { ResultNegative = 1, ResultZero = 0, ResultPositive = 2 }; struct _KTIMER { unsigned char Header[24]; /* +0x0000 6f 10 00 00 */ unsigned char DueTime[8]; /* +0x0018 47 10 00 00 */ unsigned char TimerListEntry[16]; /* +0x0020 1f 10 00 00 */ unsigned char Dpc[8]; /* +0x0030 67 11 00 00 */ unsigned long Processor; /* +0x0038 */ unsigned long Period; /* +0x003c */ }; struct _READ_CAPACITY16 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char ServiceAction[0]; +0x0001 8a 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlock[8]; /* +0x0002 66 12 00 00 */ unsigned char AllocationLength[4]; /* +0x000a 74 12 00 00 */ /* unsigned char PMI[0]; +0x000e 84 12 00 00 */ unsigned char Reserved2[1]; /* +0x000e 85 12 00 00 */ unsigned char Control; /* +0x000f */ }; struct _READ_HEADER { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 84 12 00 00 */ /* unsigned char Msf[0]; +0x0001 4a 14 00 00 */ /* unsigned char Reserved2[0]; +0x0001 a8 14 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlockAddress[4]; /* +0x0002 74 12 00 00 */ unsigned char Reserved3; /* +0x0006 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _FAST_IO_DISPATCH { unsigned long SizeOfFastIoDispatch; /* +0x0000 */ unsigned char FastIoCheckIfPossible[8]; /* +0x0008 1f 16 00 00 */ unsigned char FastIoRead[8]; /* +0x0010 22 16 00 00 */ unsigned char FastIoWrite[8]; /* +0x0018 22 16 00 00 */ unsigned char FastIoQueryBasicInfo[8]; /* +0x0020 27 16 00 00 */ unsigned char FastIoQueryStandardInfo[8]; /* +0x0028 2c 16 00 00 */ unsigned char FastIoLock[8]; /* +0x0030 2f 16 00 00 */ unsigned char FastIoUnlockSingle[8]; /* +0x0038 32 16 00 00 */ unsigned char FastIoUnlockAll[8]; /* +0x0040 35 16 00 00 */ unsigned char FastIoUnlockAllByKey[8]; /* +0x0048 38 16 00 00 */ unsigned char FastIoDeviceControl[8]; /* +0x0050 3b 16 00 00 */ unsigned char AcquireFileForNtCreateSection[8]; /* +0x0058 3e 16 00 00 */ unsigned char ReleaseFileForNtCreateSection[8]; /* +0x0060 3e 16 00 00 */ unsigned char FastIoDetachDevice[8]; /* +0x0068 41 16 00 00 */ unsigned char FastIoQueryNetworkOpenInfo[8]; /* +0x0070 46 16 00 00 */ unsigned char AcquireForModWrite[8]; /* +0x0078 4c 16 00 00 */ unsigned char MdlRead[8]; /* +0x0080 4f 16 00 00 */ unsigned char MdlReadComplete[8]; /* +0x0088 52 16 00 00 */ unsigned char PrepareMdlWrite[8]; /* +0x0090 4f 16 00 00 */ unsigned char MdlWriteComplete[8]; /* +0x0098 55 16 00 00 */ unsigned char FastIoReadCompressed[8]; /* +0x00a0 5a 16 00 00 */ unsigned char FastIoWriteCompressed[8]; /* +0x00a8 5a 16 00 00 */ unsigned char MdlReadCompleteCompressed[8]; /* +0x00b0 52 16 00 00 */ unsigned char MdlWriteCompleteCompressed[8]; /* +0x00b8 55 16 00 00 */ unsigned char FastIoQueryOpen[8]; /* +0x00c0 5d 16 00 00 */ unsigned char ReleaseForModWrite[8]; /* +0x00c8 60 16 00 00 */ unsigned char AcquireForCcFlush[8]; /* +0x00d0 63 16 00 00 */ unsigned char ReleaseForCcFlush[8]; /* +0x00d8 63 16 00 00 */ }; struct _STORAGE_HOTPLUG_INFO { unsigned long Size; /* +0x0000 */ unsigned char MediaRemovable; /* +0x0004 */ unsigned char MediaHotplug; /* +0x0005 */ unsigned char DeviceHotplug; /* +0x0006 */ unsigned char WriteCacheEnableOverride; /* +0x0007 */ }; struct _DMA_ADAPTER_INFO_V1 { unsigned long ReadDmaCounterAvailable; /* +0x0000 */ unsigned long ScatterGatherLimit; /* +0x0004 */ unsigned long DmaAddressWidth; /* +0x0008 */ unsigned long Flags; /* +0x000c */ unsigned long MinimumTransferUnit; /* +0x0010 */ }; struct _CLASS_WORKING_SET { unsigned long Size; /* +0x0000 */ unsigned long XferPacketsWorkingSetMaximum; /* +0x0004 */ unsigned long XferPacketsWorkingSetMinimum; /* +0x0008 */ }; struct _FILE_BASIC_INFORMATION { unsigned char CreationTime[8]; /* +0x0000 42 10 00 00 */ unsigned char LastAccessTime[8]; /* +0x0008 42 10 00 00 */ unsigned char LastWriteTime[8]; /* +0x0010 42 10 00 00 */ unsigned char ChangeTime[8]; /* +0x0018 42 10 00 00 */ unsigned long FileAttributes; /* +0x0020 */ }; struct _REQUEST_BLOCK_ADDRESS { unsigned char OperationCode; /* +0x0000 */ unsigned char Reserved1[3]; /* +0x0001 3f 11 00 00 */ unsigned char AllocationLength; /* +0x0004 */ /* unsigned char Link[0]; +0x0005 84 12 00 00 */ /* unsigned char Flag[0]; +0x0005 4a 14 00 00 */ /* unsigned char Reserved2[0]; +0x0005 4b 14 00 00 */ unsigned char VendorUnique[1]; /* +0x0005 8b 12 00 00 */ }; struct _CLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS { long CommandStatus; /* +0x0000 */ unsigned short MaximumRangeDescriptors; /* +0x0004 */ unsigned char Restricted; /* +0x0006 */ unsigned char Reserved; /* +0x0007 */ unsigned long MaximumInactivityTimer; /* +0x0008 */ unsigned long DefaultInactivityTimer; /* +0x000c */ unsigned long long MaximumTokenTransferSize; /* +0x0010 */ unsigned long long OptimalTransferCount; /* +0x0018 */ }; struct _GET_LBA_STATUS { unsigned char OperationCode; /* +0x0000 */ /* unsigned char ServiceAction[0]; +0x0001 8a 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 44 14 00 00 */ unsigned char StartingLBA[8]; /* +0x0002 66 12 00 00 */ unsigned char AllocationLength[4]; /* +0x000a 74 12 00 00 */ unsigned char Reserved2; /* +0x000e */ unsigned char Control; /* +0x000f */ }; enum _OPERATION_STATUS { OPERATION_COMPLETED_WITH_SUCCESS = 1, OPERATION_COMPLETED_WITH_ERROR = 2, OPERATION_COMPLETED_WITH_RESIDUAL_DATA = 3, OPERATION_IN_PROGRESS_IN_FOREGROUND = 17, OPERATION_IN_PROGRESS_IN_BACKGROUND = 18, OPERATION_TERMINATED = 224 }; struct _MECH_STATUS { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved[0]; +0x0001 8a 12 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved1[6]; /* +0x0002 c6 15 00 00 */ unsigned char AllocationLength[2]; /* +0x0008 98 12 00 00 */ unsigned char Reserved2[1]; /* +0x000a bd 12 00 00 */ unsigned char Control; /* +0x000b */ }; struct _SEND_VOLUME_TAG { unsigned char OperationCode; /* +0x0000 */ /* unsigned char ElementType[0]; +0x0001 70 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 71 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char StartingElementAddress[2]; /* +0x0002 98 12 00 00 */ unsigned char Reserved2; /* +0x0004 */ /* unsigned char ActionCode[0]; +0x0005 8a 12 00 00 */ unsigned char Reserved3[1]; /* +0x0005 44 14 00 00 */ unsigned char Reserved4[2]; /* +0x0006 98 12 00 00 */ unsigned char ParameterListLength[2]; /* +0x0008 98 12 00 00 */ unsigned char Reserved5; /* +0x000a */ unsigned char Control; /* +0x000b */ }; struct _IO_SECURITY_CONTEXT { unsigned char SecurityQos[8]; /* +0x0000 7b 16 00 00 */ unsigned char AccessState[8]; /* +0x0008 7d 16 00 00 */ unsigned long DesiredAccess; /* +0x0010 */ unsigned long FullCreateOptions; /* +0x0014 */ }; enum _MEDIA_TYPE { Unknown = 0, F5_1Pt2_512 = 1, F3_1Pt44_512 = 2, F3_2Pt88_512 = 3, F3_20Pt8_512 = 4, F3_720_512 = 5, F5_360_512 = 6, F5_320_512 = 7, F5_320_1024 = 8, F5_180_512 = 9, F5_160_512 = 10, RemovableMedia = 11, FixedMedia = 12, F3_120M_512 = 13, F3_640_512 = 14, F5_640_512 = 15, F5_720_512 = 16, F3_1Pt2_512 = 17, F3_1Pt23_1024 = 18, F5_1Pt23_1024 = 19, F3_128Mb_512 = 20, F3_230Mb_512 = 21, F8_256_128 = 22, F3_200Mb_512 = 23, F3_240M_512 = 24, F3_32M_512 = 25 }; struct _DISK_GEOMETRY { unsigned char Cylinders[8]; /* +0x0000 42 10 00 00 */ unsigned char MediaType[4]; /* +0x0008 81 16 00 00 */ unsigned long TracksPerCylinder; /* +0x000c */ unsigned long SectorsPerTrack; /* +0x0010 */ unsigned long BytesPerSector; /* +0x0014 */ }; struct _SEND_OPC_INFORMATION { unsigned char OperationCode; /* +0x0000 */ /* unsigned char DoOpc[0]; +0x0001 84 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 85 12 00 00 */ /* unsigned char Exclude0[0]; +0x0002 84 12 00 00 */ /* unsigned char Exclude1[0]; +0x0002 4a 14 00 00 */ unsigned char Reserved2[1]; /* +0x0002 98 14 00 00 */ unsigned char Reserved3[4]; /* +0x0003 74 12 00 00 */ unsigned char ParameterListLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Reserved4; /* +0x0009 */ }; struct _PERSISTENT_RESERVE_IN { unsigned char OperationCode; /* +0x0000 */ /* unsigned char ServiceAction[0]; +0x0001 8a 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[5]; /* +0x0002 45 14 00 00 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _MAILSLOT_CREATE_PARAMETERS { unsigned long MailslotQuota; /* +0x0000 */ unsigned long MaximumMessageSize; /* +0x0004 */ unsigned char ReadTimeout[8]; /* +0x0008 42 10 00 00 */ unsigned char TimeoutSpecified; /* +0x0010 */ }; struct _REQUEST_VOLUME_ELEMENT_ADDRESS { unsigned char OperationCode; /* +0x0000 */ /* unsigned char ElementType[0]; +0x0001 70 12 00 00 */ /* unsigned char VolTag[0]; +0x0001 71 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char StartingElementAddress[2]; /* +0x0002 98 12 00 00 */ unsigned char NumberElements[2]; /* +0x0004 98 12 00 00 */ unsigned char Reserved1; /* +0x0006 */ unsigned char AllocationLength[3]; /* +0x0007 3f 11 00 00 */ unsigned char Reserved2; /* +0x000a */ unsigned char Control; /* +0x000b */ }; struct _CDB6GENERIC { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Immediate[0]; +0x0001 84 12 00 00 */ /* unsigned char CommandUniqueBits[0]; +0x0001 b7 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char CommandUniqueBytes[3]; /* +0x0002 3f 11 00 00 */ /* unsigned char Link[0]; +0x0005 84 12 00 00 */ /* unsigned char Flag[0]; +0x0005 4a 14 00 00 */ /* unsigned char Reserved[0]; +0x0005 4b 14 00 00 */ unsigned char VendorUnique[1]; /* +0x0005 8b 12 00 00 */ }; struct _NAMED_PIPE_CREATE_PARAMETERS { unsigned long NamedPipeType; /* +0x0000 */ unsigned long ReadMode; /* +0x0004 */ unsigned long CompletionMode; /* +0x0008 */ unsigned long MaximumInstances; /* +0x000c */ unsigned long InboundQuota; /* +0x0010 */ unsigned long OutboundQuota; /* +0x0014 */ unsigned char DefaultTimeout[8]; /* +0x0018 42 10 00 00 */ unsigned char TimeoutSpecified; /* +0x0020 */ }; struct _MODE_SELECT { unsigned char OperationCode; /* +0x0000 */ /* unsigned char SPBit[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 4a 15 00 00 */ /* unsigned char PFBit[0]; +0x0001 71 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[2]; /* +0x0002 98 12 00 00 */ unsigned char ParameterListLength; /* +0x0004 */ unsigned char Control; /* +0x0005 */ }; struct _MOVE_MEDIUM { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char TransportElementAddress[2]; /* +0x0002 98 12 00 00 */ unsigned char SourceElementAddress[2]; /* +0x0004 98 12 00 00 */ unsigned char DestinationElementAddress[2]; /* +0x0006 98 12 00 00 */ unsigned char Reserved2[2]; /* +0x0008 98 12 00 00 */ /* unsigned char Flip[0]; +0x000a 84 12 00 00 */ unsigned char Reserved3[1]; /* +0x000a 85 12 00 00 */ unsigned char Control; /* +0x000b */ }; struct _EXCHANGE_MEDIUM { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char TransportElementAddress[2]; /* +0x0002 98 12 00 00 */ unsigned char SourceElementAddress[2]; /* +0x0004 98 12 00 00 */ unsigned char Destination1ElementAddress[2]; /* +0x0006 98 12 00 00 */ unsigned char Destination2ElementAddress[2]; /* +0x0008 98 12 00 00 */ /* unsigned char Flip1[0]; +0x000a 84 12 00 00 */ /* unsigned char Flip2[0]; +0x000a 4a 14 00 00 */ unsigned char Reserved3[1]; /* +0x000a 98 14 00 00 */ unsigned char Control; /* +0x000b */ }; struct _READ_POSITION { unsigned char Operation; /* +0x0000 */ /* unsigned char BlockType[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 b7 14 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[7]; /* +0x0002 96 16 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _MODE_SENSE10 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 48 14 00 00 */ /* unsigned char Dbd[0]; +0x0001 5b 14 00 00 */ /* unsigned char LongLBAAccepted[0]; +0x0001 71 12 00 00 */ unsigned char Reserved2[1]; /* +0x0001 44 14 00 00 */ /* unsigned char PageCode[0]; +0x0002 5c 14 00 00 */ unsigned char Pc[1]; /* +0x0002 8b 12 00 00 */ unsigned char SubPageCode; /* +0x0003 */ unsigned char Reserved3[3]; /* +0x0004 3f 11 00 00 */ unsigned char AllocationLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _READ_DVD_STRUCTURE { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char RMDBlockNumber[4]; /* +0x0002 74 12 00 00 */ unsigned char LayerNumber; /* +0x0006 */ unsigned char Format; /* +0x0007 */ unsigned char AllocationLength[2]; /* +0x0008 98 12 00 00 */ /* unsigned char Reserved3[0]; +0x000a 5c 14 00 00 */ unsigned char AGID[1]; /* +0x000a 8b 12 00 00 */ unsigned char Control; /* +0x000b */ }; struct _CDB6FORMAT { unsigned char OperationCode; /* +0x0000 */ /* unsigned char FormatControl[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char FReserved1; /* +0x0002 */ unsigned char InterleaveMsb; /* +0x0003 */ unsigned char InterleaveLsb; /* +0x0004 */ unsigned char FReserved2; /* +0x0005 */ }; struct _DEVOBJ_EXTENSION { short Type; /* +0x0000 */ unsigned short Size; /* +0x0002 */ unsigned char DeviceObject[8]; /* +0x0008 d7 10 00 00 */ }; struct _BLANK_MEDIA { unsigned char OperationCode; /* +0x0000 */ /* unsigned char BlankType[0]; +0x0001 48 14 00 00 */ /* unsigned char Reserved1[0]; +0x0001 5b 14 00 00 */ /* unsigned char Immediate[0]; +0x0001 71 12 00 00 */ unsigned char Reserved2[1]; /* +0x0001 44 14 00 00 */ unsigned char AddressOrTrack[4]; /* +0x0002 74 12 00 00 */ unsigned char Reserved3[5]; /* +0x0006 45 14 00 00 */ unsigned char Control; /* +0x000b */ }; struct _SET_READ_AHEAD { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char TriggerLBA[4]; /* +0x0002 74 12 00 00 */ unsigned char ReadAheadLBA[4]; /* +0x0006 74 12 00 00 */ unsigned char Reserved2; /* +0x000a */ unsigned char Control; /* +0x000b */ }; struct _TXN_PARAMETER_BLOCK { unsigned short Length; /* +0x0000 */ unsigned short TxFsContext; /* +0x0002 */ void *TransactionObject; /* +0x0008 */ }; struct _CLOSE_TRACK { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Immediate[0]; +0x0001 84 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 85 12 00 00 */ /* unsigned char Track[0]; +0x0002 84 12 00 00 */ /* unsigned char Session[0]; +0x0002 4a 14 00 00 */ unsigned char Reserved2[1]; /* +0x0002 98 14 00 00 */ unsigned char Reserved3; /* +0x0003 */ unsigned char TrackNumber[2]; /* +0x0004 98 12 00 00 */ unsigned char Reserved4[3]; /* +0x0006 3f 11 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _SCATTER_GATHER_ELEMENT { unsigned char Address[8]; /* +0x0000 42 10 00 00 */ unsigned long Length; /* +0x0008 */ unsigned long long Reserved; /* +0x0010 */ }; struct _ERASE { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Long[0]; +0x0001 84 12 00 00 */ /* unsigned char Immediate[0]; +0x0001 4a 14 00 00 */ /* unsigned char Reserved1[0]; +0x0001 a8 14 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[3]; /* +0x0002 3f 11 00 00 */ unsigned char Control; /* +0x0005 */ }; struct _SEEK_BLOCK { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Immediate[0]; +0x0001 84 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 85 12 00 00 */ unsigned char BlockAddress[3]; /* +0x0002 3f 11 00 00 */ /* unsigned char Link[0]; +0x0005 84 12 00 00 */ /* unsigned char Flag[0]; +0x0005 4a 14 00 00 */ /* unsigned char Reserved2[0]; +0x0005 4b 14 00 00 */ unsigned char VendorUnique[1]; /* +0x0005 8b 12 00 00 */ }; struct _CDB10 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char RelativeAddress[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 a9 14 00 00 */ /* unsigned char ForceUnitAccess[0]; +0x0001 5b 14 00 00 */ /* unsigned char DisablePageOut[0]; +0x0001 71 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlockByte0; /* +0x0002 */ unsigned char LogicalBlockByte1; /* +0x0003 */ unsigned char LogicalBlockByte2; /* +0x0004 */ unsigned char LogicalBlockByte3; /* +0x0005 */ unsigned char Reserved2; /* +0x0006 */ unsigned char TransferBlocksMsb; /* +0x0007 */ unsigned char TransferBlocksLsb; /* +0x0008 */ unsigned char Control; /* +0x0009 */ }; struct _FILE_NETWORK_OPEN_INFORMATION { unsigned char CreationTime[8]; /* +0x0000 42 10 00 00 */ unsigned char LastAccessTime[8]; /* +0x0008 42 10 00 00 */ unsigned char LastWriteTime[8]; /* +0x0010 42 10 00 00 */ unsigned char ChangeTime[8]; /* +0x0018 42 10 00 00 */ unsigned char AllocationSize[8]; /* +0x0020 42 10 00 00 */ unsigned char EndOfFile[8]; /* +0x0028 42 10 00 00 */ unsigned long FileAttributes; /* +0x0030 */ }; struct _SYNCHRONIZE_CACHE10 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char RelAddr[0]; +0x0001 84 12 00 00 */ /* unsigned char Immediate[0]; +0x0001 4a 14 00 00 */ /* unsigned char Reserved[0]; +0x0001 a8 14 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlockAddress[4]; /* +0x0002 74 12 00 00 */ unsigned char Reserved2; /* +0x0006 */ unsigned char BlockCount[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _GET_EVENT_STATUS_NOTIFICATION { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Immediate[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved[0]; +0x0001 b7 14 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[2]; /* +0x0002 98 12 00 00 */ unsigned char NotificationClassRequest; /* +0x0004 */ unsigned char Reserved3[2]; /* +0x0005 98 12 00 00 */ unsigned char EventListLength[2]; /* +0x0007 98 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _READ_CD_MSF { unsigned char OperationCode; /* +0x0000 */ /* unsigned char RelativeAddress[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 4a 14 00 00 */ /* unsigned char ExpectedSectorType[0]; +0x0001 a8 14 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2; /* +0x0002 */ unsigned char StartingM; /* +0x0003 */ unsigned char StartingS; /* +0x0004 */ unsigned char StartingF; /* +0x0005 */ unsigned char EndingM; /* +0x0006 */ unsigned char EndingS; /* +0x0007 */ unsigned char EndingF; /* +0x0008 */ /* unsigned char Reserved4[0]; +0x0009 84 12 00 00 */ /* unsigned char ErrorFlags[0]; +0x0009 a9 14 00 00 */ /* unsigned char IncludeEDC[0]; +0x0009 5b 14 00 00 */ /* unsigned char IncludeUserData[0]; +0x0009 71 12 00 00 */ /* unsigned char HeaderCode[0]; +0x0009 aa 14 00 00 */ unsigned char IncludeSyncData[1]; /* +0x0009 6f 12 00 00 */ /* unsigned char SubChannelSelection[0]; +0x000a 48 14 00 00 */ unsigned char Reserved5[1]; /* +0x000a a5 14 00 00 */ unsigned char Control; /* +0x000b */ }; struct _MODE_SENSE { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 48 14 00 00 */ /* unsigned char Dbd[0]; +0x0001 5b 14 00 00 */ unsigned char Reserved2[1]; /* +0x0001 7a 12 00 00 */ /* unsigned char PageCode[0]; +0x0002 5c 14 00 00 */ unsigned char Pc[1]; /* +0x0002 8b 12 00 00 */ unsigned char SubPageCode; /* +0x0003 */ unsigned char AllocationLength; /* +0x0004 */ unsigned char Control; /* +0x0005 */ }; struct _STOP_PLAY_SCAN { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char Lun[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[7]; /* +0x0002 96 16 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _CDB6READWRITE { unsigned char OperationCode; /* +0x0000 */ /* unsigned char LogicalBlockMsb1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlockMsb0; /* +0x0002 */ unsigned char LogicalBlockLsb; /* +0x0003 */ unsigned char TransferBlocks; /* +0x0004 */ unsigned char Control; /* +0x0005 */ }; /* struct { /* unsigned char InitialPrivilegeSet[0]; +0x0000 c1 16 00 00 unsigned char PrivilegeSet[44]; +0x0000 c2 16 00 00 }; */ struct _ACCESS_STATE { unsigned char OperationID[8]; /* +0x0000 23 12 00 00 */ unsigned char SecurityEvaluated; /* +0x0008 */ unsigned char GenerateAudit; /* +0x0009 */ unsigned char GenerateOnClose; /* +0x000a */ unsigned char PrivilegesAllocated; /* +0x000b */ unsigned long Flags; /* +0x000c */ unsigned long RemainingDesiredAccess; /* +0x0010 */ unsigned long PreviouslyGrantedAccess; /* +0x0014 */ unsigned long OriginalDesiredAccess; /* +0x0018 */ unsigned char SubjectSecurityContext[32]; /* +0x0020 c0 16 00 00 */ void *SecurityDescriptor; /* +0x0040 */ void *AuxData; /* +0x0048 */ unsigned char Privileges[44]; /* +0x0050 c4 16 00 00 */ unsigned char AuditPrivileges; /* +0x007c */ unsigned char ObjectName[16]; /* +0x0080 36 10 00 00 */ unsigned char ObjectTypeName[16]; /* +0x0090 36 10 00 00 */ }; struct _SEEK { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlockAddress[4]; /* +0x0002 74 12 00 00 */ unsigned char Reserved2[3]; /* +0x0006 3f 11 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _RECEIVE_TOKEN_INFORMATION { unsigned char OperationCode; /* +0x0000 */ /* unsigned char ServiceAction[0]; +0x0001 8a 12 00 00 */ unsigned char Reserved1[1]; /* +0x0001 44 14 00 00 */ unsigned char ListIdentifier[4]; /* +0x0002 74 12 00 00 */ unsigned char Reserved2[4]; /* +0x0006 74 12 00 00 */ unsigned char AllocationLength[4]; /* +0x000a 74 12 00 00 */ unsigned char Reserved3; /* +0x000e */ unsigned char Control; /* +0x000f */ }; enum _REG_NOTIFY_CLASS { RegNtDeleteKey = 0, RegNtPreDeleteKey = 0, RegNtSetValueKey = 1, RegNtPreSetValueKey = 1, RegNtDeleteValueKey = 2, RegNtPreDeleteValueKey = 2, RegNtSetInformationKey = 3, RegNtPreSetInformationKey = 3, RegNtRenameKey = 4, RegNtPreRenameKey = 4, RegNtEnumerateKey = 5, RegNtPreEnumerateKey = 5, RegNtEnumerateValueKey = 6, RegNtPreEnumerateValueKey = 6, RegNtQueryKey = 7, RegNtPreQueryKey = 7, RegNtQueryValueKey = 8, RegNtPreQueryValueKey = 8, RegNtQueryMultipleValueKey = 9, RegNtPreQueryMultipleValueKey = 9, RegNtPreCreateKey = 10, RegNtPostCreateKey = 11, RegNtPreOpenKey = 12, RegNtPostOpenKey = 13, RegNtKeyHandleClose = 14, RegNtPreKeyHandleClose = 14, RegNtPostDeleteKey = 15, RegNtPostSetValueKey = 16, RegNtPostDeleteValueKey = 17, RegNtPostSetInformationKey = 18, RegNtPostRenameKey = 19, RegNtPostEnumerateKey = 20, RegNtPostEnumerateValueKey = 21, RegNtPostQueryKey = 22, RegNtPostQueryValueKey = 23, RegNtPostQueryMultipleValueKey = 24, RegNtPostKeyHandleClose = 25, RegNtPreCreateKeyEx = 26, RegNtPostCreateKeyEx = 27, RegNtPreOpenKeyEx = 28, RegNtPostOpenKeyEx = 29, RegNtPreFlushKey = 30, RegNtPostFlushKey = 31, RegNtPreLoadKey = 32, RegNtPostLoadKey = 33, RegNtPreUnLoadKey = 34, RegNtPostUnLoadKey = 35, RegNtPreQueryKeySecurity = 36, RegNtPostQueryKeySecurity = 37, RegNtPreSetKeySecurity = 38, RegNtPostSetKeySecurity = 39, RegNtCallbackObjectContextCleanup = 40, RegNtPreRestoreKey = 41, RegNtPostRestoreKey = 42, RegNtPreSaveKey = 43, RegNtPostSaveKey = 44, RegNtPreReplaceKey = 45, RegNtPostReplaceKey = 46, MaxRegNtNotifyClass = 47 }; struct _ERESOURCE { unsigned char SystemResourcesList[16]; /* +0x0000 1f 10 00 00 */ unsigned char OwnerTable[8]; /* +0x0010 ce 16 00 00 */ short ActiveCount; /* +0x0018 */ unsigned short Flag; /* +0x001a */ unsigned char ReservedLowFlags; /* +0x001a */ unsigned char WaiterPriority; /* +0x001b */ unsigned char SharedWaiters[8]; /* +0x0020 d0 16 00 00 */ unsigned char ExclusiveWaiters[8]; /* +0x0028 68 10 00 00 */ unsigned char OwnerEntry[16]; /* +0x0030 cd 16 00 00 */ unsigned long ActiveEntries; /* +0x0040 */ unsigned long ContentionCount; /* +0x0044 */ unsigned long NumberOfSharedWaiters; /* +0x0048 */ unsigned long NumberOfExclusiveWaiters; /* +0x004c */ void *Reserved2; /* +0x0050 */ void *Address; /* +0x0058 */ unsigned long long CreatorBackTraceIndex; /* +0x0058 */ unsigned long long SpinLock; /* +0x0060 */ }; struct _KSEMAPHORE { unsigned char Header[24]; /* +0x0000 6f 10 00 00 */ long Limit; /* +0x0018 */ }; struct _RESERVE_TRACK_RZONE { unsigned char OperationCode; /* +0x0000 */ unsigned char Reserved1[4]; /* +0x0001 74 12 00 00 */ unsigned char ReservationSize[4]; /* +0x0005 74 12 00 00 */ unsigned char Control; /* +0x0009 */ }; struct _MEDIA_REMOVAL { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 8a 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char Reserved2[2]; /* +0x0002 98 12 00 00 */ /* unsigned char Prevent[0]; +0x0004 84 12 00 00 */ /* unsigned char Persistant[0]; +0x0004 4a 14 00 00 */ unsigned char Reserved3[1]; /* +0x0004 98 14 00 00 */ unsigned char Control; /* +0x0005 */ }; enum _SECURITY_IMPERSONATION_LEVEL { SecurityAnonymous = 0, SecurityIdentification = 1, SecurityImpersonation = 2, SecurityDelegation = 3 }; struct _SECURITY_SUBJECT_CONTEXT { void *ClientToken; /* +0x0000 */ unsigned char ImpersonationLevel[8]; /* +0x0008 da 16 00 00 */ void *PrimaryToken; /* +0x0010 */ void *ProcessAuditId; /* +0x0018 */ }; struct _GET_PERFORMANCE { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Except[0]; +0x0001 97 14 00 00 */ /* unsigned char Write[0]; +0x0001 5a 14 00 00 */ /* unsigned char Tolerance[0]; +0x0001 49 14 00 00 */ unsigned char Reserved0[1]; /* +0x0001 44 14 00 00 */ unsigned char StartingLBA[4]; /* +0x0002 74 12 00 00 */ unsigned char Reserved1[2]; /* +0x0006 98 12 00 00 */ unsigned char MaximumNumberOfDescriptors[2]; /* +0x0008 98 12 00 00 */ unsigned char Type; /* +0x000a */ unsigned char Control; /* +0x000b */ }; struct _WHEA_PERSISTENCE_INFO { /* unsigned char Signature[0]; +0x0000 81 10 00 00 */ /* unsigned char Length[0]; +0x0000 df 16 00 00 */ /* unsigned char Identifier[0]; +0x0000 e0 16 00 00 */ /* unsigned char Attributes[0]; +0x0000 e1 16 00 00 */ /* unsigned char DoNotLog[0]; +0x0000 e2 16 00 00 */ /* unsigned char Reserved[0]; +0x0000 e3 16 00 00 */ unsigned long long AsULONGLONG; /* +0x0000 */ }; struct _ATA_PASSTHROUGH16 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Extend[0]; +0x0001 84 12 00 00 */ /* unsigned char Protocol[0]; +0x0001 b7 14 00 00 */ unsigned char MultipleCount[1]; /* +0x0001 44 14 00 00 */ /* unsigned char TLength[0]; +0x0002 97 14 00 00 */ /* unsigned char ByteBlock[0]; +0x0002 5a 14 00 00 */ /* unsigned char TDir[0]; +0x0002 5b 14 00 00 */ /* unsigned char Reserved1[0]; +0x0002 71 12 00 00 */ /* unsigned char CkCond[0]; +0x0002 72 12 00 00 */ unsigned char Offline[1]; /* +0x0002 8b 12 00 00 */ unsigned char Features15_8; /* +0x0003 */ unsigned char Features7_0; /* +0x0004 */ unsigned char SectorCount15_8; /* +0x0005 */ unsigned char SectorCount7_0; /* +0x0006 */ unsigned char LbaLow15_8; /* +0x0007 */ unsigned char LbaLow7_0; /* +0x0008 */ unsigned char LbaMid15_8; /* +0x0009 */ unsigned char LbaMid7_0; /* +0x000a */ unsigned char LbaHigh15_8; /* +0x000b */ unsigned char LbaHigh7_0; /* +0x000c */ unsigned char Device; /* +0x000d */ unsigned char Command; /* +0x000e */ unsigned char Control; /* +0x000f */ }; struct _WRITE12 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char RelativeAddress[0]; +0x0001 84 12 00 00 */ /* unsigned char Reserved1[0]; +0x0001 4a 14 00 00 */ /* unsigned char EBP[0]; +0x0001 5a 14 00 00 */ /* unsigned char ForceUnitAccess[0]; +0x0001 5b 14 00 00 */ /* unsigned char DisablePageOut[0]; +0x0001 71 12 00 00 */ unsigned char LogicalUnitNumber[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlock[4]; /* +0x0002 74 12 00 00 */ unsigned char TransferLength[4]; /* +0x0006 74 12 00 00 */ /* unsigned char Reserved2[0]; +0x000a 6e 12 00 00 */ unsigned char Streaming[1]; /* +0x000a 6f 12 00 00 */ unsigned char Control; /* +0x000b */ }; enum _KINTERRUPT_POLARITY { InterruptPolarityUnknown = 0, InterruptActiveHigh = 1, InterruptRisingEdge = 1, InterruptActiveLow = 2, InterruptFallingEdge = 2, InterruptActiveBoth = 3 }; /* struct { unsigned long Length; +0x0000 unsigned long Alignment; +0x0004 unsigned char MinimumAddress[8]; +0x0008 42 10 00 00 unsigned char MaximumAddress[8]; +0x0010 42 10 00 00 }; */ enum _IRQ_DEVICE_POLICY { IrqPolicyMachineDefault = 0, IrqPolicyAllCloseProcessors = 1, IrqPolicyOneCloseProcessor = 2, IrqPolicyAllProcessorsInMachine = 3, IrqPolicySpecifiedProcessors = 4, IrqPolicySpreadMessagesAcrossAllProcessors = 5 }; enum _IRQ_PRIORITY { IrqPriorityUndefined = 0, IrqPriorityLow = 1, IrqPriorityNormal = 2, IrqPriorityHigh = 3 }; /* struct { unsigned long MinimumVector; +0x0000 unsigned long MaximumVector; +0x0004 unsigned char AffinityPolicy[4]; +0x0008 ef 16 00 00 unsigned char PriorityPolicy[4]; +0x000c f1 16 00 00 unsigned long long TargetedProcessors; +0x0010 }; */ /* struct { unsigned long MinimumChannel; +0x0000 unsigned long MaximumChannel; +0x0004 }; */ /* struct { unsigned long RequestLine; +0x0000 unsigned long Reserved; +0x0004 unsigned long Channel; +0x0008 unsigned long TransferWidth; +0x000c }; */ /* struct { unsigned long Length; +0x0000 unsigned long MinBusNumber; +0x0004 unsigned long MaxBusNumber; +0x0008 unsigned long Reserved; +0x000c }; */ /* struct { unsigned long Priority; +0x0000 unsigned long Reserved1; +0x0004 unsigned long Reserved2; +0x0008 }; */ /* struct { unsigned long Length40; +0x0000 unsigned long Alignment40; +0x0004 unsigned char MinimumAddress[8]; +0x0008 42 10 00 00 unsigned char MaximumAddress[8]; +0x0010 42 10 00 00 }; */ /* struct { unsigned long Length48; +0x0000 unsigned long Alignment48; +0x0004 unsigned char MinimumAddress[8]; +0x0008 42 10 00 00 unsigned char MaximumAddress[8]; +0x0010 42 10 00 00 }; */ /* struct { unsigned long Length64; +0x0000 unsigned long Alignment64; +0x0004 unsigned char MinimumAddress[8]; +0x0008 42 10 00 00 unsigned char MaximumAddress[8]; +0x0010 42 10 00 00 }; */ /* struct { /* unsigned char Port[0]; +0x0000 ed 16 00 00 /* unsigned char Memory[0]; +0x0000 ed 16 00 00 /* unsigned char Interrupt[0]; +0x0000 f3 16 00 00 /* unsigned char Dma[0]; +0x0000 f5 16 00 00 /* unsigned char DmaV3[0]; +0x0000 f7 16 00 00 /* unsigned char Generic[0]; +0x0000 ed 16 00 00 /* unsigned char DevicePrivate[0]; +0x0000 fa 15 00 00 /* unsigned char BusNumber[0]; +0x0000 f9 16 00 00 /* unsigned char ConfigData[0]; +0x0000 fb 16 00 00 /* unsigned char Memory40[0]; +0x0000 fd 16 00 00 /* unsigned char Memory48[0]; +0x0000 ff 16 00 00 /* unsigned char Memory64[0]; +0x0000 01 17 00 00 unsigned char Connection[24]; +0x0000 06 16 00 00 }; */ struct _IO_RESOURCE_DESCRIPTOR { unsigned char Option; /* +0x0000 */ unsigned char Type; /* +0x0001 */ unsigned char ShareDisposition; /* +0x0002 */ unsigned char Spare1; /* +0x0003 */ unsigned short Flags; /* +0x0004 */ unsigned short Spare2; /* +0x0006 */ unsigned char u[24]; /* +0x0008 03 17 00 00 */ }; struct _CDB16 { unsigned char OperationCode; /* +0x0000 */ /* unsigned char Reserved1[0]; +0x0001 48 14 00 00 */ /* unsigned char ForceUnitAccess[0]; +0x0001 5b 14 00 00 */ /* unsigned char DisablePageOut[0]; +0x0001 71 12 00 00 */ unsigned char Protection[1]; /* +0x0001 44 14 00 00 */ unsigned char LogicalBlock[8]; /* +0x0002 66 12 00 00 */ unsigned char TransferLength[4]; /* +0x000a 74 12 00 00 */ unsigned char Reserved2; /* +0x000e */ unsigned char Control; /* +0x000f */ }; struct _INITIAL_PRIVILEGE_SET { unsigned long PrivilegeCount; /* +0x0000 */ unsigned long Control; /* +0x0004 */ unsigned char Privilege[36]; /* +0x0008 09 17 00 00 */ }; struct _LBA { unsigned char StartingBlockAddress[4]; /* +0x0000 74 12 00 00 */ unsigned char PlayLength[4]; /* +0x0004 74 12 00 00 */ }; struct _SECURITY_QUALITY_OF_SERVICE { unsigned long Length; /* +0x0000 */ unsigned char ImpersonationLevel[4]; /* +0x0004 da 16 00 00 */ unsigned char ContextTrackingMode; /* +0x0008 */ unsigned char EffectiveOnly; /* +0x0009 */ }; struct _FILE_STANDARD_INFORMATION { unsigned char AllocationSize[8]; /* +0x0000 42 10 00 00 */ unsigned char EndOfFile[8]; /* +0x0008 42 10 00 00 */ unsigned long NumberOfLinks; /* +0x0010 */ unsigned char DeletePending; /* +0x0014 */ unsigned char Directory; /* +0x0015 */ }; struct _MSF { unsigned char Reserved1; /* +0x0000 */ unsigned char StartingM; /* +0x0001 */ unsigned char StartingS; /* +0x0002 */ unsigned char StartingF; /* +0x0003 */ unsigned char EndingM; /* +0x0004 */ unsigned char EndingS; /* +0x0005 */ unsigned char EndingF; /* +0x0006 */ unsigned char Reserved2; /* +0x0007 */ }; struct _OWNER_ENTRY { unsigned long long OwnerThread; /* +0x0000 */ /* unsigned char IoPriorityBoosted[0]; +0x0008 0f 14 00 00 */ /* unsigned char OwnerReferenced[0]; +0x0008 10 14 00 00 */ /* unsigned char OwnerCount[0]; +0x0008 0b 16 00 00 */ unsigned long TableSize; /* +0x0008 */ }; struct _LUID_AND_ATTRIBUTES { unsigned char Luid[8]; /* +0x0000 23 12 00 00 */ unsigned long Attributes; /* +0x0008 */ }; struct _PRIVILEGE_SET { unsigned long PrivilegeCount; /* +0x0000 */ unsigned long Control; /* +0x0004 */ unsigned char Privilege[12]; /* +0x0008 18 17 00 00 */ };