-/* $Id: class2.h,v 1.5 2002/09/07 15:12:09 chorns Exp $
+/* $Id$
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* PROGRAMMER: Eric Kohl (ekohl@rz-online.de)
*/
-#ifndef __STORAGE_INCLUDE_CLASS2_H
-#define __STORAGE_INCLUDE_CLASS2_H
+#ifndef __INCLUDE_DDK_CLASS2_H
+#define __INCLUDE_DDK_CLASS2_H
-#include <ddk/ntdddisk.h>
-#include <ddk/ntddscsi.h>
-#include <ddk/srb.h>
-#include <ddk/scsi.h>
+#include "ntddscsi.h"
+#include "srb.h"
-#define MAXIMUM_RETRIES 4
+#define MAXIMUM_RETRIES 15
+#define RETRY_WAIT 2000000 /* 200 ms in units of 100 ns */
struct _CLASS_INIT_DATA;
-typedef VOID STDCALL
-(*PCLASS_ERROR)(IN PDEVICE_OBJECT DeviceObject,
+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 BOOLEAN
+(STDCALL *PCLASS_DEVICE_CALLBACK)(IN PINQUIRYDATA);
-typedef NTSTATUS STDCALL
-(*PCLASS_READ_WRITE)(IN PDEVICE_OBJECT DeviceObject,
+typedef NTSTATUS
+(STDCALL *PCLASS_READ_WRITE)(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
-typedef BOOLEAN STDCALL
-(*PCLASS_FIND_DEVICES)(IN PDRIVER_OBJECT DriverObject,
+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,
+typedef NTSTATUS
+(STDCALL *PCLASS_DEVICE_CONTROL)(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
-typedef NTSTATUS STDCALL
-(*PCLASS_SHUTDOWN_FLUSH)(IN PDEVICE_OBJECT DeviceObject,
+typedef NTSTATUS
+(STDCALL *PCLASS_SHUTDOWN_FLUSH)(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
-typedef NTSTATUS STDCALL
-(*PCLASS_CREATE_CLOSE)(IN PDEVICE_OBJECT DeviceObject,
+typedef NTSTATUS
+(STDCALL *PCLASS_CREATE_CLOSE)(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
+typedef struct _COMPLETION_CONTEXT
+{
+ PDEVICE_OBJECT DeviceObject;
+ SCSI_REQUEST_BLOCK Srb;
+} COMPLETION_CONTEXT, *PCOMPLETION_CONTEXT;
+
+
/* FUNCTIONS ****************************************************************/
NTSTATUS STDCALL
ScsiClassDeviceControl(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
+PVOID STDCALL
+ScsiClassFindModePage(IN PCHAR ModeSenseBuffer,
+ IN ULONG Length,
+ IN UCHAR PageMode,
+ IN BOOLEAN Use6Byte);
+
ULONG STDCALL
ScsiClassFindUnclaimedDevices(IN PCLASS_INIT_DATA InitializationData,
OUT PSCSI_ADAPTER_BUS_INFO AdapterInformation);
IN PCLASS_INIT_DATA InitializationData);
VOID STDCALL
-ScsiClassInitializeSrbLookasideList(PDEVICE_EXTENSION DeviceExtension,
- ULONG NumberElements);
+ScsiClassInitializeSrbLookasideList(IN PDEVICE_EXTENSION DeviceExtension,
+ IN ULONG NumberElements);
NTSTATUS STDCALL
-ScsiClassInternalIoControl(PDEVICE_OBJECT DeviceObject,
- PIRP Irp);
+ScsiClassInternalIoControl(IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
BOOLEAN STDCALL
-ScsiClassInterpretSenseInfo(PDEVICE_OBJECT DeviceObject,
- PSCSI_REQUEST_BLOCK Srb,
- UCHAR MajorFunctionCode,
- ULONG IoDeviceCode,
- ULONG RetryCount,
- NTSTATUS *Status);
+ScsiClassInterpretSenseInfo(IN PDEVICE_OBJECT DeviceObject,
+ IN PSCSI_REQUEST_BLOCK Srb,
+ IN UCHAR MajorFunctionCode,
+ IN ULONG IoDeviceCode,
+ IN ULONG RetryCount,
+ OUT NTSTATUS *Status);
NTSTATUS STDCALL
-ScsiClassIoComplete(PDEVICE_OBJECT DeviceObject,
- PIRP Irp,
- PVOID Context);
+ScsiClassIoComplete(IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp,
+ IN PVOID Context);
NTSTATUS STDCALL
-ScsiClassIoCompleteAssociated(PDEVICE_OBJECT DeviceObject,
- PIRP Irp,
- PVOID Context);
+ScsiClassIoCompleteAssociated(IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp,
+ IN PVOID Context);
ULONG STDCALL
-ScsiClassModeSense(PDEVICE_OBJECT DeviceObject,
- CHAR ModeSenseBuffer,
- ULONG Length,
- UCHAR PageMode);
+ScsiClassModeSense(IN PDEVICE_OBJECT DeviceObject,
+ IN PCHAR ModeSenseBuffer,
+ IN ULONG Length,
+ IN UCHAR PageMode);
ULONG STDCALL
ScsiClassQueryTimeOutRegistryValue(IN PUNICODE_STRING RegistryPath);
NTSTATUS STDCALL
ScsiClassReadDriveCapacity(IN PDEVICE_OBJECT DeviceObject);
+VOID STDCALL
+ScsiClassReleaseQueue(IN PDEVICE_OBJECT DeviceObject);
+
NTSTATUS STDCALL
ScsiClassSendSrbAsynchronous(PDEVICE_OBJECT DeviceObject,
PSCSI_REQUEST_BLOCK Srb,
BOOLEAN WriteToDevice);
VOID STDCALL
-ScsiClassSplitRequest(PDEVICE_OBJECT DeviceObject,
- PIRP Irp,
- ULONG MaximumBytes);
+ScsiClassSplitRequest(IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp,
+ IN ULONG MaximumBytes);
-#endif /* __STORAGE_INCLUDE_CLASS2_H */
+#endif /* __INCLUDE_DDK_CLASS2_H */
/* EOF */