atapi, buslogic, cdrom, class2.
[reactos.git] / reactos / drivers / storage / include / class2.h
index db98f17..e6650c7 100644 (file)
@@ -1,4 +1,4 @@
-/* $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
@@ -7,48 +7,47 @@
  * 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);
 
 
@@ -110,6 +109,13 @@ typedef struct _DEVICE_EXTENSION
 } DEVICE_EXTENSION, *PDEVICE_EXTENSION;
 
 
+typedef struct _COMPLETION_CONTEXT
+{
+  PDEVICE_OBJECT DeviceObject;
+  SCSI_REQUEST_BLOCK Srb;
+} COMPLETION_CONTEXT, *PCOMPLETION_CONTEXT;
+
+
 /* FUNCTIONS ****************************************************************/
 
 NTSTATUS STDCALL
@@ -138,6 +144,12 @@ 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);
@@ -156,36 +168,36 @@ ScsiClassInitialize(IN PVOID Argument1,
                    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);
@@ -193,6 +205,9 @@ 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,
@@ -209,10 +224,10 @@ ScsiClassSendSrbSynchronous(PDEVICE_OBJECT DeviceObject,
                            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 */