ReactOS 0.4.15-dev-5664-g3bf4ef6
wdfiotarget.h
Go to the documentation of this file.
1/*++
2
3Copyright (c) Microsoft Corporation. All rights reserved.
4
5_WdfVersionBuild_
6
7Module Name:
8
9 wdfiotarget.h
10
11Abstract:
12
13 Interfaces for WDF IO Targets
14
15Environment:
16
17 kernel mode only
18
19Revision History:
20
21--*/
22
23//
24// NOTE: This header is generated by stubwork. Please make any
25// modifications to the corresponding template files
26// (.x or .y) and use stubwork to regenerate the header
27//
28
29#ifndef _WDFIOTARGET_H_
30#define _WDFIOTARGET_H_
31
32#ifndef WDF_EXTERN_C
33 #ifdef __cplusplus
34 #define WDF_EXTERN_C extern "C"
35 #define WDF_EXTERN_C_START extern "C" {
36 #define WDF_EXTERN_C_END }
37 #else
38 #define WDF_EXTERN_C
39 #define WDF_EXTERN_C_START
40 #define WDF_EXTERN_C_END
41 #endif
42#endif
43
45
46
47
48
49#if (NTDDI_VERSION >= NTDDI_WIN2K)
50
60
68
75
81
82
83
84typedef
85_Function_class_(EVT_WDF_IO_TARGET_QUERY_REMOVE)
90EVT_WDF_IO_TARGET_QUERY_REMOVE(
91 _In_
92 WDFIOTARGET IoTarget
93 );
94
95typedef EVT_WDF_IO_TARGET_QUERY_REMOVE *PFN_WDF_IO_TARGET_QUERY_REMOVE;
96
97typedef
98_Function_class_(EVT_WDF_IO_TARGET_REMOVE_CANCELED)
101VOID
103EVT_WDF_IO_TARGET_REMOVE_CANCELED(
104 _In_
105 WDFIOTARGET IoTarget
106 );
107
108typedef EVT_WDF_IO_TARGET_REMOVE_CANCELED *PFN_WDF_IO_TARGET_REMOVE_CANCELED;
109
110typedef
111_Function_class_(EVT_WDF_IO_TARGET_REMOVE_COMPLETE)
114VOID
116EVT_WDF_IO_TARGET_REMOVE_COMPLETE(
117 _In_
118 WDFIOTARGET IoTarget
119 );
120
121typedef EVT_WDF_IO_TARGET_REMOVE_COMPLETE *PFN_WDF_IO_TARGET_REMOVE_COMPLETE;
122
124 //
125 // Size of this structure in bytes
126 //
128
129 //
130 // Indicates which fields of this structure are going to be used in
131 // creating the WDFIOTARGET.
132 //
134
135 //
136 // Notification when the target is being queried for removal.
137 // If !NT_SUCCESS is returned, the query will fail and the target will
138 // remain opened.
139 //
141
142 //
143 // The previous query remove has been canceled and the target can now be
144 // reopened.
145 //
147
148 //
149 // The query remove has succeeded and the target is now removed from the
150 // system.
151 //
153
154
155 // <KMDF_ONLY/>
156 // ========== WdfIoTargetOpenUseExistingDevice begin ==========
157 //
158 // The device object to send requests to
159 //
161
162 // <KMDF_ONLY/>
163 // File object representing the TargetDeviceObject. The PFILE_OBJECT will
164 // be passed as a parameter in all requests sent to the resulting
165 // WDFIOTARGET.
166 //
168
169 // ========== WdfIoTargetOpenUseExistingDevice end ==========
170
171 // ========== WdfIoTargetOpenByName begin ==========
172 //
173 // Name of the device to open.
174 //
176
177 // <KMDF_DOC>
178 // The access desired on the device being opened up, ie WDM FILE_XXX_ACCESS
179 // such as FILE_ANY_ACCESS, FILE_SPECIAL_ACCESS, FILE_READ_ACCESS, or
180 // FILE_WRITE_ACCESS or you can use values such as GENERIC_READ,
181 // GENERIC_WRITE, or GENERIC_ALL.
182 // </KMDF_DOC>
183 // <UMDF_DOC>
184 // The requested access to the file or device, which can be summarized as
185 // read, write, both or neither zero). For more information about
186 // this member, see the dwDesiredAccess parameter of CreateFile in the
187 // Windows SDK. Note that ACCESS_MASK data type is a DWORD value.
188 // </UMDF_DOC>
189 //
191
192 //
193 // <KMDF_DOC>
194 // Share access desired on the target being opened, ie WDM FILE_SHARE_XXX
195 // values such as FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_DELETE.
196 // A zero value means exclusive access to the target.
197 //
198 // </KMDF_DOC>
199 // <UMDF_DOC>
200 // The type of sharing to allow for the file. For more information about
201 // this member, see the dwShareMode parameter of CreateFile in the
202 // Windows SDK. A value of 0 means exclusive access.
203 // </UMDF_DOC>
204 //
206
207 //
208 // <KMDF_DOC>
209 // File attributes, see ZwCreateFile in the DDK for a list of valid
210 // values and their meaning.
211 // </KMDF_DOC>
212 // <UMDF_DOC>
213 // Additional flags and attributes for the file. For more information about
214 // this member, see the dwFlagsAndAttributes parameter of CreateFile
215 // in the Windows SDK.
216 // </UMDF_DOC>
217 //
219
220 //
221 // <KMDF_DOC>
222 // Create disposition, see ZwCreateFile in the DDK for a list of valid
223 // values and their meaning.
224 // </KMDF_DOC>
225 // <UMDF_DOC>
226 // The action to take if the file already exists. For more information
227 // about this member, see the dwCreationDisposition parameter of
228 // CreateFile in the Windows SDK.
229 // </UMDF_DOC>
230 //
232
233 //
234 // <KMDF_ONLY/>
235 // Options for opening the device, see CreateOptions for ZwCreateFile in the
236 // DDK for a list of valid values and their meaning.
237 //
239
240 //
241 // <KMDF_ONLY/>
242 //
244
245 //
246 // <KMDF_ONLY/>
247 //
249
250 //
251 // <KMDF_ONLY/>
252 //
254
255 // ========== WdfIoTargetOpenByName end ==========
256
257 //
258 // <KMDF_ONLY/>
259 //
260 // On return for a create by name, this will contain one of the following
261 // values: FILE_CREATED, FILE_OPENED, FILE_OVERWRITTEN, FILE_SUPERSEDED,
262 // FILE_EXISTS, FILE_DOES_NOT_EXIST
263 //
265
266 // ========== WdfIoTargetOpenLocalTargetByFile begin ==========
267
268 //
269 // <UMDF_ONLY/> A UNICODE_STRING-formatted string that contains the
270 // name of the file to create a file object from. This parameter is
271 // optional, and is applicable only when Type parameter is
272 // WdfIoTargetOpenLocalTargetByFile. The driver can leave this member
273 // unchanged if the driver does not have to create the file object
274 // from a file name. If the driver must supply a name, the string that
275 // the driver passes must not contain any path separator characters
276 // ("/" or "\").
277 //
279
280 // ========== WdfIoTargetOpenLocalTargetByFile end ==========
281
283
284
286VOID
290 )
291{
293
294 Params->Size = sizeof(WDF_IO_TARGET_OPEN_PARAMS);
296
297 Params->TargetDeviceObject = DeviceObject;
298}
299
300
302VOID
305 _In_ PCUNICODE_STRING TargetDeviceName,
307 )
308{
310
311 Params->Size = sizeof(WDF_IO_TARGET_OPEN_PARAMS);
313
314 RtlCopyMemory(&Params->TargetDeviceName,
315 TargetDeviceName,
316 sizeof(UNICODE_STRING));
317 Params->DesiredAccess = DesiredAccess;
318 Params->CreateOptions = FILE_NON_DIRECTORY_FILE;
319}
320
322VOID
325 _In_ PCUNICODE_STRING TargetDeviceName,
327 )
328{
330 TargetDeviceName,
332 Params->CreateDisposition = FILE_OPEN;
333}
334
335
336
337
339VOID
342 )
343{
345
346 Params->Size = sizeof(WDF_IO_TARGET_OPEN_PARAMS);
348}
349
350
351//
352// WDF Function: WdfIoTargetCreate
353//
354typedef
357WDFAPI
359(STDCALL *PFN_WDFIOTARGETCREATE)(
360 _In_
362 _In_
363 WDFDEVICE Device,
366 _Out_
367 WDFIOTARGET* IoTarget
368 );
369
374WdfIoTargetCreate(
375 _In_
376 WDFDEVICE Device,
379 _Out_
380 WDFIOTARGET* IoTarget
381 )
382{
384}
385
386//
387// WDF Function: WdfIoTargetOpen
388//
389typedef
392WDFAPI
394(STDCALL *PFN_WDFIOTARGETOPEN)(
395 _In_
397 _In_
398 WDFIOTARGET IoTarget,
399 _In_
401 );
402
407WdfIoTargetOpen(
408 _In_
409 WDFIOTARGET IoTarget,
410 _In_
412 )
413{
415}
416
417//
418// WDF Function: WdfIoTargetCloseForQueryRemove
419//
420typedef
422WDFAPI
423VOID
424(STDCALL *PFN_WDFIOTARGETCLOSEFORQUERYREMOVE)(
425 _In_
427 _In_
428 WDFIOTARGET IoTarget
429 );
430
433VOID
434WdfIoTargetCloseForQueryRemove(
435 _In_
436 WDFIOTARGET IoTarget
437 )
438{
439 ((PFN_WDFIOTARGETCLOSEFORQUERYREMOVE) WdfFunctions[WdfIoTargetCloseForQueryRemoveTableIndex])(WdfDriverGlobals, IoTarget);
440}
441
442//
443// WDF Function: WdfIoTargetClose
444//
445typedef
447WDFAPI
448VOID
449(STDCALL *PFN_WDFIOTARGETCLOSE)(
450 _In_
452 _In_
453 WDFIOTARGET IoTarget
454 );
455
458VOID
459WdfIoTargetClose(
460 _In_
461 WDFIOTARGET IoTarget
462 )
463{
465}
466
467//
468// WDF Function: WdfIoTargetStart
469//
470typedef
473WDFAPI
475(STDCALL *PFN_WDFIOTARGETSTART)(
476 _In_
478 _In_
479 WDFIOTARGET IoTarget
480 );
481
486WdfIoTargetStart(
487 _In_
488 WDFIOTARGET IoTarget
489 )
490{
491 return ((PFN_WDFIOTARGETSTART) WdfFunctions[WdfIoTargetStartTableIndex])(WdfDriverGlobals, IoTarget);
492}
493
494//
495// WDF Function: WdfIoTargetStop
496//
497typedef
500WDFAPI
501VOID
502(STDCALL *PFN_WDFIOTARGETSTOP)(
503 _In_
505 _In_
506 WDFIOTARGET IoTarget,
507 _In_
510 );
511
515VOID
516WdfIoTargetStop(
517 _In_
518 WDFIOTARGET IoTarget,
519 _In_
522 )
523{
525}
526
527//
528// WDF Function: WdfIoTargetPurge
529//
530typedef
533WDFAPI
534VOID
535(STDCALL *PFN_WDFIOTARGETPURGE)(
536 _In_
538 _In_
539 WDFIOTARGET IoTarget,
540 _In_
543 );
544
548VOID
549WdfIoTargetPurge(
550 _In_
551 WDFIOTARGET IoTarget,
552 _In_
555 )
556{
558}
559
560//
561// WDF Function: WdfIoTargetGetState
562//
563typedef
565WDFAPI
567(STDCALL *PFN_WDFIOTARGETGETSTATE)(
568 _In_
570 _In_
571 WDFIOTARGET IoTarget
572 );
573
577WdfIoTargetGetState(
578 _In_
579 WDFIOTARGET IoTarget
580 )
581{
582 return ((PFN_WDFIOTARGETGETSTATE) WdfFunctions[WdfIoTargetGetStateTableIndex])(WdfDriverGlobals, IoTarget);
583}
584
585//
586// WDF Function: WdfIoTargetGetDevice
587//
588typedef
590WDFAPI
591WDFDEVICE
592(STDCALL *PFN_WDFIOTARGETGETDEVICE)(
593 _In_
595 _In_
596 WDFIOTARGET IoTarget
597 );
598
601WDFDEVICE
602WdfIoTargetGetDevice(
603 _In_
604 WDFIOTARGET IoTarget
605 )
606{
607 return ((PFN_WDFIOTARGETGETDEVICE) WdfFunctions[WdfIoTargetGetDeviceTableIndex])(WdfDriverGlobals, IoTarget);
608}
609
610//
611// WDF Function: WdfIoTargetQueryTargetProperty
612//
613typedef
616WDFAPI
618(STDCALL *PFN_WDFIOTARGETQUERYTARGETPROPERTY)(
619 _In_
621 _In_
622 WDFIOTARGET IoTarget,
623 _In_
625 _In_
632 );
633
638WdfIoTargetQueryTargetProperty(
639 _In_
640 WDFIOTARGET IoTarget,
641 _In_
643 _In_
650 )
651{
653}
654
655//
656// WDF Function: WdfIoTargetAllocAndQueryTargetProperty
657//
658typedef
661WDFAPI
663(STDCALL *PFN_WDFIOTARGETALLOCANDQUERYTARGETPROPERTY)(
664 _In_
666 _In_
667 WDFIOTARGET IoTarget,
668 _In_
670 _In_
675 _Out_
676 WDFMEMORY* PropertyMemory
677 );
678
683WdfIoTargetAllocAndQueryTargetProperty(
684 _In_
685 WDFIOTARGET IoTarget,
686 _In_
688 _In_
693 _Out_
694 WDFMEMORY* PropertyMemory
695 )
696{
698}
699
700//
701// WDF Function: WdfIoTargetQueryForInterface
702//
703typedef
706WDFAPI
708(STDCALL *PFN_WDFIOTARGETQUERYFORINTERFACE)(
709 _In_
711 _In_
712 WDFIOTARGET IoTarget,
713 _In_
715 _Out_
717 _In_
719 _In_
723 );
724
729WdfIoTargetQueryForInterface(
730 _In_
731 WDFIOTARGET IoTarget,
732 _In_
734 _Out_
736 _In_
737 USHORT Size,
738 _In_
742 )
743{
745}
746
747//
748// WDF Function: WdfIoTargetWdmGetTargetDeviceObject
749//
750typedef
752WDFAPI
754(STDCALL *PFN_WDFIOTARGETWDMGETTARGETDEVICEOBJECT)(
755 _In_
757 _In_
758 WDFIOTARGET IoTarget
759 );
760
764WdfIoTargetWdmGetTargetDeviceObject(
765 _In_
766 WDFIOTARGET IoTarget
767 )
768{
769 return ((PFN_WDFIOTARGETWDMGETTARGETDEVICEOBJECT) WdfFunctions[WdfIoTargetWdmGetTargetDeviceObjectTableIndex])(WdfDriverGlobals, IoTarget);
770}
771
772//
773// WDF Function: WdfIoTargetWdmGetTargetPhysicalDevice
774//
775typedef
777WDFAPI
779(STDCALL *PFN_WDFIOTARGETWDMGETTARGETPHYSICALDEVICE)(
780 _In_
782 _In_
783 WDFIOTARGET IoTarget
784 );
785
789WdfIoTargetWdmGetTargetPhysicalDevice(
790 _In_
791 WDFIOTARGET IoTarget
792 )
793{
794 return ((PFN_WDFIOTARGETWDMGETTARGETPHYSICALDEVICE) WdfFunctions[WdfIoTargetWdmGetTargetPhysicalDeviceTableIndex])(WdfDriverGlobals, IoTarget);
795}
796
797//
798// WDF Function: WdfIoTargetWdmGetTargetFileObject
799//
800typedef
802WDFAPI
804(STDCALL *PFN_WDFIOTARGETWDMGETTARGETFILEOBJECT)(
805 _In_
807 _In_
808 WDFIOTARGET IoTarget
809 );
810
814WdfIoTargetWdmGetTargetFileObject(
815 _In_
816 WDFIOTARGET IoTarget
817 )
818{
819 return ((PFN_WDFIOTARGETWDMGETTARGETFILEOBJECT) WdfFunctions[WdfIoTargetWdmGetTargetFileObjectTableIndex])(WdfDriverGlobals, IoTarget);
820}
821
822//
823// WDF Function: WdfIoTargetWdmGetTargetFileHandle
824//
825typedef
827WDFAPI
828HANDLE
829(STDCALL *PFN_WDFIOTARGETWDMGETTARGETFILEHANDLE)(
830 _In_
832 _In_
833 WDFIOTARGET IoTarget
834 );
835
838HANDLE
839WdfIoTargetWdmGetTargetFileHandle(
840 _In_
841 WDFIOTARGET IoTarget
842 )
843{
844 return ((PFN_WDFIOTARGETWDMGETTARGETFILEHANDLE) WdfFunctions[WdfIoTargetWdmGetTargetFileHandleTableIndex])(WdfDriverGlobals, IoTarget);
845}
846
847//
848// WDF Function: WdfIoTargetSendReadSynchronously
849//
850typedef
853WDFAPI
855(STDCALL *PFN_WDFIOTARGETSENDREADSYNCHRONOUSLY)(
856 _In_
858 _In_
859 WDFIOTARGET IoTarget,
861 WDFREQUEST Request,
870 );
871
876WdfIoTargetSendReadSynchronously(
877 _In_
878 WDFIOTARGET IoTarget,
880 WDFREQUEST Request,
889 )
890{
892}
893
894//
895// WDF Function: WdfIoTargetFormatRequestForRead
896//
897typedef
900WDFAPI
902(STDCALL *PFN_WDFIOTARGETFORMATREQUESTFORREAD)(
903 _In_
905 _In_
906 WDFIOTARGET IoTarget,
907 _In_
908 WDFREQUEST Request,
910 WDFMEMORY OutputBuffer,
915 );
916
921WdfIoTargetFormatRequestForRead(
922 _In_
923 WDFIOTARGET IoTarget,
924 _In_
925 WDFREQUEST Request,
927 WDFMEMORY OutputBuffer,
932 )
933{
935}
936
937//
938// WDF Function: WdfIoTargetSendWriteSynchronously
939//
940typedef
943WDFAPI
945(STDCALL *PFN_WDFIOTARGETSENDWRITESYNCHRONOUSLY)(
946 _In_
948 _In_
949 WDFIOTARGET IoTarget,
951 WDFREQUEST Request,
960 );
961
966WdfIoTargetSendWriteSynchronously(
967 _In_
968 WDFIOTARGET IoTarget,
970 WDFREQUEST Request,
979 )
980{
982}
983
984//
985// WDF Function: WdfIoTargetFormatRequestForWrite
986//
987typedef
990WDFAPI
992(STDCALL *PFN_WDFIOTARGETFORMATREQUESTFORWRITE)(
993 _In_
995 _In_
996 WDFIOTARGET IoTarget,
997 _In_
998 WDFREQUEST Request,
1000 WDFMEMORY InputBuffer,
1001 _In_opt_
1003 _In_opt_
1005 );
1006
1011WdfIoTargetFormatRequestForWrite(
1012 _In_
1013 WDFIOTARGET IoTarget,
1014 _In_
1015 WDFREQUEST Request,
1016 _In_opt_
1017 WDFMEMORY InputBuffer,
1018 _In_opt_
1020 _In_opt_
1022 )
1023{
1025}
1026
1027//
1028// WDF Function: WdfIoTargetSendIoctlSynchronously
1029//
1030typedef
1033WDFAPI
1035(STDCALL *PFN_WDFIOTARGETSENDIOCTLSYNCHRONOUSLY)(
1036 _In_
1038 _In_
1039 WDFIOTARGET IoTarget,
1040 _In_opt_
1041 WDFREQUEST Request,
1042 _In_
1044 _In_opt_
1046 _In_opt_
1048 _In_opt_
1050 _Out_opt_
1052 );
1053
1058WdfIoTargetSendIoctlSynchronously(
1059 _In_
1060 WDFIOTARGET IoTarget,
1061 _In_opt_
1062 WDFREQUEST Request,
1063 _In_
1065 _In_opt_
1067 _In_opt_
1069 _In_opt_
1071 _Out_opt_
1073 )
1074{
1076}
1077
1078//
1079// WDF Function: WdfIoTargetFormatRequestForIoctl
1080//
1081typedef
1084WDFAPI
1086(STDCALL *PFN_WDFIOTARGETFORMATREQUESTFORIOCTL)(
1087 _In_
1089 _In_
1090 WDFIOTARGET IoTarget,
1091 _In_
1092 WDFREQUEST Request,
1093 _In_
1095 _In_opt_
1096 WDFMEMORY InputBuffer,
1097 _In_opt_
1099 _In_opt_
1100 WDFMEMORY OutputBuffer,
1101 _In_opt_
1103 );
1104
1109WdfIoTargetFormatRequestForIoctl(
1110 _In_
1111 WDFIOTARGET IoTarget,
1112 _In_
1113 WDFREQUEST Request,
1114 _In_
1116 _In_opt_
1117 WDFMEMORY InputBuffer,
1118 _In_opt_
1120 _In_opt_
1121 WDFMEMORY OutputBuffer,
1122 _In_opt_
1124 )
1125{
1127}
1128
1129//
1130// WDF Function: WdfIoTargetSendInternalIoctlSynchronously
1131//
1132typedef
1135WDFAPI
1137(STDCALL *PFN_WDFIOTARGETSENDINTERNALIOCTLSYNCHRONOUSLY)(
1138 _In_
1140 _In_
1141 WDFIOTARGET IoTarget,
1142 _In_opt_
1143 WDFREQUEST Request,
1144 _In_
1146 _In_opt_
1148 _In_opt_
1150 _In_opt_
1152 _Out_opt_
1154 );
1155
1160WdfIoTargetSendInternalIoctlSynchronously(
1161 _In_
1162 WDFIOTARGET IoTarget,
1163 _In_opt_
1164 WDFREQUEST Request,
1165 _In_
1167 _In_opt_
1169 _In_opt_
1171 _In_opt_
1173 _Out_opt_
1175 )
1176{
1178}
1179
1180//
1181// WDF Function: WdfIoTargetFormatRequestForInternalIoctl
1182//
1183typedef
1186WDFAPI
1188(STDCALL *PFN_WDFIOTARGETFORMATREQUESTFORINTERNALIOCTL)(
1189 _In_
1191 _In_
1192 WDFIOTARGET IoTarget,
1193 _In_
1194 WDFREQUEST Request,
1195 _In_
1197 _In_opt_
1198 WDFMEMORY InputBuffer,
1199 _In_opt_
1201 _In_opt_
1202 WDFMEMORY OutputBuffer,
1203 _In_opt_
1205 );
1206
1211WdfIoTargetFormatRequestForInternalIoctl(
1212 _In_
1213 WDFIOTARGET IoTarget,
1214 _In_
1215 WDFREQUEST Request,
1216 _In_
1218 _In_opt_
1219 WDFMEMORY InputBuffer,
1220 _In_opt_
1222 _In_opt_
1223 WDFMEMORY OutputBuffer,
1224 _In_opt_
1226 )
1227{
1229}
1230
1231//
1232// WDF Function: WdfIoTargetSendInternalIoctlOthersSynchronously
1233//
1234typedef
1237WDFAPI
1239(STDCALL *PFN_WDFIOTARGETSENDINTERNALIOCTLOTHERSSYNCHRONOUSLY)(
1240 _In_
1242 _In_
1243 WDFIOTARGET IoTarget,
1244 _In_opt_
1245 WDFREQUEST Request,
1246 _In_
1248 _In_opt_
1250 _In_opt_
1252 _In_opt_
1254 _In_opt_
1256 _Out_opt_
1258 );
1259
1264WdfIoTargetSendInternalIoctlOthersSynchronously(
1265 _In_
1266 WDFIOTARGET IoTarget,
1267 _In_opt_
1268 WDFREQUEST Request,
1269 _In_
1271 _In_opt_
1273 _In_opt_
1275 _In_opt_
1277 _In_opt_
1279 _Out_opt_
1281 )
1282{
1284}
1285
1286//
1287// WDF Function: WdfIoTargetFormatRequestForInternalIoctlOthers
1288//
1289typedef
1292WDFAPI
1294(STDCALL *PFN_WDFIOTARGETFORMATREQUESTFORINTERNALIOCTLOTHERS)(
1295 _In_
1297 _In_
1298 WDFIOTARGET IoTarget,
1299 _In_
1300 WDFREQUEST Request,
1301 _In_
1303 _In_opt_
1304 WDFMEMORY OtherArg1,
1305 _In_opt_
1307 _In_opt_
1308 WDFMEMORY OtherArg2,
1309 _In_opt_
1311 _In_opt_
1312 WDFMEMORY OtherArg4,
1313 _In_opt_
1315 );
1316
1321WdfIoTargetFormatRequestForInternalIoctlOthers(
1322 _In_
1323 WDFIOTARGET IoTarget,
1324 _In_
1325 WDFREQUEST Request,
1326 _In_
1328 _In_opt_
1329 WDFMEMORY OtherArg1,
1330 _In_opt_
1332 _In_opt_
1333 WDFMEMORY OtherArg2,
1334 _In_opt_
1336 _In_opt_
1337 WDFMEMORY OtherArg4,
1338 _In_opt_
1340 )
1341{
1343}
1344
1345
1346
1347#endif // (NTDDI_VERSION >= NTDDI_WIN2K)
1348
1349
1350
1352
1353#endif // _WDFIOTARGET_H_
1354
#define VOID
Definition: acefi.h:82
LONG NTSTATUS
Definition: precomp.h:26
#define FILE_NON_DIRECTORY_FILE
Definition: constants.h:492
#define NTSTATUS
Definition: precomp.h:20
#define _IRQL_requires_same_
Definition: driverspecs.h:232
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
struct _DEVICE_OBJECT * PDEVICE_OBJECT
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
#define FILE_OPEN
Definition: from_kernel.h:54
DriverGlobals
unsigned int * PULONG
Definition: retypes.h:1
unsigned int ULONG
Definition: retypes.h:1
#define _Function_class_(x)
Definition: ms_sal.h:2946
#define _Out_opt_
Definition: ms_sal.h:346
#define _Must_inspect_result_
Definition: ms_sal.h:558
#define _Out_
Definition: ms_sal.h:345
#define _Strict_type_match_
Definition: ms_sal.h:2954
#define _Out_writes_bytes_to_opt_(size, count)
Definition: ms_sal.h:361
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
ULONG ACCESS_MASK
Definition: nt_native.h:40
__GNU_EXTENSION typedef __int64 * PLONGLONG
Definition: ntbasedef.h:382
unsigned short USHORT
Definition: pedump.c:61
PDEVICE_OBJECT TargetDeviceObject
Definition: wdfiotarget.h:160
WDF_IO_TARGET_OPEN_TYPE Type
Definition: wdfiotarget.h:133
PFILE_OBJECT TargetFileObject
Definition: wdfiotarget.h:167
UNICODE_STRING TargetDeviceName
Definition: wdfiotarget.h:175
PFN_WDF_IO_TARGET_QUERY_REMOVE EvtIoTargetQueryRemove
Definition: wdfiotarget.h:140
PFN_WDF_IO_TARGET_REMOVE_CANCELED EvtIoTargetRemoveCanceled
Definition: wdfiotarget.h:146
PFN_WDF_IO_TARGET_REMOVE_COMPLETE EvtIoTargetRemoveComplete
Definition: wdfiotarget.h:152
uint32_t * PULONG_PTR
Definition: typedefs.h:65
INT POOL_TYPE
Definition: typedefs.h:78
PVOID HANDLE
Definition: typedefs.h:73
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define STDCALL
Definition: wdf.h:45
#define WdfFunctions
Definition: wdf.h:66
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes
Definition: wdfdevice.h:3817
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFMEMORY * PropertyMemory
Definition: wdfdevice.h:3820
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
Definition: wdfdevice.h:3776
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2658
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3815
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID PropertyBuffer
Definition: wdfdevice.h:4437
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY DeviceProperty
Definition: wdfdevice.h:3769
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3771
_In_ WDFREQUEST Request
Definition: wdfdevice.h:547
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
Definition: wdffdo.h:465
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
Definition: wdffdo.h:463
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
Definition: wdffdo.h:469
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT _In_opt_ PVOID InterfaceSpecificData
Definition: wdffdo.h:472
PWDF_DRIVER_GLOBALS WdfDriverGlobals
@ WdfIoTargetCreateTableIndex
Definition: wdffuncenum.h:192
@ WdfIoTargetPurgeTableIndex
Definition: wdffuncenum.h:445
@ WdfIoTargetCloseTableIndex
Definition: wdffuncenum.h:195
@ WdfIoTargetWdmGetTargetFileObjectTableIndex
Definition: wdffuncenum.h:205
@ WdfIoTargetStopTableIndex
Definition: wdffuncenum.h:197
@ WdfIoTargetCloseForQueryRemoveTableIndex
Definition: wdffuncenum.h:194
@ WdfIoTargetFormatRequestForIoctlTableIndex
Definition: wdffuncenum.h:212
@ WdfIoTargetOpenTableIndex
Definition: wdffuncenum.h:193
@ WdfIoTargetSendInternalIoctlOthersSynchronouslyTableIndex
Definition: wdffuncenum.h:215
@ WdfIoTargetQueryForInterfaceTableIndex
Definition: wdffuncenum.h:202
@ WdfIoTargetGetStateTableIndex
Definition: wdffuncenum.h:198
@ WdfIoTargetFormatRequestForReadTableIndex
Definition: wdffuncenum.h:208
@ WdfIoTargetFormatRequestForInternalIoctlOthersTableIndex
Definition: wdffuncenum.h:216
@ WdfIoTargetSendIoctlSynchronouslyTableIndex
Definition: wdffuncenum.h:211
@ WdfIoTargetWdmGetTargetPhysicalDeviceTableIndex
Definition: wdffuncenum.h:204
@ WdfIoTargetFormatRequestForInternalIoctlTableIndex
Definition: wdffuncenum.h:214
@ WdfIoTargetAllocAndQueryTargetPropertyTableIndex
Definition: wdffuncenum.h:201
@ WdfIoTargetSendWriteSynchronouslyTableIndex
Definition: wdffuncenum.h:209
@ WdfIoTargetSendReadSynchronouslyTableIndex
Definition: wdffuncenum.h:207
@ WdfIoTargetFormatRequestForWriteTableIndex
Definition: wdffuncenum.h:210
@ WdfIoTargetWdmGetTargetDeviceObjectTableIndex
Definition: wdffuncenum.h:203
@ WdfIoTargetQueryTargetPropertyTableIndex
Definition: wdffuncenum.h:200
@ WdfIoTargetSendInternalIoctlSynchronouslyTableIndex
Definition: wdffuncenum.h:213
@ WdfIoTargetGetDeviceTableIndex
Definition: wdffuncenum.h:199
@ WdfIoTargetStartTableIndex
Definition: wdffuncenum.h:196
@ WdfIoTargetWdmGetTargetFileHandleTableIndex
Definition: wdffuncenum.h:206
enum _WDF_IO_TARGET_PURGE_IO_ACTION WDF_IO_TARGET_PURGE_IO_ACTION
enum _WDF_IO_TARGET_OPEN_TYPE WDF_IO_TARGET_OPEN_TYPE
EVT_WDF_IO_TARGET_REMOVE_CANCELED * PFN_WDF_IO_TARGET_REMOVE_CANCELED
Definition: wdfiotarget.h:108
_Must_inspect_result_ _In_ WDFIOTARGET _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
Definition: wdfiotarget.h:720
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_MEMORY_DESCRIPTOR OtherArg2
Definition: wdfiotarget.h:1251
_WDF_IO_TARGET_OPEN_TYPE
Definition: wdfiotarget.h:61
@ WdfIoTargetOpenUndefined
Definition: wdfiotarget.h:62
@ WdfIoTargetOpenLocalTargetByFile
Definition: wdfiotarget.h:66
@ WdfIoTargetOpenReopen
Definition: wdfiotarget.h:65
@ WdfIoTargetOpenUseExistingDevice
Definition: wdfiotarget.h:63
@ WdfIoTargetOpenByName
Definition: wdfiotarget.h:64
struct _WDF_IO_TARGET_OPEN_PARAMS * PWDF_IO_TARGET_OPEN_PARAMS
_Must_inspect_result_ _In_ WDFIOTARGET _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_opt_ PVOID _Deref_out_range_(<=, BufferLength) PULONG ResultLength)
Definition: wdfiotarget.h:630
_Must_inspect_result_ _In_ WDFIOTARGET _In_ PWDF_IO_TARGET_OPEN_PARAMS OpenParams
Definition: wdfiotarget.h:401
#define WDF_EXTERN_C_END
Definition: wdfiotarget.h:40
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesReturned
Definition: wdfiotarget.h:1052
_Must_inspect_result_ _In_ WDFIOTARGET _In_ WDFREQUEST _In_ ULONG _In_opt_ WDFMEMORY _In_opt_ PWDFMEMORY_OFFSET _In_opt_ WDFMEMORY _In_opt_ PWDFMEMORY_OFFSET _In_opt_ WDFMEMORY _In_opt_ PWDFMEMORY_OFFSET OtherArg4Offset
Definition: wdfiotarget.h:1315
struct _WDF_IO_TARGET_OPEN_PARAMS WDF_IO_TARGET_OPEN_PARAMS
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfiotarget.h:363
_WDF_IO_TARGET_SENT_IO_ACTION
Definition: wdfiotarget.h:69
@ WdfIoTargetCancelSentIo
Definition: wdfiotarget.h:71
@ WdfIoTargetWaitForSentIoToComplete
Definition: wdfiotarget.h:72
@ WdfIoTargetSentIoUndefined
Definition: wdfiotarget.h:70
@ WdfIoTargetLeaveSentIoPending
Definition: wdfiotarget.h:73
enum _WDF_IO_TARGET_SENT_IO_ACTION WDF_IO_TARGET_SENT_IO_ACTION
_WDF_IO_TARGET_STATE
Definition: wdfiotarget.h:51
@ WdfIoTargetClosed
Definition: wdfiotarget.h:56
@ WdfIoTargetStarted
Definition: wdfiotarget.h:53
@ WdfIoTargetStateUndefined
Definition: wdfiotarget.h:52
@ WdfIoTargetClosedForQueryRemove
Definition: wdfiotarget.h:55
@ WdfIoTargetPurged
Definition: wdfiotarget.h:58
@ WdfIoTargetDeleted
Definition: wdfiotarget.h:57
@ WdfIoTargetStopped
Definition: wdfiotarget.h:54
_Must_inspect_result_ _In_ WDFDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES IoTargetAttributes
Definition: wdfiotarget.h:365
_Must_inspect_result_ _In_ WDFDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIOTARGET * IoTarget
Definition: wdfiotarget.h:368
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
Definition: wdfiotarget.h:863
FORCEINLINE VOID WDF_IO_TARGET_OPEN_PARAMS_INIT_EXISTING_DEVICE(_Out_ PWDF_IO_TARGET_OPEN_PARAMS Params, _In_ PDEVICE_OBJECT DeviceObject)
Definition: wdfiotarget.h:287
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
Definition: wdfiotarget.h:510
_Must_inspect_result_ _In_ WDFIOTARGET _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT Size
Definition: wdfiotarget.h:718
_Must_inspect_result_ _In_ WDFIOTARGET _In_ LPCGUID InterfaceType
Definition: wdfiotarget.h:714
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG IoctlCode
Definition: wdfiotarget.h:1043
EVT_WDF_IO_TARGET_REMOVE_COMPLETE * PFN_WDF_IO_TARGET_REMOVE_COMPLETE
Definition: wdfiotarget.h:121
#define WDF_EXTERN_C_START
Definition: wdfiotarget.h:39
_Must_inspect_result_ _In_ WDFIOTARGET _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfiotarget.h:626
_WDF_IO_TARGET_PURGE_IO_ACTION
Definition: wdfiotarget.h:76
@ WdfIoTargetPurgeIo
Definition: wdfiotarget.h:79
@ WdfIoTargetPurgeIoUndefined
Definition: wdfiotarget.h:77
@ WdfIoTargetPurgeIoAndWait
Definition: wdfiotarget.h:78
_Must_inspect_result_ _In_ WDFIOTARGET _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfiotarget.h:672
EVT_WDF_IO_TARGET_QUERY_REMOVE * PFN_WDF_IO_TARGET_QUERY_REMOVE
Definition: wdfiotarget.h:95
_Must_inspect_result_ _In_ WDFIOTARGET _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT _In_opt_ PVOID InterfaceSpecificData
Definition: wdfiotarget.h:723
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
Definition: wdfiotarget.h:960
WDF_EXTERN_C_START enum _WDF_IO_TARGET_STATE WDF_IO_TARGET_STATE
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG _In_opt_ PWDF_MEMORY_DESCRIPTOR OtherArg1
Definition: wdfiotarget.h:1249
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG DeviceOffset
Definition: wdfiotarget.h:865
_Must_inspect_result_ _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI NTSTATUS(STDCALL *PFN_WDFIOTARGETCREATE)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals
Definition: wdfiotarget.h:356
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST Request
Definition: wdfiotarget.h:861
_Must_inspect_result_ _In_ WDFIOTARGET _In_ DEVICE_REGISTRY_PROPERTY DeviceProperty
Definition: wdfiotarget.h:624
_Must_inspect_result_ _In_ WDFIOTARGET _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFMEMORY * PropertyMemory
Definition: wdfiotarget.h:677
FORCEINLINE VOID WDF_IO_TARGET_OPEN_PARAMS_INIT_CREATE_BY_NAME(_Out_ PWDF_IO_TARGET_OPEN_PARAMS Params, _In_ PCUNICODE_STRING TargetDeviceName, _In_ ACCESS_MASK DesiredAccess)
Definition: wdfiotarget.h:303
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_MEMORY_DESCRIPTOR OtherArg4
Definition: wdfiotarget.h:1253
_Must_inspect_result_ _In_ WDFIOTARGET _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes
Definition: wdfiotarget.h:674
WDF_EXTERN_C_START enum _WDF_IO_TARGET_STATE * PWDF_IO_TARGET_STATE
_Must_inspect_result_ _In_ WDFIOTARGET _In_ WDFREQUEST _In_ ULONG _In_opt_ WDFMEMORY _In_opt_ PWDFMEMORY_OFFSET _In_opt_ WDFMEMORY _In_opt_ PWDFMEMORY_OFFSET OtherArg2Offset
Definition: wdfiotarget.h:1310
_Must_inspect_result_ _In_ WDFIOTARGET _In_ LPCGUID _Out_ PINTERFACE Interface
Definition: wdfiotarget.h:716
_Must_inspect_result_ _In_ WDFIOTARGET _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _When_(BufferLength !=0, _Out_writes_bytes_to_opt_(BufferLength, *ResultLength)) _When_(BufferLength
Definition: wdfiotarget.h:627
_Must_inspect_result_ _In_ WDFIOTARGET _In_ WDFREQUEST _In_opt_ WDFMEMORY _In_opt_ PWDFMEMORY_OFFSET OutputBufferOffset
Definition: wdfiotarget.h:912
FORCEINLINE VOID WDF_IO_TARGET_OPEN_PARAMS_INIT_REOPEN(_Out_ PWDF_IO_TARGET_OPEN_PARAMS Params)
Definition: wdfiotarget.h:340
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
Definition: wdfiotarget.h:870
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
Definition: wdfiotarget.h:953
_Must_inspect_result_ _In_ WDFIOTARGET _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_opt_ PVOID PropertyBuffer
Definition: wdfiotarget.h:629
FORCEINLINE VOID WDF_IO_TARGET_OPEN_PARAMS_INIT_OPEN_BY_NAME(_Out_ PWDF_IO_TARGET_OPEN_PARAMS Params, _In_ PCUNICODE_STRING TargetDeviceName, _In_ ACCESS_MASK DesiredAccess)
Definition: wdfiotarget.h:323
_Must_inspect_result_ _In_ WDFIOTARGET _In_ WDFREQUEST _In_opt_ WDFMEMORY _In_opt_ PWDFMEMORY_OFFSET InputBufferOffset
Definition: wdfiotarget.h:1002
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS RequestOptions
Definition: wdfiotarget.h:867
_Must_inspect_result_ _In_ WDFIOTARGET _In_ WDFREQUEST _In_ ULONG _In_opt_ WDFMEMORY _In_opt_ PWDFMEMORY_OFFSET OtherArg1Offset
Definition: wdfiotarget.h:1306
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
Definition: wdfrequest.h:308
#define WDFAPI
Definition: wdftypes.h:53
#define FORCEINLINE
Definition: wdftypes.h:67
DEVICE_REGISTRY_PROPERTY
Definition: iotypes.h:1194
* PFILE_OBJECT
Definition: iotypes.h:1998