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
38 typedef struct _SCSIWMI_REQUEST_CONTEXT
{
45 } SCSIWMI_REQUEST_CONTEXT
, *PSCSIWMI_REQUEST_CONTEXT
;
48 # warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
51 #if ! (defined _GUID_DEFINED || defined GUID_DEFINED)
53 typedef struct _GUID
{
57 unsigned char Data4
[ 8 ];
61 typedef struct _SCSIWMIGUIDREGINFO
{
65 } SCSIWMIGUIDREGINFO
, *PSCSIWMIGUIDREGINFO
;
68 (*PSCSIWMI_QUERY_REGINFO
)(
69 IN PVOID DeviceContext
,
70 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
71 OUT PWCHAR
*MofResourceName
);
73 typedef BOOLEAN DDKAPI
74 (*PSCSIWMI_QUERY_DATABLOCK
)(
76 IN PSCSIWMI_REQUEST_CONTEXT DispatchContext
,
78 IN ULONG InstanceIndex
,
79 IN ULONG InstanceCount
,
80 IN OUT PULONG InstanceLengthArray
,
84 typedef BOOLEAN DDKAPI
85 (*PSCSIWMI_SET_DATABLOCK
)(
86 IN PVOID DeviceContext
,
87 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
89 IN ULONG InstanceIndex
,
93 typedef BOOLEAN DDKAPI
94 (*PSCSIWMI_SET_DATAITEM
)(
95 IN PVOID DeviceContext
,
96 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
98 IN ULONG InstanceIndex
,
103 typedef BOOLEAN DDKAPI
104 (*PSCSIWMI_EXECUTE_METHOD
)(
105 IN PVOID DeviceContext
,
106 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
108 IN ULONG InstanceIndex
,
110 IN ULONG InBufferSize
,
111 IN ULONG OutBufferSize
,
112 IN OUT PUCHAR Buffer
);
114 typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL
{
116 ScsiWmiDataBlockControl
117 } SCSIWMI_ENABLE_DISABLE_CONTROL
;
119 typedef BOOLEAN DDKAPI
120 (*PSCSIWMI_FUNCTION_CONTROL
)(
121 IN PVOID DeviceContext
,
122 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
124 IN SCSIWMI_ENABLE_DISABLE_CONTROL Function
,
127 typedef struct _SCSIWMILIB_CONTEXT
{
129 PSCSIWMIGUIDREGINFO GuidList
;
130 PSCSIWMI_QUERY_REGINFO QueryWmiRegInfo
;
131 PSCSIWMI_QUERY_DATABLOCK QueryWmiDataBlock
;
132 PSCSIWMI_SET_DATABLOCK SetWmiDataBlock
;
133 PSCSIWMI_SET_DATAITEM SetWmiDataItem
;
134 PSCSIWMI_EXECUTE_METHOD ExecuteWmiMethod
;
135 PSCSIWMI_FUNCTION_CONTROL WmiFunctionControl
;
136 } SCSI_WMILIB_CONTEXT
, *PSCSI_WMILIB_CONTEXT
;
141 ScsiPortWmiDispatchFunction(
142 IN PSCSI_WMILIB_CONTEXT WmiLibInfo
,
143 IN UCHAR MinorFunction
,
144 IN PVOID DeviceContext
,
145 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
150 #define ScsiPortWmiFireAdapterEvent( \
156 ScsiPortWmiFireLogicalUnitEvent( \
168 * ScsiPortWmiGetReturnSize(
169 * PSCSIWMI_REQUEST_CONTEXT RequestContext);
171 #define ScsiPortWmiGetReturnSize(RequestContext) \
172 ((RequestContext)->ReturnSize)
175 * ScsiPortWmiGetReturnStatus(
176 * PSCSIWMI_REQUEST_CONTEXT RequestContext);
178 #define ScsiPortWmiGetReturnStatus(RequestContext) \
179 ((RequestContext)->ReturnStatus)
184 ScsiPortWmiPostProcess(
185 IN PSCSIWMI_REQUEST_CONTEXT RequestContext
,
187 IN ULONG BufferUsed
);
192 ScsiPortWmiFireLogicalUnitEvent(
193 IN PVOID HwDeviceExtension
,
198 IN ULONG InstanceIndex
,
199 IN ULONG EventDataSize
,
208 #endif /* __SCSIWMI_H */