4 * SCSI WMILIB interface.
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
27 #pragma GCC system_header
40 typedef struct _SCSIWMI_REQUEST_CONTEXT
{
47 } SCSIWMI_REQUEST_CONTEXT
, *PSCSIWMI_REQUEST_CONTEXT
;
50 # warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
53 #if ! (defined _GUID_DEFINED || defined GUID_DEFINED)
55 typedef struct _GUID
{
59 unsigned char Data4
[ 8 ];
63 typedef struct _SCSIWMIGUIDREGINFO
{
67 } SCSIWMIGUIDREGINFO
, *PSCSIWMIGUIDREGINFO
;
70 (*PSCSIWMI_QUERY_REGINFO
)(
71 IN PVOID DeviceContext
,
72 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
73 OUT PWCHAR
*MofResourceName
);
75 typedef BOOLEAN DDKAPI
76 (*PSCSIWMI_QUERY_DATABLOCK
)(
78 IN PSCSIWMI_REQUEST_CONTEXT DispatchContext
,
80 IN ULONG InstanceIndex
,
81 IN ULONG InstanceCount
,
82 IN OUT PULONG InstanceLengthArray
,
86 typedef BOOLEAN DDKAPI
87 (*PSCSIWMI_SET_DATABLOCK
)(
88 IN PVOID DeviceContext
,
89 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
91 IN ULONG InstanceIndex
,
95 typedef BOOLEAN DDKAPI
96 (*PSCSIWMI_SET_DATAITEM
)(
97 IN PVOID DeviceContext
,
98 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
100 IN ULONG InstanceIndex
,
105 typedef BOOLEAN DDKAPI
106 (*PSCSIWMI_EXECUTE_METHOD
)(
107 IN PVOID DeviceContext
,
108 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
110 IN ULONG InstanceIndex
,
112 IN ULONG InBufferSize
,
113 IN ULONG OutBufferSize
,
114 IN OUT PUCHAR Buffer
);
116 typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL
{
118 ScsiWmiDataBlockControl
119 } SCSIWMI_ENABLE_DISABLE_CONTROL
;
121 typedef BOOLEAN DDKAPI
122 (*PSCSIWMI_FUNCTION_CONTROL
)(
123 IN PVOID DeviceContext
,
124 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
126 IN SCSIWMI_ENABLE_DISABLE_CONTROL Function
,
129 typedef struct _SCSIWMILIB_CONTEXT
{
131 PSCSIWMIGUIDREGINFO GuidList
;
132 PSCSIWMI_QUERY_REGINFO QueryWmiRegInfo
;
133 PSCSIWMI_QUERY_DATABLOCK QueryWmiDataBlock
;
134 PSCSIWMI_SET_DATABLOCK SetWmiDataBlock
;
135 PSCSIWMI_SET_DATAITEM SetWmiDataItem
;
136 PSCSIWMI_EXECUTE_METHOD ExecuteWmiMethod
;
137 PSCSIWMI_FUNCTION_CONTROL WmiFunctionControl
;
138 } SCSI_WMILIB_CONTEXT
, *PSCSI_WMILIB_CONTEXT
;
143 ScsiPortWmiDispatchFunction(
144 IN PSCSI_WMILIB_CONTEXT WmiLibInfo
,
145 IN UCHAR MinorFunction
,
146 IN PVOID DeviceContext
,
147 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
152 #define ScsiPortWmiFireAdapterEvent( \
158 ScsiPortWmiFireLogicalUnitEvent( \
170 * ScsiPortWmiGetReturnSize(
171 * PSCSIWMI_REQUEST_CONTEXT RequestContext);
173 #define ScsiPortWmiGetReturnSize(RequestContext) \
174 ((RequestContext)->ReturnSize)
177 * ScsiPortWmiGetReturnStatus(
178 * PSCSIWMI_REQUEST_CONTEXT RequestContext);
180 #define ScsiPortWmiGetReturnStatus(RequestContext) \
181 ((RequestContext)->ReturnStatus)
186 ScsiPortWmiPostProcess(
187 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
189 IN ULONG BufferUsed
);
194 ScsiPortWmiFireLogicalUnitEvent(
195 IN PVOID HwDeviceExtension
,
200 IN ULONG InstanceIndex
,
201 IN ULONG EventDataSize
,
210 #endif /* __SCSIWMI_H */