home *** CD-ROM | disk | FTP | other *** search
- /*
- * 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 */
-