123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- /*
- * 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
- #include "srb.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- #pragma pack(push,4)
- 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 {
- ULONG Data1;
- unsigned short Data2;
- unsigned short Data3;
- unsigned char Data4[ 8 ];
- } GUID;
- #endif
- typedef struct _SCSIWMIGUIDREGINFO {
- LPCGUID Guid;
- ULONG InstanceCount;
- ULONG Flags;
- } SCSIWMIGUIDREGINFO, *PSCSIWMIGUIDREGINFO;
- typedef UCHAR
- (NTAPI *PSCSIWMI_QUERY_REGINFO)(
- IN PVOID DeviceContext,
- IN PSCSIWMI_REQUEST_CONTEXT RequestContext,
- OUT PWCHAR *MofResourceName);
- typedef BOOLEAN
- (NTAPI *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
- (NTAPI *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
- (NTAPI *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
- (NTAPI *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
- (NTAPI *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
- NTAPI
- 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
- NTAPI
- ScsiPortWmiPostProcess(
- IN PSCSIWMI_REQUEST_CONTEXT RequestContext,
- IN UCHAR SrbStatus,
- IN ULONG BufferUsed);
- SCSIPORTAPI
- VOID
- NTAPI
- 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 */
|