Added scsi class driver skeleton.
[reactos.git] / reactos / drivers / storage / include / class2.h
diff --git a/reactos/drivers/storage/include/class2.h b/reactos/drivers/storage/include/class2.h
new file mode 100644 (file)
index 0000000..8059991
--- /dev/null
@@ -0,0 +1,122 @@
+/* $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 */
\ No newline at end of file