mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 12:11:42 +00:00
Create a branch for header work.
svn path=/branches/header-work/; revision=45691
This commit is contained in:
parent
14fe274b1c
commit
9ea495ba33
19538 changed files with 0 additions and 1063950 deletions
267
drivers/storage/class/include/class2.h
Normal file
267
drivers/storage/class/include/class2.h
Normal file
|
@ -0,0 +1,267 @@
|
|||
/* $Id$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: services/storage/include/class2.h
|
||||
* PURPOSE: SCSI class driver definitions
|
||||
* PROGRAMMER: Eric Kohl
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ntddscsi.h"
|
||||
#include "srb.h"
|
||||
|
||||
#define MAXIMUM_RETRIES 15
|
||||
#define RETRY_WAIT 2000000 /* 200 ms in units of 100 ns */
|
||||
|
||||
//
|
||||
// Indicates that the device has write caching enabled.
|
||||
//
|
||||
|
||||
#define DEV_WRITE_CACHE 0x00000001
|
||||
|
||||
|
||||
//
|
||||
// Build SCSI 1 or SCSI 2 CDBs
|
||||
//
|
||||
|
||||
#define DEV_USE_SCSI1 0x00000002
|
||||
|
||||
//
|
||||
// Indicates whether is is safe to send StartUnit commands
|
||||
// to this device. It will only be off for some removeable devices.
|
||||
//
|
||||
|
||||
#define DEV_SAFE_START_UNIT 0x00000004
|
||||
|
||||
//
|
||||
// Indicates whether it is unsafe to send SCSIOP_MECHANISM_STATUS commands to
|
||||
// this device. Some devices don't like these 12 byte commands
|
||||
//
|
||||
|
||||
#define DEV_NO_12BYTE_CDB 0x00000008
|
||||
|
||||
|
||||
struct _CLASS_INIT_DATA;
|
||||
|
||||
typedef VOID
|
||||
(NTAPI *PCLASS_ERROR)(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PSCSI_REQUEST_BLOCK Srb,
|
||||
IN OUT NTSTATUS *Status,
|
||||
IN OUT BOOLEAN *Retry);
|
||||
|
||||
typedef BOOLEAN
|
||||
(NTAPI *PCLASS_DEVICE_CALLBACK)(IN PINQUIRYDATA);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCLASS_READ_WRITE)(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
typedef BOOLEAN
|
||||
(NTAPI *PCLASS_FIND_DEVICES)(IN PDRIVER_OBJECT DriverObject,
|
||||
IN PUNICODE_STRING RegistryPath,
|
||||
IN struct _CLASS_INIT_DATA *InitializationData,
|
||||
IN PDEVICE_OBJECT PortDeviceObject,
|
||||
IN ULONG PortNumber);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCLASS_DEVICE_CONTROL)(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCLASS_SHUTDOWN_FLUSH)(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCLASS_CREATE_CLOSE)(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
|
||||
typedef struct _CLASS_INIT_DATA
|
||||
{
|
||||
ULONG InitializationDataSize;
|
||||
ULONG DeviceExtensionSize;
|
||||
DEVICE_TYPE DeviceType;
|
||||
ULONG DeviceCharacteristics;
|
||||
PCLASS_ERROR ClassError;
|
||||
PCLASS_READ_WRITE ClassReadWriteVerification;
|
||||
PCLASS_DEVICE_CALLBACK ClassFindDeviceCallBack;
|
||||
PCLASS_FIND_DEVICES ClassFindDevices;
|
||||
PCLASS_DEVICE_CONTROL ClassDeviceControl;
|
||||
PCLASS_SHUTDOWN_FLUSH ClassShutdownFlush;
|
||||
PCLASS_CREATE_CLOSE ClassCreateClose;
|
||||
PDRIVER_STARTIO ClassStartIo;
|
||||
} CLASS_INIT_DATA, *PCLASS_INIT_DATA;
|
||||
|
||||
|
||||
typedef struct _DEVICE_EXTENSION
|
||||
{
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
PDEVICE_OBJECT PortDeviceObject;
|
||||
LARGE_INTEGER PartitionLength;
|
||||
LARGE_INTEGER StartingOffset;
|
||||
ULONG DMByteSkew;
|
||||
ULONG DMSkew;
|
||||
BOOLEAN DMActive;
|
||||
PCLASS_ERROR ClassError;
|
||||
PCLASS_READ_WRITE ClassReadWriteVerification;
|
||||
PCLASS_FIND_DEVICES ClassFindDevices;
|
||||
PCLASS_DEVICE_CONTROL ClassDeviceControl;
|
||||
PCLASS_SHUTDOWN_FLUSH ClassShutdownFlush;
|
||||
PCLASS_CREATE_CLOSE ClassCreateClose;
|
||||
PDRIVER_STARTIO ClassStartIo;
|
||||
PIO_SCSI_CAPABILITIES PortCapabilities;
|
||||
PDISK_GEOMETRY DiskGeometry;
|
||||
PDEVICE_OBJECT PhysicalDevice;
|
||||
PSENSE_DATA SenseData;
|
||||
ULONG TimeOutValue;
|
||||
ULONG DeviceNumber;
|
||||
ULONG SrbFlags;
|
||||
ULONG ErrorCount;
|
||||
KSPIN_LOCK SplitRequestSpinLock;
|
||||
NPAGED_LOOKASIDE_LIST SrbLookasideListHead;
|
||||
LONG LockCount;
|
||||
UCHAR PortNumber;
|
||||
UCHAR PathId;
|
||||
UCHAR TargetId;
|
||||
UCHAR Lun;
|
||||
UCHAR SectorShift;
|
||||
UCHAR ReservedByte;
|
||||
USHORT DeviceFlags;
|
||||
PKEVENT MediaChangeEvent;
|
||||
HANDLE MediaChangeEventHandle;
|
||||
BOOLEAN MediaChangeNoMedia;
|
||||
ULONG MediaChangeCount;
|
||||
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
|
||||
|
||||
|
||||
typedef struct _COMPLETION_CONTEXT
|
||||
{
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
SCSI_REQUEST_BLOCK Srb;
|
||||
} COMPLETION_CONTEXT, *PCOMPLETION_CONTEXT;
|
||||
|
||||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
IO_COMPLETION_ROUTINE ScsiClassAsynchronousCompletion;
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassAsynchronousCompletion(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN PVOID Context);
|
||||
|
||||
VOID NTAPI
|
||||
ScsiClassBuildRequest(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassClaimDevice(IN PDEVICE_OBJECT PortDeviceObject,
|
||||
IN PSCSI_INQUIRY_DATA LunInfo,
|
||||
IN BOOLEAN Release,
|
||||
OUT PDEVICE_OBJECT *NewPortDeviceObject OPTIONAL);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassCreateDeviceObject(IN PDRIVER_OBJECT DriverObject,
|
||||
IN PCCHAR ObjectNameBuffer,
|
||||
IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
|
||||
IN OUT PDEVICE_OBJECT *DeviceObject,
|
||||
IN PCLASS_INIT_DATA InitializationData);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
PVOID NTAPI
|
||||
ScsiClassFindModePage(IN PCHAR ModeSenseBuffer,
|
||||
IN ULONG Length,
|
||||
IN UCHAR PageMode,
|
||||
IN BOOLEAN Use6Byte);
|
||||
|
||||
ULONG NTAPI
|
||||
ScsiClassFindUnclaimedDevices(IN PCLASS_INIT_DATA InitializationData,
|
||||
OUT PSCSI_ADAPTER_BUS_INFO AdapterInformation);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassGetCapabilities(IN PDEVICE_OBJECT PortDeviceObject,
|
||||
OUT PIO_SCSI_CAPABILITIES *PortCapabilities);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassGetInquiryData(IN PDEVICE_OBJECT PortDeviceObject,
|
||||
OUT PSCSI_ADAPTER_BUS_INFO *ConfigInfo);
|
||||
|
||||
ULONG NTAPI
|
||||
ScsiClassInitialize(IN PVOID Argument1,
|
||||
IN PVOID Argument2,
|
||||
IN PCLASS_INIT_DATA InitializationData);
|
||||
|
||||
VOID NTAPI
|
||||
ScsiClassInitializeSrbLookasideList(IN PDEVICE_EXTENSION DeviceExtension,
|
||||
IN ULONG NumberElements);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassInternalIoControl(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
BOOLEAN NTAPI
|
||||
ScsiClassInterpretSenseInfo(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PSCSI_REQUEST_BLOCK Srb,
|
||||
IN UCHAR MajorFunctionCode,
|
||||
IN ULONG IoDeviceCode,
|
||||
IN ULONG RetryCount,
|
||||
OUT NTSTATUS *Status);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassIoComplete(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN PVOID Context);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassIoCompleteAssociated(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN PVOID Context);
|
||||
|
||||
ULONG NTAPI
|
||||
ScsiClassModeSense(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PCHAR ModeSenseBuffer,
|
||||
IN ULONG Length,
|
||||
IN UCHAR PageMode);
|
||||
|
||||
ULONG NTAPI
|
||||
ScsiClassQueryTimeOutRegistryValue(IN PUNICODE_STRING RegistryPath);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassReadDriveCapacity(IN PDEVICE_OBJECT DeviceObject);
|
||||
|
||||
VOID NTAPI
|
||||
ScsiClassReleaseQueue(IN PDEVICE_OBJECT DeviceObject);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassSendSrbAsynchronous(PDEVICE_OBJECT DeviceObject,
|
||||
PSCSI_REQUEST_BLOCK Srb,
|
||||
PIRP Irp,
|
||||
PVOID BufferAddress,
|
||||
ULONG BufferLength,
|
||||
BOOLEAN WriteToDevice);
|
||||
|
||||
NTSTATUS NTAPI
|
||||
ScsiClassSendSrbSynchronous(PDEVICE_OBJECT DeviceObject,
|
||||
PSCSI_REQUEST_BLOCK Srb,
|
||||
PVOID BufferAddress,
|
||||
ULONG BufferLength,
|
||||
BOOLEAN WriteToDevice);
|
||||
|
||||
VOID NTAPI
|
||||
ScsiClassSplitRequest(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN ULONG MaximumBytes);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
ScsiClassCheckVerifyComplete(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN PVOID Context
|
||||
);
|
||||
|
||||
/* EOF */
|
Loading…
Add table
Add a link
Reference in a new issue