Files
reactos/reactos/drivers/storage/include/class2.h
Eric Kohl 3df0bbbfce Added scsi class driver skeleton.
svn path=/trunk/; revision=2087
2001-07-23 06:13:48 +00:00

122 lines
2.7 KiB
C

/* $Id: class2.h,v 1.1 2001/07/23 06:12:34 ekohl Exp $
*
* 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 (ekohl@rz-online.de)
*/
#ifndef __STORAGE_INCLUDE_CLASS2_H
#define __STORAGE_INCLUDE_CLASS2_H
#include "ntddscsi.h"
#include "srb.h"
struct _CLASS_INIT_DATA;
typedef VOID STDCALL
(*PCLASS_ERROR)(IN PDEVICE_OBJECT DeviceObject,
IN PSCSI_REQUEST_BLOCK Srb,
IN OUT NTSTATUS *Status,
IN OUT BOOLEAN *Retry);
typedef BOOLEAN STDCALL
(*PCLASS_DEVICE_CALLBACK)(IN PINQUIRYDATA);
typedef NTSTATUS STDCALL
(*PCLASS_READ_WRITE)(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
typedef BOOLEAN STDCALL
(*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 STDCALL
(*PCLASS_DEVICE_CONTROL)(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
typedef NTSTATUS STDCALL
(*PCLASS_SHUTDOWN_FLUSH)(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
typedef NTSTATUS STDCALL
(*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
{
ULONG Dummy;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
/* FUNCTIONS ****************************************************************/
NTSTATUS
STDCALL
ScsiClassAsynchronousCompletion (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
PVOID Context
);
VOID
STDCALL
ScsiClassBuildRequest (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
STDCALL
ScsiClassClaimDevice (
IN PDEVICE_OBJECT PortDeviceObject,
IN PSCSI_INQUIRY_DATA LunInfo,
IN BOOLEAN Release,
OUT PDEVICE_OBJECT *NewPortDeviceObject OPTIONAL
);
NTSTATUS
STDCALL
ScsiClassCreateDeviceObject (
IN PDRIVER_OBJECT DriverObject,
IN PCCHAR ObjectNameBuffer,
IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
IN OUT PDEVICE_OBJECT *DeviceObject,
IN PCLASS_INIT_DATA InitializationData
);
NTSTATUS
STDCALL
ScsiClassDeviceControl (
PDEVICE_OBJECT DeviceObject,
PIRP Irp
);
#endif /* __STORAGE_INCLUDE_CLASS2_H */
/* EOF */