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.
36 typedef struct _SCSIWMI_REQUEST_CONTEXT
{
43 } SCSIWMI_REQUEST_CONTEXT
, *PSCSIWMI_REQUEST_CONTEXT
;
46 # warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
49 #if ! (defined _GUID_DEFINED || defined GUID_DEFINED)
51 typedef struct _GUID
{
55 unsigned char Data4
[8];
59 typedef struct _SCSIWMIGUIDREGINFO
{
63 } SCSIWMIGUIDREGINFO
, *PSCSIWMIGUIDREGINFO
;
68 (NTAPI
*PSCSIWMI_QUERY_REGINFO
)(
69 _In_ PVOID DeviceContext
,
70 _In_ PSCSIWMI_REQUEST_CONTEXT RequestContext
,
71 _Out_ PWCHAR
*MofResourceName
);
76 (NTAPI
*PSCSIWMI_QUERY_DATABLOCK
)(
78 _In_ PSCSIWMI_REQUEST_CONTEXT DispatchContext
,
80 _In_ ULONG InstanceIndex
,
81 _In_ ULONG InstanceCount
,
82 _Inout_ PULONG InstanceLengthArray
,
83 _In_ ULONG BufferAvail
,
84 _Out_writes_bytes_(BufferAvail
) PUCHAR Buffer
);
89 (NTAPI
*PSCSIWMI_SET_DATABLOCK
)(
90 _In_ PVOID DeviceContext
,
91 _In_ PSCSIWMI_REQUEST_CONTEXT RequestContext
,
93 _In_ ULONG InstanceIndex
,
94 _In_ ULONG BufferSize
,
95 _In_reads_bytes_(BufferSize
) PUCHAR Buffer
);
100 (NTAPI
*PSCSIWMI_SET_DATAITEM
)(
101 _In_ PVOID DeviceContext
,
102 _In_ PSCSIWMI_REQUEST_CONTEXT RequestContext
,
103 _In_ ULONG GuidIndex
,
104 _In_ ULONG InstanceIndex
,
105 _In_ ULONG DataItemId
,
106 _In_ ULONG BufferSize
,
107 _In_reads_bytes_(BufferSize
) PUCHAR Buffer
);
110 _Must_inspect_result_
112 (NTAPI
*PSCSIWMI_EXECUTE_METHOD
)(
113 _In_ PVOID DeviceContext
,
114 _In_ PSCSIWMI_REQUEST_CONTEXT RequestContext
,
115 _In_ ULONG GuidIndex
,
116 _In_ ULONG InstanceIndex
,
118 _In_ ULONG InBufferSize
,
119 _In_ ULONG OutBufferSize
,
120 _Inout_updates_bytes_to_(InBufferSize
, OutBufferSize
) PUCHAR Buffer
);
122 typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL
{
124 ScsiWmiDataBlockControl
125 } SCSIWMI_ENABLE_DISABLE_CONTROL
;
128 _Must_inspect_result_
130 (NTAPI
*PSCSIWMI_FUNCTION_CONTROL
)(
131 _In_ PVOID DeviceContext
,
132 _In_ PSCSIWMI_REQUEST_CONTEXT RequestContext
,
133 _In_ ULONG GuidIndex
,
134 _In_ SCSIWMI_ENABLE_DISABLE_CONTROL Function
,
135 _In_ BOOLEAN Enable
);
137 typedef struct _SCSIWMILIB_CONTEXT
{
139 PSCSIWMIGUIDREGINFO GuidList
;
140 PSCSIWMI_QUERY_REGINFO QueryWmiRegInfo
;
141 PSCSIWMI_QUERY_DATABLOCK QueryWmiDataBlock
;
142 PSCSIWMI_SET_DATABLOCK SetWmiDataBlock
;
143 PSCSIWMI_SET_DATAITEM SetWmiDataItem
;
144 PSCSIWMI_EXECUTE_METHOD ExecuteWmiMethod
;
145 PSCSIWMI_FUNCTION_CONTROL WmiFunctionControl
;
146 } SCSI_WMILIB_CONTEXT
, *PSCSI_WMILIB_CONTEXT
;
148 _Must_inspect_result_
152 ScsiPortWmiDispatchFunction(
153 _In_ PSCSI_WMILIB_CONTEXT WmiLibInfo
,
154 _In_ UCHAR MinorFunction
,
155 _In_ PVOID DeviceContext
,
156 _In_ PSCSIWMI_REQUEST_CONTEXT RequestContext
,
158 _In_ ULONG BufferSize
,
161 #define ScsiPortWmiFireAdapterEvent( \
167 ScsiPortWmiFireLogicalUnitEvent( \
179 * ScsiPortWmiGetReturnSize(
180 * PSCSIWMI_REQUEST_CONTEXT RequestContext);
182 #define ScsiPortWmiGetReturnSize(RequestContext) \
183 ((RequestContext)->ReturnSize)
186 * ScsiPortWmiGetReturnStatus(
187 * PSCSIWMI_REQUEST_CONTEXT RequestContext);
189 #define ScsiPortWmiGetReturnStatus(RequestContext) \
190 ((RequestContext)->ReturnStatus)
195 ScsiPortWmiPostProcess(
196 _Inout_ PSCSIWMI_REQUEST_CONTEXT RequestContext
,
197 _In_ UCHAR SrbStatus
,
198 _In_ ULONG BufferUsed
);
203 ScsiPortWmiFireLogicalUnitEvent(
204 _In_ PVOID HwDeviceExtension
,
209 _In_ ULONG InstanceIndex
,
210 _In_ ULONG EventDataSize
,
211 _In_ PVOID EventData
);
219 #endif /* _SCSIWMI_ */