- Implemented LUN-Extensions.
[reactos.git] / reactos / 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 /* More data? */
41
42 UCHAR MiniportLunExtension[1]; /* must be the last entry */
43 } SCSI_PORT_LUN_EXTENSION, *PSCSI_PORT_LUN_EXTENSION;
44
45
46 /*
47 * SCSI_PORT_DEVICE_EXTENSION
48 *
49 * DESCRIPTION
50 * First part of the port objects device extension. The second
51 * part is the miniport-specific device extension.
52 */
53
54 typedef struct _SCSI_PORT_DEVICE_EXTENSION
55 {
56 ULONG Length;
57 ULONG MiniPortExtensionSize;
58 PORT_CONFIGURATION_INFORMATION PortConfig;
59 ULONG PortNumber;
60
61 KSPIN_LOCK IrpLock;
62 KSPIN_LOCK SpinLock;
63 PKINTERRUPT Interrupt;
64 PIRP CurrentIrp;
65 ULONG IrpFlags;
66
67 SCSI_PORT_TIMER_STATES TimerState;
68 LONG TimerCount;
69
70 BOOLEAN Initializing;
71
72 LIST_ENTRY DeviceBaseListHead;
73
74 ULONG LunExtensionSize;
75 LIST_ENTRY LunExtensionListHead;
76
77 PIO_SCSI_CAPABILITIES PortCapabilities;
78
79 PDEVICE_OBJECT DeviceObject;
80 PCONTROLLER_OBJECT ControllerObject;
81
82 PHW_STARTIO HwStartIo;
83 PHW_INTERRUPT HwInterrupt;
84
85 PSCSI_REQUEST_BLOCK OriginalSrb;
86 SCSI_REQUEST_BLOCK InternalSrb;
87 SENSE_DATA InternalSenseData;
88
89 UCHAR MiniPortDeviceExtension[1]; /* must be the last entry */
90 } SCSI_PORT_DEVICE_EXTENSION, *PSCSI_PORT_DEVICE_EXTENSION;