This commit was manufactured by cvs2svn to create branch 'captive'.
[reactos.git] / drivers / storage / scsiport / scsiport_int.h
1 /*
2  * SCSI_PORT_TIMER_STATES
3  *
4  * DESCRIPTION
5  *      An enumeration containing the states in the timer DFA
6  */
7 typedef enum _SCSI_PORT_TIMER_STATES
8 {
9   IDETimerIdle,
10   IDETimerCmdWait,
11   IDETimerResetWaitForBusyNegate,
12   IDETimerResetWaitForDrdyAssert
13 } SCSI_PORT_TIMER_STATES;
14
15
16 typedef struct _SCSI_PORT_DEVICE_BASE
17 {
18   LIST_ENTRY List;
19
20   PVOID MappedAddress;
21   ULONG NumberOfBytes;
22   SCSI_PHYSICAL_ADDRESS IoAddress;
23   ULONG SystemIoBusNumber;
24 } SCSI_PORT_DEVICE_BASE, *PSCSI_PORT_DEVICE_BASE;
25
26
27 typedef struct _SCSI_PORT_LUN_EXTENSION
28 {
29   LIST_ENTRY List;
30
31   UCHAR PathId;
32   UCHAR TargetId;
33   UCHAR Lun;
34
35   BOOLEAN DeviceClaimed;
36   PDEVICE_OBJECT DeviceObject;
37
38   INQUIRYDATA InquiryData;
39
40   KDEVICE_QUEUE DeviceQueue;
41
42   /* More data? */
43
44   UCHAR MiniportLunExtension[1]; /* must be the last entry */
45 } SCSI_PORT_LUN_EXTENSION, *PSCSI_PORT_LUN_EXTENSION;
46
47
48 /*
49  * SCSI_PORT_DEVICE_EXTENSION
50  *
51  * DESCRIPTION
52  *      First part of the port objects device extension. The second
53  *      part is the miniport-specific device extension.
54  */
55
56 typedef struct _SCSI_PORT_DEVICE_EXTENSION
57 {
58   ULONG Length;
59   ULONG MiniPortExtensionSize;
60   PORT_CONFIGURATION_INFORMATION PortConfig;
61   ULONG PortNumber;
62
63   KSPIN_LOCK IrpLock;
64   KSPIN_LOCK SpinLock;
65   PKINTERRUPT Interrupt;
66   PIRP                   CurrentIrp;
67   ULONG IrpFlags;
68
69   SCSI_PORT_TIMER_STATES TimerState;
70   LONG                   TimerCount;
71
72   BOOLEAN Initializing;
73
74   LIST_ENTRY DeviceBaseListHead;
75
76   ULONG LunExtensionSize;
77   LIST_ENTRY LunExtensionListHead;
78
79   PIO_SCSI_CAPABILITIES PortCapabilities;
80
81   PDEVICE_OBJECT DeviceObject;
82   PCONTROLLER_OBJECT ControllerObject;
83
84   PHW_STARTIO HwStartIo;
85   PHW_INTERRUPT HwInterrupt;
86
87   PSCSI_REQUEST_BLOCK OriginalSrb;
88   SCSI_REQUEST_BLOCK InternalSrb;
89   SENSE_DATA InternalSenseData;
90
91   /* DMA related stuff */
92   PADAPTER_OBJECT AdapterObject;
93   ULONG MapRegisterCount;
94
95   PHYSICAL_ADDRESS PhysicalAddress;
96   PVOID VirtualAddress;
97   ULONG CommonBufferLength;
98
99   UCHAR MiniPortDeviceExtension[1]; /* must be the last entry */
100 } SCSI_PORT_DEVICE_EXTENSION, *PSCSI_PORT_DEVICE_EXTENSION;