xref: /reactos/drivers/storage/class/cdrom/ioctl.h (revision 3088717b)
1 /*++
2 
3 Copyright (C) Microsoft Corporation. All rights reserved.
4 
5 Module Name:
6 
7     ioctl.h
8 
9 Abstract:
10 
11     Functions to handle IOCTLs.
12 
13 Author:
14 
15 Environment:
16 
17     kernel mode only
18 
19 Notes:
20 
21 
22 Revision History:
23 
24 --*/
25 
26 #ifndef __IOCTL_H__
27 #define __IOCTL_H__
28 
29 BOOLEAN
30 RequestDispatchProcessDirectly(
31     _In_ WDFDEVICE              Device,
32     _In_ WDFREQUEST             Request,
33     _In_ WDF_REQUEST_PARAMETERS RequestParameters
34     );
35 
36 BOOLEAN
37 RequestDispatchToSequentialQueue(
38     _In_ WDFDEVICE              Device,
39     _In_ WDFREQUEST             Request,
40     _In_ WDF_REQUEST_PARAMETERS RequestParameters
41     );
42 
43 BOOLEAN
44 RequestDispatchSyncWithSequentialQueue(
45     _In_ WDFDEVICE              Device,
46     _In_ WDFREQUEST             Request,
47     _In_ WDF_REQUEST_PARAMETERS RequestParameters
48     );
49 
50 BOOLEAN
51 RequestDispatchSpecialIoctls(
52     _In_ WDFDEVICE              Device,
53     _In_ WDFREQUEST             Request,
54     _In_ WDF_REQUEST_PARAMETERS RequestParameters
55     );
56 
57 BOOLEAN
58 RequestDispatchUnknownRequests(
59     _In_ WDFDEVICE              Device,
60     _In_ WDFREQUEST             Request,
61     _In_ WDF_REQUEST_PARAMETERS RequestParameters
62     );
63 
64 //
65 //  I/O Request Handlers
66 //
67 
68 // Handlers that are called directly in dispatch routine.
69 
70 NTSTATUS
71 RequestHandleGetInquiryData(
72     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
73     _In_  WDFREQUEST               Request,
74     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
75     _Out_ size_t *                 DataLength
76     );
77 
78 NTSTATUS
79 RequestHandleGetMediaTypeEx(
80     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
81     _In_  WDFREQUEST               Request,
82     _Out_ size_t *                 DataLength
83     );
84 
85 NTSTATUS
86 RequestHandleMountQueryUniqueId(
87     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
88     _In_  WDFREQUEST               Request,
89     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
90     _Out_ size_t *                 DataLength
91     );
92 
93 NTSTATUS
94 RequestHandleMountQueryDeviceName(
95     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
96     _In_  WDFREQUEST               Request,
97     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
98     _Out_ size_t *                 DataLength
99     );
100 
101 NTSTATUS
102 RequestHandleMountQuerySuggestedLinkName(
103     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
104     _In_  WDFREQUEST               Request,
105     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
106     _Out_ size_t *                 DataLength
107     );
108 
109 NTSTATUS
110 RequestHandleGetDeviceNumber(
111     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
112     _In_  WDFREQUEST               Request,
113     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
114     _Out_ size_t *                 DataLength
115     );
116 
117 NTSTATUS
118 RequestHandleGetHotPlugInfo(
119     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
120     _In_  WDFREQUEST               Request,
121     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
122     _Out_ size_t *                 DataLength
123     );
124 
125 NTSTATUS
126 RequestHandleSetHotPlugInfo(
127     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
128     _In_  WDFREQUEST               Request,
129     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
130     _Out_ size_t *                 DataLength
131     );
132 
133 _IRQL_requires_max_(APC_LEVEL)
134 NTSTATUS
135 RequestHandleEventNotification(
136     _In_      PCDROM_DEVICE_EXTENSION  DeviceExtension,
137     _In_opt_  WDFREQUEST               Request,
138     _In_opt_  PWDF_REQUEST_PARAMETERS  RequestParameters,
139     _Out_     size_t *                 DataLength
140     );
141 
142 // Handlers that are called in RequestProcessSerializedIoctl in a work item.
143 
144 _IRQL_requires_max_(APC_LEVEL)
145 NTSTATUS
146 RequestHandleGetDvdRegion(
147     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
148     _In_  WDFREQUEST               Request,
149     _Out_ size_t *                 DataLength
150     );
151 
152 NTSTATUS
153 RequestHandleQueryPropertyRetrieveCachedData(
154     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
155     _In_  WDFREQUEST               Request,
156     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
157     _Out_ size_t *                 DataLength
158     );
159 
160 _IRQL_requires_max_(APC_LEVEL)
161 NTSTATUS
162 RequestHandleReadTOC(
163     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
164     _In_  WDFREQUEST               Request,
165     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
166     _Out_ size_t *                 DataLength
167     );
168 
169 _IRQL_requires_max_(APC_LEVEL)
170 NTSTATUS
171 RequestHandleReadTocEx(
172     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
173     _In_  WDFREQUEST               Request,
174     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
175     _Out_ size_t *                 DataLength
176     );
177 
178 _IRQL_requires_max_(APC_LEVEL)
179 NTSTATUS
180 RequestHandleGetConfiguration(
181     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
182     _In_  WDFREQUEST               Request,
183     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
184     _Out_ size_t *                 DataLength
185     );
186 
187 _IRQL_requires_max_(PASSIVE_LEVEL)
188 NTSTATUS
189 RequestHandleGetDriveGeometry(
190     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
191     _In_  WDFREQUEST               Request,
192     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
193     _Out_ size_t *                 DataLength
194     );
195 
196 _IRQL_requires_max_(APC_LEVEL)
197 NTSTATUS
198 RequestHandleDiskVerify(
199     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
200     _In_  WDFREQUEST               Request,
201     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
202     _Out_ size_t *                 DataLength
203     );
204 
205 _IRQL_requires_max_(APC_LEVEL)
206 NTSTATUS
207 RequestHandleCheckVerify(
208     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
209     _In_  WDFREQUEST               Request,
210     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
211     _Out_ size_t *                 DataLength
212     );
213 
214 _IRQL_requires_max_(APC_LEVEL)
215 NTSTATUS
216 RequestHandleFakePartitionInfo(
217     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
218     _In_  WDFREQUEST               Request,
219     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
220     _Out_ size_t *                 DataLength
221     );
222 
223 _IRQL_requires_max_(PASSIVE_LEVEL)
224 NTSTATUS
225 RequestHandleEjectionControl(
226     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
227     _In_  WDFREQUEST               Request,
228     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
229     _Out_ size_t *                 DataLength
230     );
231 
232 _IRQL_requires_max_(PASSIVE_LEVEL)
233 NTSTATUS
234 RequestHandleLoadEjectMedia(
235     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
236     _In_  WDFREQUEST               Request,
237     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
238     _Out_ size_t *                 DataLength
239     );
240 
241 _IRQL_requires_max_(APC_LEVEL)
242 NTSTATUS
243 RequestHandleMcnControl(
244     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
245     _In_  WDFREQUEST               Request,
246     _Out_ size_t *                 DataLength
247     );
248 
249 _IRQL_requires_max_(PASSIVE_LEVEL)
250 NTSTATUS
251 RequestHandleReserveRelease(
252     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
253     _In_  WDFREQUEST               Request,
254     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
255     _Out_ size_t *                 DataLength
256     );
257 
258 _IRQL_requires_max_(PASSIVE_LEVEL)
259 NTSTATUS
260 RequestHandlePersistentReserve(
261     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
262     _In_  WDFREQUEST               Request,
263     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
264     _Out_ size_t *                 DataLength
265     );
266 
267 #if (NTDDI_VERSION >= NTDDI_WIN8)
268 _IRQL_requires_max_(APC_LEVEL)
269 NTSTATUS
270 RequestHandleAreVolumesReady(
271     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
272     _In_  WDFREQUEST               Request,
273     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
274     _Out_ size_t *                 DataLength
275     );
276 
277 _IRQL_requires_max_(APC_LEVEL)
278 NTSTATUS
279 RequestHandleVolumeOnline(
280     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
281     _In_  WDFREQUEST               Request,
282     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
283     _Out_ size_t *                 DataLength
284     );
285 #endif
286 
287 _IRQL_requires_max_(PASSIVE_LEVEL)
288 NTSTATUS
289 DeviceHandleRawRead(
290     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
291     _In_  WDFREQUEST               Request,
292     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
293     _Out_ size_t *                 DataLength
294     );
295 
296 _IRQL_requires_max_(APC_LEVEL)
297 NTSTATUS
298 DeviceHandlePlayAudioMsf(
299     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
300     _In_  WDFREQUEST               Request,
301     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
302     _Out_ size_t *                 DataLength
303     );
304 
305 _IRQL_requires_max_(APC_LEVEL)
306 NTSTATUS
307 DeviceHandleReadQChannel(
308     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
309     _In_  WDFREQUEST               Request,
310     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
311     _Out_ size_t *                 DataLength
312     );
313 
314 _IRQL_requires_max_(APC_LEVEL)
315 NTSTATUS
316 DeviceHandlePauseAudio(
317     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
318     _In_  WDFREQUEST               Request,
319     _Out_ size_t *                 DataLength
320     );
321 
322 _IRQL_requires_max_(APC_LEVEL)
323 NTSTATUS
324 DeviceHandleResumeAudio(
325     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
326     _In_  WDFREQUEST               Request,
327     _Out_ size_t *                 DataLength
328     );
329 
330 _IRQL_requires_max_(APC_LEVEL)
331 NTSTATUS
332 DeviceHandleSeekAudioMsf(
333     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
334     _In_  WDFREQUEST               Request,
335     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
336     _Out_ size_t *                 DataLength
337     );
338 
339 _IRQL_requires_max_(APC_LEVEL)
340 NTSTATUS
341 DeviceHandleStopAudio(
342     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
343     _In_  WDFREQUEST               Request,
344     _Out_ size_t *                 DataLength
345     );
346 
347 _IRQL_requires_max_(APC_LEVEL)
348 NTSTATUS
349 DeviceHandleGetSetVolume(
350     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
351     _In_  WDFREQUEST               Request,
352     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
353     _Out_ size_t *                 DataLength
354     );
355 
356 _IRQL_requires_max_(APC_LEVEL)
357 NTSTATUS
358 DeviceHandleReadDvdStructure(
359     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
360     _In_  WDFREQUEST               Request,
361     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
362     _Out_ size_t *                 DataLength
363     );
364 
365 _IRQL_requires_max_(APC_LEVEL)
366 NTSTATUS
367 DeviceHandleDvdEndSession(
368     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
369     _In_  WDFREQUEST               Request,
370     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
371     _Out_ size_t *                 DataLength
372     );
373 
374 _IRQL_requires_max_(APC_LEVEL)
375 NTSTATUS
376 DeviceHandleDvdStartSessionReadKey(
377     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
378     _In_  WDFREQUEST               Request,
379     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
380     _Out_ size_t *                 DataLength
381     );
382 
383 _IRQL_requires_max_(APC_LEVEL)
384 NTSTATUS
385 DeviceHandleDvdSendKey(
386     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
387     _In_  WDFREQUEST               Request,
388     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
389     _Out_ size_t *                 DataLength
390     );
391 
392 _IRQL_requires_max_(APC_LEVEL)
393 NTSTATUS
394 DeviceHandleSetReadAhead(
395     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
396     _In_  WDFREQUEST               Request,
397     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
398     _Out_ size_t *                 DataLength
399     );
400 
401 _IRQL_requires_max_(APC_LEVEL)
402 NTSTATUS
403 DeviceHandleSetSpeed(
404     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
405     _In_  WDFREQUEST               Request,
406     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
407     _Out_ size_t *                 DataLength
408     );
409 
410 _IRQL_requires_max_(APC_LEVEL)
411 NTSTATUS
412 DeviceHandleAacsReadMediaKeyBlock(
413     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
414     _In_  WDFREQUEST               Request,
415     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
416     _Out_ size_t *                 DataLength
417     );
418 
419 _IRQL_requires_max_(APC_LEVEL)
420 NTSTATUS
421 DeviceHandleAacsStartSession(
422     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
423     _In_  WDFREQUEST               Request,
424     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
425     _Out_ size_t *                 DataLength
426     );
427 
428 _IRQL_requires_max_(APC_LEVEL)
429 NTSTATUS
430 DeviceHandleAacsEndSession(
431     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
432     _In_  WDFREQUEST               Request,
433     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
434     _Out_ size_t *                 DataLength
435     );
436 
437 _IRQL_requires_max_(APC_LEVEL)
438 NTSTATUS
439 DeviceHandleAacsSendCertificate(
440     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
441     _In_  WDFREQUEST               Request,
442     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
443     _Out_ size_t *                 DataLength
444     );
445 
446 _IRQL_requires_max_(APC_LEVEL)
447 NTSTATUS
448 DeviceHandleAacsGetCertificate(
449     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
450     _In_  WDFREQUEST               Request,
451     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
452     _Out_ size_t *                 DataLength
453     );
454 
455 _IRQL_requires_max_(APC_LEVEL)
456 NTSTATUS
457 DeviceHandleAacsGetChallengeKey(
458     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
459     _In_  WDFREQUEST               Request,
460     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
461     _Out_ size_t *                 DataLength
462     );
463 
464 _IRQL_requires_max_(APC_LEVEL)
465 NTSTATUS
466 DeviceHandleSendChallengeKey(
467     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
468     _In_  WDFREQUEST               Request,
469     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
470     _Out_ size_t *                 DataLength
471     );
472 
473 _IRQL_requires_max_(APC_LEVEL)
474 NTSTATUS
475 DeviceHandleReadVolumeId(
476     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
477     _In_  WDFREQUEST               Request,
478     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
479     _Out_ size_t *                 DataLength
480     );
481 
482 _IRQL_requires_max_(APC_LEVEL)
483 NTSTATUS
484 DeviceHandleAacsReadSerialNumber(
485     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
486     _In_  WDFREQUEST               Request,
487     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
488     _Out_ size_t *                 DataLength
489     );
490 
491 _IRQL_requires_max_(APC_LEVEL)
492 NTSTATUS
493 DeviceHandleAacsReadMediaId(
494     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
495     _In_  WDFREQUEST               Request,
496     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
497     _Out_ size_t *                 DataLength
498     );
499 
500 _IRQL_requires_max_(APC_LEVEL)
501 NTSTATUS
502 DeviceHandleAacsReadBindingNonce(
503     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
504     _In_  WDFREQUEST               Request,
505     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
506     _Out_ size_t *                 DataLength
507     );
508 
509 _IRQL_requires_max_(APC_LEVEL)
510 NTSTATUS
511 DeviceHandleAacsGenerateBindingNonce(
512     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
513     _In_  WDFREQUEST               Request,
514     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
515     _Out_ size_t *                 DataLength
516     );
517 
518 _IRQL_requires_max_(APC_LEVEL)
519 NTSTATUS
520 RequestHandleEnableStreaming(
521     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
522     _In_  WDFREQUEST               Request,
523     _Out_ size_t *                 DataLength
524     );
525 
526 _IRQL_requires_max_(APC_LEVEL)
527 NTSTATUS
528 RequestHandleSendOpcInformation(
529     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
530     _In_  WDFREQUEST               Request,
531     _Out_ size_t *                 DataLength
532     );
533 
534 _IRQL_requires_max_(APC_LEVEL)
535 NTSTATUS
536 RequestHandleGetPerformance(
537     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
538     _In_  WDFREQUEST               Request,
539     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
540     _Out_ size_t *                 DataLength
541     );
542 
543 _IRQL_requires_max_(APC_LEVEL)
544 NTSTATUS
545 RequestHandleMcnSyncFakeIoctl(
546     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
547     _Out_ size_t *                 DataLength
548     );
549 
550 // Handlers that will be called by Sync process.
551 
552 // RequestHandleUnknownIoctl could be called at DISPATCH_LEVEL.
553 NTSTATUS
554 RequestHandleUnknownIoctl(
555     _In_ WDFDEVICE    Device,
556     _In_ WDFREQUEST   Request
557     );
558 
559 _IRQL_requires_max_(APC_LEVEL)
560 NTSTATUS
561 RequestHandleExclusiveAccessQueryLockState(
562     _In_ WDFDEVICE    Device,
563     _In_ WDFREQUEST   Request
564     );
565 
566 _IRQL_requires_max_(APC_LEVEL)
567 NTSTATUS
568 RequestHandleExclusiveAccessLockDevice(
569     _In_ WDFDEVICE    Device,
570     _In_ WDFREQUEST   Request
571     );
572 
573 _IRQL_requires_max_(APC_LEVEL)
574 NTSTATUS
575 RequestHandleExclusiveAccessUnlockDevice(
576     _In_ WDFDEVICE    Device,
577     _In_ WDFREQUEST   Request
578     );
579 
580 NTSTATUS
581 RequestHandleQueryPropertyDeviceUniqueId(
582     _In_ WDFDEVICE    Device,
583     _In_ WDFREQUEST   Request
584     );
585 
586 NTSTATUS
587 RequestHandleQueryPropertyWriteCache(
588     _In_ WDFDEVICE    Device,
589     _In_ WDFREQUEST   Request
590     );
591 
592 _IRQL_requires_max_(APC_LEVEL)
593 NTSTATUS
594 RequestHandleScsiPassThrough(
595     _In_ WDFDEVICE    Device,
596     _In_ WDFREQUEST   Request
597     );
598 
599 // Read/write handler called possibly at DISPATCH_LEVEL.
600 
601 NTSTATUS
602 RequestHandleReadWrite(
603     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
604     _In_  WDFREQUEST               Request,
605     _In_  WDF_REQUEST_PARAMETERS   RequestParameters
606     );
607 
608 //
609 //  I/O Request Validation helpers
610 //
611 
612 NTSTATUS
613 RequestValidateRawRead(
614     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
615     _In_  WDFREQUEST               Request,
616     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
617     _Out_ size_t *                 DataLength
618     );
619 
620 NTSTATUS
621 RequestValidateReadTocEx(
622     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
623     _In_  WDFREQUEST               Request,
624     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
625     _Out_ size_t *                 DataLength
626     );
627 
628 NTSTATUS
629 RequestValidateReadToc(
630     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
631     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
632     _Out_ size_t *                 DataLength
633     );
634 
635 NTSTATUS
636 RequestValidateGetLastSession(
637     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
638     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
639     _Out_ size_t *                 DataLength
640     );
641 
642 NTSTATUS
643 RequestValidateReadQChannel(
644     _In_  WDFREQUEST               Request,
645     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
646     _Out_ size_t *                 DataLength
647     );
648 
649 NTSTATUS
650 RequestValidateDvdReadStructure(
651     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
652     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
653     _Out_ size_t *                 DataLength
654     );
655 
656 NTSTATUS
657 RequestValidateDvdStartSession(
658     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
659     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
660     _Out_ size_t *                 DataLength
661     );
662 
663 NTSTATUS
664 RequestValidateDvdSendKey(
665     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
666     _In_  WDFREQUEST               Request,
667     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
668     _Out_ size_t *                 DataLength
669     );
670 
671 NTSTATUS
672 RequestValidateDvdReadKey(
673     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
674     _In_  WDFREQUEST               Request,
675     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
676     _Out_ size_t *                 DataLength
677     );
678 
679 NTSTATUS
680 RequestValidateGetConfiguration(
681     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
682     _In_  WDFREQUEST               Request,
683     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
684     _Out_ size_t *                 DataLength
685     );
686 
687 NTSTATUS
688 RequestValidateSetSpeed(
689     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
690     _In_  WDFREQUEST               Request,
691     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
692     _Out_ size_t *                 DataLength
693     );
694 
695 NTSTATUS
696 RequestValidateAacsReadMediaKeyBlock(
697     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
698     _In_  WDFREQUEST               Request,
699     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
700     _Out_ size_t *                 DataLength
701     );
702 
703 NTSTATUS
704 RequestValidateAacsStartSession(
705     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
706     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
707     _Out_ size_t *                 DataLength
708     );
709 
710 NTSTATUS
711 RequestValidateAacsSendCertificate(
712     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
713     _In_  WDFREQUEST               Request,
714     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
715     _Out_ size_t *                 DataLength
716     );
717 
718 NTSTATUS
719 RequestValidateAacsGetCertificate(
720     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
721     _In_  WDFREQUEST               Request,
722     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
723     _Out_ size_t *                 DataLength
724     );
725 
726 NTSTATUS
727 RequestValidateAacsGetChallengeKey(
728     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
729     _In_  WDFREQUEST               Request,
730     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
731     _Out_ size_t *                 DataLength
732     );
733 
734 NTSTATUS
735 RequestValidateAacsSendChallengeKey(
736     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
737     _In_  WDFREQUEST               Request,
738     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
739     _Out_ size_t *                 DataLength
740     );
741 
742 NTSTATUS
743 RequestValidateAacsReadVolumeId(
744     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
745     _In_  WDFREQUEST               Request,
746     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
747     _Out_ size_t *                 DataLength
748     );
749 
750 NTSTATUS
751 RequestValidateAacsReadSerialNumber(
752     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
753     _In_  WDFREQUEST               Request,
754     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
755     _Out_ size_t *                 DataLength
756     );
757 
758 NTSTATUS
759 RequestValidateAacsReadMediaId(
760     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
761     _In_  WDFREQUEST               Request,
762     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
763     _Out_ size_t *                 DataLength
764     );
765 
766 NTSTATUS
767 RequestValidateAacsBindingNonce(
768     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
769     _In_  WDFREQUEST               Request,
770     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
771     _Out_ size_t *                 DataLength
772     );
773 
774 NTSTATUS
775 RequestValidateExclusiveAccess(
776     _In_  WDFREQUEST               Request,
777     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
778     _Out_ size_t *                 DataLength
779     );
780 
781 NTSTATUS
782 RequestValidateEnableStreaming(
783     _In_  WDFREQUEST               Request,
784     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
785     _Out_ size_t *                 DataLength
786     );
787 
788 NTSTATUS
789 RequestValidateSendOpcInformation(
790     _In_  WDFREQUEST               Request,
791     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
792     _Out_ size_t *                 DataLength
793     );
794 
795 NTSTATUS
796 RequestValidateGetPerformance(
797     _In_  WDFREQUEST               Request,
798     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
799     _Out_ size_t *                 DataLength
800     );
801 
802 BOOLEAN
803 RequestIsRealtimeStreaming(
804     _In_  WDFREQUEST               Request,
805     _In_  BOOLEAN                  IsReadRequest
806     );
807 
808 NTSTATUS
809 RequestValidateReadWrite(
810     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
811     _In_  WDFREQUEST               Request,
812     _In_  WDF_REQUEST_PARAMETERS   RequestParameters
813     );
814 
815 NTSTATUS
816 RequestValidatePersistentReserve(
817     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
818     _In_  WDFREQUEST               Request,
819     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
820     _Out_ size_t *                 DataLength
821     );
822 
823 NTSTATUS
824 RequestValidateDvdEndSession(
825     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
826     _In_  WDFREQUEST               Request,
827     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
828     _Out_ size_t *                 DataLength
829     );
830 
831 NTSTATUS
832 RequestValidateAacsEndSession(
833     _In_  PCDROM_DEVICE_EXTENSION  DeviceExtension,
834     _In_  WDFREQUEST               Request,
835     _In_  WDF_REQUEST_PARAMETERS   RequestParameters,
836     _Out_ size_t *                 DataLength
837     );
838 
839 
840 //
841 // completion routines
842 //
843 
844 
845 
846 
847 #endif // __IOCTL_H__
848