Added support for IRP_MJ_SCSI

svn path=/trunk/; revision=2559
This commit is contained in:
Eric Kohl 2002-01-26 17:59:25 +00:00
parent 35fb40b8b7
commit 26c5adcb95

View file

@ -1,4 +1,4 @@
/* $Id: iotypes.h,v 1.32 2002/01/21 22:28:45 hbirr Exp $ /* $Id: iotypes.h,v 1.33 2002/01/26 17:59:25 ekohl Exp $
* *
*/ */
@ -30,6 +30,7 @@ struct _FILE_OBJECT;
struct _DEVICE_OBJECT; struct _DEVICE_OBJECT;
struct _IRP; struct _IRP;
struct _IO_STATUS_BLOCK; struct _IO_STATUS_BLOCK;
struct _SCSI_REQUEST_BLOCK;
/* SIMPLE TYPES *************************************************************/ /* SIMPLE TYPES *************************************************************/
@ -157,7 +158,7 @@ typedef struct _IO_RESOURCE_DESCRIPTOR
ULONG MinimumChannel; ULONG MinimumChannel;
ULONG MaximumChannel; ULONG MaximumChannel;
} Dma; } Dma;
} u; } u;
} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR; } IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
// IO_RESOURCE_DESCRIPTOR Options // IO_RESOURCE_DESCRIPTOR Options
@ -258,166 +259,183 @@ typedef struct
*/ */
typedef struct __attribute__((packed)) _IO_STACK_LOCATION typedef struct __attribute__((packed)) _IO_STACK_LOCATION
{ {
UCHAR MajorFunction; UCHAR MajorFunction;
UCHAR MinorFunction; UCHAR MinorFunction;
UCHAR Flags; UCHAR Flags;
UCHAR Control; UCHAR Control;
union union
{ {
struct struct
{ {
PIO_SECURITY_CONTEXT SecurityContext; PIO_SECURITY_CONTEXT SecurityContext;
ULONG Options; ULONG Options;
USHORT FileAttributes; USHORT FileAttributes;
USHORT ShareAccess; USHORT ShareAccess;
ULONG EaLength; ULONG EaLength;
} Create; } Create;
struct struct
{ {
ULONG Length; ULONG Length;
ULONG Key; ULONG Key;
LARGE_INTEGER ByteOffset; LARGE_INTEGER ByteOffset;
} Read; } Read;
struct struct
{ {
ULONG Length; ULONG Length;
ULONG Key; ULONG Key;
LARGE_INTEGER ByteOffset; LARGE_INTEGER ByteOffset;
} Write; } Write;
struct struct
{ {
ULONG OutputBufferLength; ULONG OutputBufferLength;
ULONG InputBufferLength; ULONG InputBufferLength;
ULONG IoControlCode; ULONG IoControlCode;
PVOID Type3InputBuffer; PVOID Type3InputBuffer;
} DeviceIoControl; } DeviceIoControl;
struct struct
{ {
ULONG OutputBufferLength; ULONG OutputBufferLength;
ULONG InputBufferLength; ULONG InputBufferLength;
ULONG IoControlCode; ULONG IoControlCode;
PVOID Type3InputBuffer; PVOID Type3InputBuffer;
} FileSystemControl; } FileSystemControl;
struct struct
{ {
struct _VPB* Vpb; struct _VPB* Vpb;
struct _DEVICE_OBJECT* DeviceObject; struct _DEVICE_OBJECT* DeviceObject;
} Mount; } Mount;
struct struct
{ {
ULONG Length; ULONG Length;
FILE_INFORMATION_CLASS FileInformationClass; FILE_INFORMATION_CLASS FileInformationClass;
} QueryFile; } QueryFile;
struct struct
{ {
ULONG Length; ULONG Length;
FS_INFORMATION_CLASS FsInformationClass; FS_INFORMATION_CLASS FsInformationClass;
} QueryVolume; } QueryVolume;
struct struct
{ {
ULONG Length; ULONG Length;
FS_INFORMATION_CLASS FsInformationClass; FS_INFORMATION_CLASS FsInformationClass;
} SetVolume; } SetVolume;
struct struct
{ {
ULONG Length; ULONG Length;
FILE_INFORMATION_CLASS FileInformationClass; FILE_INFORMATION_CLASS FileInformationClass;
struct _FILE_OBJECT* FileObject; struct _FILE_OBJECT* FileObject;
union union
{ {
struct struct
{ {
BOOLEAN ReplaceIfExists; BOOLEAN ReplaceIfExists;
BOOLEAN AdvanceOnly; BOOLEAN AdvanceOnly;
} d; } d;
ULONG ClusterCount; ULONG ClusterCount;
HANDLE DeleteHandle; HANDLE DeleteHandle;
} u; } u;
} SetFile; } SetFile;
struct struct
{ {
ULONG Length; ULONG Length;
PUNICODE_STRING FileName; PUNICODE_STRING FileName;
FILE_INFORMATION_CLASS FileInformationClass; FILE_INFORMATION_CLASS FileInformationClass;
ULONG FileIndex; ULONG FileIndex;
} QueryDirectory; } QueryDirectory;
// Parameters for IRP_MN_QUERY_DEVICE_RELATIONS // Parameters for IRP_MN_QUERY_DEVICE_RELATIONS
struct { struct
DEVICE_RELATION_TYPE Type; {
} QueryDeviceRelations; DEVICE_RELATION_TYPE Type;
} QueryDeviceRelations;
// Parameters for IRP_MN_QUERY_INTERFACE // Parameters for IRP_MN_QUERY_INTERFACE
struct { struct
CONST GUID *InterfaceType; {
USHORT Size; CONST GUID *InterfaceType;
USHORT Version; USHORT Size;
PINTERFACE Interface; USHORT Version;
PVOID InterfaceSpecificData; PINTERFACE Interface;
} QueryInterface; PVOID InterfaceSpecificData;
} QueryInterface;
// Parameters for IRP_MN_QUERY_CAPABILITIES // Parameters for IRP_MN_QUERY_CAPABILITIES
struct { struct
PDEVICE_CAPABILITIES Capabilities; {
} DeviceCapabilities; PDEVICE_CAPABILITIES Capabilities;
} DeviceCapabilities;
// Parameters for IRP_MN_QUERY_ID // Parameters for IRP_MN_QUERY_ID
struct { struct
BUS_QUERY_ID_TYPE IdType; {
} QueryId; BUS_QUERY_ID_TYPE IdType;
} QueryId;
// Parameters for IRP_MN_QUERY_DEVICE_TEXT // Parameters for IRP_MN_QUERY_DEVICE_TEXT
struct { struct
DEVICE_TEXT_TYPE DeviceTextType; {
LCID LocaleId; DEVICE_TEXT_TYPE DeviceTextType;
} QueryDeviceText; LCID LocaleId;
} QueryDeviceText;
// Parameters for IRP_MN_DEVICE_USAGE_NOTIFICATION // Parameters for IRP_MN_DEVICE_USAGE_NOTIFICATION
struct { struct
BOOLEAN InPath; {
BOOLEAN Reserved[3]; BOOLEAN InPath;
DEVICE_USAGE_NOTIFICATION_TYPE Type; BOOLEAN Reserved[3];
} UsageNotification; DEVICE_USAGE_NOTIFICATION_TYPE Type;
} UsageNotification;
// Parameters for IRP_MN_WAIT_WAKE // Parameters for IRP_MN_WAIT_WAKE
struct { struct
SYSTEM_POWER_STATE PowerState; {
} WaitWake; SYSTEM_POWER_STATE PowerState;
} WaitWake;
// Parameter for IRP_MN_POWER_SEQUENCE // Parameter for IRP_MN_POWER_SEQUENCE
struct { struct
PPOWER_SEQUENCE PowerSequence; {
} PowerSequence; PPOWER_SEQUENCE PowerSequence;
} PowerSequence;
// Parameters for IRP_MN_SET_POWER and IRP_MN_QUERY_POWER // Parameters for IRP_MN_SET_POWER and IRP_MN_QUERY_POWER
struct { struct
ULONG SystemContext; {
POWER_STATE_TYPE Type; ULONG SystemContext;
POWER_STATE State; POWER_STATE_TYPE Type;
POWER_ACTION ShutdownType; POWER_STATE State;
} Power; POWER_ACTION ShutdownType;
} Power;
// Parameters for IRP_MN_START_DEVICE // Parameters for IRP_MN_START_DEVICE
struct { struct
PCM_RESOURCE_LIST AllocatedResources; {
PCM_RESOURCE_LIST AllocatedResourcesTranslated; PCM_RESOURCE_LIST AllocatedResources;
} StartDevice; PCM_RESOURCE_LIST AllocatedResourcesTranslated;
} StartDevice;
} Parameters; // Parameters for IRP_MN_SCSI_CLASS
struct
struct _DEVICE_OBJECT* DeviceObject; {
struct _FILE_OBJECT* FileObject; struct _SCSI_REQUEST_BLOCK *Srb;
} Scsi;
PIO_COMPLETION_ROUTINE CompletionRoutine;
PVOID CompletionContext; } Parameters;
struct _DEVICE_OBJECT* DeviceObject;
struct _FILE_OBJECT* FileObject;
PIO_COMPLETION_ROUTINE CompletionRoutine;
PVOID CompletionContext;
} __attribute__((packed)) IO_STACK_LOCATION, *PIO_STACK_LOCATION; } __attribute__((packed)) IO_STACK_LOCATION, *PIO_STACK_LOCATION;
typedef struct _IO_STATUS_BLOCK typedef struct _IO_STATUS_BLOCK
{ {
NTSTATUS Status; NTSTATUS Status;
ULONG Information; ULONG Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;