mingw-5.1.4/win32/include/ddk/scsiwmi.h
changeset 0 76b1f169d9fe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mingw-5.1.4/win32/include/ddk/scsiwmi.h	Fri Apr 03 17:16:45 2009 +0100
@@ -0,0 +1,215 @@
+/*
+ * scsiwmi.h
+ *
+ * SCSI WMILIB interface.
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __SCSIWMI_H
+#define __SCSIWMI_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#pragma pack(push,4)
+
+#include "ntddk.h"
+#include "srb.h"
+
+
+typedef struct _SCSIWMI_REQUEST_CONTEXT {
+  PVOID  UserContext;
+  ULONG  BufferSize;
+  PUCHAR  Buffer;
+  UCHAR  MinorFunction;
+  UCHAR  ReturnStatus;
+  ULONG  ReturnSize;
+} SCSIWMI_REQUEST_CONTEXT, *PSCSIWMI_REQUEST_CONTEXT;
+
+#ifdef _GUID_DEFINED
+# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
+#endif
+
+#if ! (defined _GUID_DEFINED || defined GUID_DEFINED)
+#define GUID_DEFINED
+typedef struct _GUID {
+    unsigned long  Data1;
+    unsigned short Data2;
+    unsigned short Data3;
+    unsigned char  Data4[ 8 ];
+} GUID;
+#endif
+
+#ifndef _LPCGUID_DEFINED
+#define _LPCGUID_DEFINED
+typedef const GUID *LPCGUID;
+#endif
+
+typedef struct _SCSIWMIGUIDREGINFO {
+  LPCGUID  Guid;
+  ULONG  InstanceCount;
+  ULONG  Flags;
+} SCSIWMIGUIDREGINFO, *PSCSIWMIGUIDREGINFO;
+
+typedef UCHAR DDKAPI
+(*PSCSIWMI_QUERY_REGINFO)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*OUT*/ PWCHAR  *MofResourceName);
+
+typedef BOOLEAN DDKAPI
+(*PSCSIWMI_QUERY_DATABLOCK)(
+  /*IN*/ PVOID  Context,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  DispatchContext,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  InstanceCount,
+  /*IN OUT*/ PULONG  InstanceLengthArray,
+  /*IN*/ ULONG  BufferAvail,
+  /*OUT*/ PUCHAR  Buffer);
+
+typedef BOOLEAN DDKAPI
+(*PSCSIWMI_SET_DATABLOCK)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  BufferSize,
+  /*IN*/ PUCHAR  Buffer);
+
+typedef BOOLEAN DDKAPI
+(*PSCSIWMI_SET_DATAITEM)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  DataItemId,
+  /*IN*/ ULONG  BufferSize,
+  /*IN*/ PUCHAR  Buffer);
+
+typedef BOOLEAN DDKAPI
+(*PSCSIWMI_EXECUTE_METHOD)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  MethodId,
+  /*IN*/ ULONG  InBufferSize,
+  /*IN*/ ULONG  OutBufferSize,
+  /*IN OUT*/ PUCHAR  Buffer);
+
+typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL {
+	ScsiWmiEventControl,
+	ScsiWmiDataBlockControl
+} SCSIWMI_ENABLE_DISABLE_CONTROL;
+
+typedef BOOLEAN DDKAPI
+(*PSCSIWMI_FUNCTION_CONTROL)(
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ ULONG  GuidIndex,
+  /*IN*/ SCSIWMI_ENABLE_DISABLE_CONTROL  Function,
+  /*IN*/ BOOLEAN  Enable);
+
+typedef struct _SCSIWMILIB_CONTEXT {
+  ULONG  GuidCount;
+  PSCSIWMIGUIDREGINFO  GuidList;
+  PSCSIWMI_QUERY_REGINFO  QueryWmiRegInfo;
+  PSCSIWMI_QUERY_DATABLOCK  QueryWmiDataBlock;
+  PSCSIWMI_SET_DATABLOCK  SetWmiDataBlock;
+  PSCSIWMI_SET_DATAITEM  SetWmiDataItem;
+  PSCSIWMI_EXECUTE_METHOD  ExecuteWmiMethod;
+  PSCSIWMI_FUNCTION_CONTROL  WmiFunctionControl;
+} SCSI_WMILIB_CONTEXT, *PSCSI_WMILIB_CONTEXT;
+
+SCSIPORTAPI
+BOOLEAN
+DDKAPI
+ScsiPortWmiDispatchFunction(
+  /*IN*/ PSCSI_WMILIB_CONTEXT  WmiLibInfo,
+  /*IN*/ UCHAR  MinorFunction,
+  /*IN*/ PVOID  DeviceContext,
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ PVOID  DataPath,
+  /*IN*/ ULONG  BufferSize,
+  /*IN*/ PVOID  Buffer);
+
+#define ScsiPortWmiFireAdapterEvent(  \
+  HwDeviceExtension,                  \
+  Guid,                               \
+  InstanceIndex,                      \
+  EventDataSize,                      \
+  EventData)                          \
+    ScsiPortWmiFireLogicalUnitEvent(  \
+	  HwDeviceExtension,                \
+	  0xff,                             \
+	  0,                                \
+	  0,                                \
+	  Guid,                             \
+	  InstanceIndex,                    \
+	  EventDataSize,                    \
+	  EventData)
+
+/*
+ * ULONG
+ * ScsiPortWmiGetReturnSize(
+ *   PSCSIWMI_REQUEST_CONTEXT  RequestContext);
+ */
+#define ScsiPortWmiGetReturnSize(RequestContext) \
+  ((RequestContext)->ReturnSize)
+
+/* UCHAR 
+ * ScsiPortWmiGetReturnStatus(
+ *   PSCSIWMI_REQUEST_CONTEXT  RequestContext);
+ */ 
+#define ScsiPortWmiGetReturnStatus(RequestContext) \
+  ((RequestContext)->ReturnStatus)
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWmiPostProcess(
+  /*IN*/ PSCSIWMI_REQUEST_CONTEXT  RequestContext,
+  /*IN*/ UCHAR  SrbStatus,
+  /*IN*/ ULONG  BufferUsed);
+
+SCSIPORTAPI
+VOID
+DDKAPI
+ScsiPortWmiFireLogicalUnitEvent(
+  /*IN*/ PVOID  HwDeviceExtension,
+  /*IN*/ UCHAR  PathId,
+  /*IN*/ UCHAR  TargetId,
+  /*IN*/ UCHAR  Lun,
+  /*IN*/ LPGUID  Guid,
+  /*IN*/ ULONG  InstanceIndex,
+  /*IN*/ ULONG  EventDataSize,
+  /*IN*/ PVOID  EventData);
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SCSIWMI_H */