--- /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 */