--- /dev/null
+/*
+ * SCSI_PORT_TIMER_STATES
+ *
+ * DESCRIPTION
+ * An enumeration containing the states in the timer DFA
+ */
+typedef enum _SCSI_PORT_TIMER_STATES
+{
+ IDETimerIdle,
+ IDETimerCmdWait,
+ IDETimerResetWaitForBusyNegate,
+ IDETimerResetWaitForDrdyAssert
+} SCSI_PORT_TIMER_STATES;
+
+
+typedef struct _SCSI_PORT_DEVICE_BASE
+{
+ LIST_ENTRY List;
+
+ PVOID MappedAddress;
+ ULONG NumberOfBytes;
+ SCSI_PHYSICAL_ADDRESS IoAddress;
+ ULONG SystemIoBusNumber;
+} SCSI_PORT_DEVICE_BASE, *PSCSI_PORT_DEVICE_BASE;
+
+
+typedef struct _SCSI_PORT_LUN_EXTENSION
+{
+ LIST_ENTRY List;
+
+ UCHAR PathId;
+ UCHAR TargetId;
+ UCHAR Lun;
+
+ BOOLEAN DeviceClaimed;
+ PDEVICE_OBJECT DeviceObject;
+
+ INQUIRYDATA InquiryData;
+
+ KDEVICE_QUEUE DeviceQueue;
+
+ /* More data? */
+
+ UCHAR MiniportLunExtension[1]; /* must be the last entry */
+} SCSI_PORT_LUN_EXTENSION, *PSCSI_PORT_LUN_EXTENSION;
+
+
+/*
+ * SCSI_PORT_DEVICE_EXTENSION
+ *
+ * DESCRIPTION
+ * First part of the port objects device extension. The second
+ * part is the miniport-specific device extension.
+ */
+
+typedef struct _SCSI_PORT_DEVICE_EXTENSION
+{
+ ULONG Length;
+ ULONG MiniPortExtensionSize;
+ PORT_CONFIGURATION_INFORMATION PortConfig;
+ ULONG PortNumber;
+
+ KSPIN_LOCK IrpLock;
+ KSPIN_LOCK SpinLock;
+ PKINTERRUPT Interrupt;
+ PIRP CurrentIrp;
+ ULONG IrpFlags;
+
+ SCSI_PORT_TIMER_STATES TimerState;
+ LONG TimerCount;
+
+ BOOLEAN Initializing;
+
+ LIST_ENTRY DeviceBaseListHead;
+
+ ULONG LunExtensionSize;
+ LIST_ENTRY LunExtensionListHead;
+
+ PIO_SCSI_CAPABILITIES PortCapabilities;
+
+ PDEVICE_OBJECT DeviceObject;
+ PCONTROLLER_OBJECT ControllerObject;
+
+ PHW_STARTIO HwStartIo;
+ PHW_INTERRUPT HwInterrupt;
+
+ PSCSI_REQUEST_BLOCK OriginalSrb;
+ SCSI_REQUEST_BLOCK InternalSrb;
+ SENSE_DATA InternalSenseData;
+
+ /* DMA related stuff */
+ PADAPTER_OBJECT AdapterObject;
+ ULONG MapRegisterCount;
+
+ PHYSICAL_ADDRESS PhysicalAddress;
+ PVOID VirtualAddress;
+ ULONG CommonBufferLength;
+
+ UCHAR MiniPortDeviceExtension[1]; /* must be the last entry */
+} SCSI_PORT_DEVICE_EXTENSION, *PSCSI_PORT_DEVICE_EXTENSION;