1878{
1883
1887
1888 if ((zpoddInfo !=
NULL) &&
1890 {
1891 inZeroPowerState =
TRUE;
1892 }
1893
1894 switch (ioctlCode)
1895 {
1896
1898 {
1900
1902 break;
1903 }
1904
1907 {
1909 "RequestDispatchToSequentialQueue: Get drive geometryEx\n"));
1912 {
1915 }
1916 else if (inZeroPowerState !=
FALSE)
1917 {
1919 }
1920 else
1921 {
1923 }
1924
1926 break;
1927 }
1928
1931 {
1933 "RequestDispatchToSequentialQueue: Get drive geometry\n"));
1936 {
1939 }
1940 else if (inZeroPowerState !=
FALSE)
1941 {
1943 }
1944 else
1945 {
1947 }
1948
1950 break;
1951 }
1952
1954 {
1956
1957 if (inZeroPowerState !=
FALSE)
1958 {
1960 }
1961
1963 break;
1964 }
1965
1967 {
1969
1970 if (inZeroPowerState !=
FALSE)
1971 {
1973 }
1974
1976 break;
1977 }
1978
1980 {
1982
1984 break;
1985 }
1986
1988 {
1990 "RequestDispatchToSequentialQueue: Play audio MSF\n"));
1991
1994 {
1996 }
1997 else
1998 {
2000 }
2001
2003 break;
2004 }
2005
2007 {
2009 "RequestDispatchToSequentialQueue: Seek audio MSF\n"));
2010
2013 {
2015 }
2016 else
2017 {
2019 }
2020
2022 break;
2023 }
2024
2026 {
2028 "RequestDispatchToSequentialQueue: Pause audio\n"));
2029
2032 break;
2033 }
2034
2036 {
2038 "RequestDispatchToSequentialQueue: Resume audio\n"));
2039
2042 break;
2043 }
2044
2046 {
2048
2050 break;
2051 }
2052
2054 {
2056 "RequestDispatchToSequentialQueue: Get volume control\n"));
2057
2060 {
2063 }
2064 else
2065 {
2067 }
2068
2070 break;
2071 }
2072
2074 {
2076 "RequestDispatchToSequentialQueue: Set volume control\n"));
2077
2080 {
2082 }
2083 else
2084 {
2086 }
2087
2089 break;
2090 }
2091
2093 {
2095 "RequestDispatchToSequentialQueue: Stop audio\n"));
2096
2099 break;
2100 }
2101
2104 {
2106 "RequestDispatchToSequentialQueue: [%p] Check Verify\n",
Request));
2107
2108
2109
2112 {
2115 }
2116 else if (inZeroPowerState !=
FALSE)
2117 {
2119 }
2120 else
2121 {
2123 }
2124
2126 break;
2127 }
2128
2130 {
2131
2134 break;
2135 }
2136
2138 {
2140 "RequestDispatchToSequentialQueue: [%p] IOCTL_DVD_READ_STRUCTURE\n",
Request));
2141
2143
2145 break;
2146 }
2147
2149 {
2151 "RequestDispatchToSequentialQueue: [%p] IOCTL_DVD_READ_KEY\n",
Request));
2152
2154
2156 break;
2157 }
2158
2160 {
2162 "RequestDispatchToSequentialQueue: [%p] IOCTL_DVD_START_SESSION\n",
Request));
2163
2165
2167 break;
2168 }
2169
2172 {
2174 "RequestDispatchToSequentialQueue: [%p] IOCTL_DVD_SEND_KEY\n",
Request));
2175
2177
2179 break;
2180 }
2181
2183 {
2185 "RequestDispatchToSequentialQueue: [%p] SetReadAhead\n",
Request));
2186
2189 {
2191 }
2192 else
2193 {
2195 }
2196
2198 break;
2199 }
2200
2202 {
2204
2206 break;
2207 }
2208
2210 {
2211 ULONG requiredSize = 0;
2212
2214 "RequestDispatchToSequentialQueue: Get drive layout\n"));
2215
2217
2219 requiredSize)
2220 {
2223 }
2224 else
2225 {
2227 }
2228
2230 break;
2231 }
2232
2234 {
2235 ULONG requiredSize = 0;
2236
2238 "RequestDispatchToSequentialQueue: Get drive layoutEx\n"));
2239
2240 requiredSize =
FIELD_OFFSET(DRIVE_LAYOUT_INFORMATION_EX, PartitionEntry[1]);
2241
2243 requiredSize)
2244 {
2247 }
2248 else
2249 {
2251 }
2252
2254 break;
2255 }
2256
2258 {
2260 "RequestDispatchToSequentialQueue: Get Partition Info\n"));
2261
2264 {
2267 }
2268 else
2269 {
2271 }
2272
2274 break;
2275 }
2276
2278 {
2280 "RequestDispatchToSequentialQueue: Get Partition InfoEx\n"));
2281
2284 {
2287 }
2288 else
2289 {
2291 }
2292
2294 break;
2295 }
2296
2298 {
2300 "RequestDispatchToSequentialQueue: IOCTL_DISK_VERIFY to device %p through request %p\n",
2303
2306 {
2308 }
2309 else
2310 {
2312 }
2313
2315 break;
2316 }
2317
2319 {
2321 "RequestDispatchToSequentialQueue: Disk Get Length InfoEx\n"));
2322
2325 {
2328 }
2329 else if (inZeroPowerState !=
FALSE)
2330 {
2332 }
2333 else
2334 {
2336 }
2337
2339 break;
2340 }
2341
2343 {
2345 "RequestDispatchToSequentialQueue: [%p] IOCTL_CDROM_GET_CONFIGURATION\n",
Request));
2346
2348
2350 break;
2351 }
2352
2354 {
2356 "RequestDispatchToSequentialQueue: [%p] IOCTL_CDROM_SET_SPEED\n",
Request));
2357
2359
2361 break;
2362 }
2363
2365 {
2367 "RequestDispatchToSequentialQueue: [%p] IOCTL_DVD_END_SESSION\n",
Request));
2368
2370
2372 break;
2373 }
2374
2376 {
2378 "RequestDispatchToSequentialQueue: [%p] IOCTL_AACS_END_SESSION\n",
Request));
2379
2381
2383 break;
2384 }
2385
2387 {
2389 "AACS: Querying full MKB with bufferSize of %x bytes\n",
2391 ));
2392
2394
2396 break;
2397 }
2398
2400 {
2402 "AACS: Requesting AGID\n"
2403 ));
2404
2406
2408 break;
2409 }
2410
2412 {
2414 "AACS: Sending host certificate to drive\n"
2415 ));
2416
2418
2420 break;
2421 }
2422
2424 {
2426 "AACS: Querying drive certificate\n"
2427 ));
2428
2430
2432 break;
2433 }
2434
2436 {
2438 "AACS: Querying drive challenge key\n"
2439 ));
2440
2442
2444 break;
2445 }
2446
2448 {
2450 "AACS: Sending drive challenge key\n"
2451 ));
2452
2454
2456 break;
2457 }
2458
2460 {
2462 "AACS: Reading volume ID\n"
2463 ));
2464
2466
2468 break;
2469 }
2470
2472 {
2474 "AACS: Reading Serial Number\n"
2475 ));
2476
2478
2480 break;
2481 }
2482
2484 {
2486 "AACS: Reading media ID\n"
2487 ));
2488
2490
2492 break;
2493 }
2494
2497 {
2499 {
2501 "AACS: Generating new binding nonce\n"
2502 ));
2503 }
2504 else
2505 {
2507 "AACS: Reading existing binding nonce\n"
2508 ));
2509 }
2510
2512
2514 break;
2515 }
2516
2518 {
2520 "RequestDispatchToSequentialQueue: [%p] IOCTL_CDROM_ENABLE_STREAMING\n",
Request));
2521
2523
2525 break;
2526 }
2527
2529 {
2531 "RequestDispatchToSequentialQueue: [%p] IOCTL_CDROM_SEND_OPC_INFORMATION\n",
Request));
2532
2534
2536 break;
2537 }
2538
2540 {
2542 "RequestDispatchToSequentialQueue: [%p] IOCTL_CDROM_GET_PERFORMANCE\n",
Request));
2543
2545
2547 break;
2548 }
2549
2552 {
2555 {
2557 }
2558 else
2559 {
2561 }
2562
2564 break;
2565 }
2566
2568 {
2571 {
2573 }
2574 else
2575 {
2577 }
2578
2580 break;
2581 }
2582
2585 {
2586
2589 break;
2590 }
2591
2594 {
2596
2598 break;
2599 }
2600
2604 {
2606
2608 break;
2609 }
2610
2612 {
2613
2615
2617
2619 break;
2620 }
2621
2623 {
2625 {
2628 }
2629 else if (inZeroPowerState !=
FALSE)
2630 {
2632 }
2633 else
2634 {
2636 }
2637
2639 break;
2640 }
2641
2643 {
2644
2646
2648 break;
2649 }
2650
2651#if (NTDDI_VERSION >= NTDDI_WIN8)
2653 {
2654
2655
2656
2657
2659
2661 break;
2662 }
2663
2666 {
2668
2670 break;
2671 }
2672#endif
2673
2674 default:
2675 {
2677 break;
2678 }
2679 }
2680
2682 {
2683 UCHAR currentStackLocationFlags = 0;
2685
2688 {
2689
2690
2693
2695 }
2696 else
2697 {
2699 {
2700
2702 }
2703
2705 {
2706
2708 }
2709 }
2710 }
2711
2713}
#define IOCTL_DVD_SEND_KEY
#define IOCTL_DISK_GET_DRIVE_GEOMETRY
#define IOCTL_DVD_END_SESSION
#define IOCTL_STORAGE_SET_READ_AHEAD
#define IOCTL_DVD_SEND_KEY2
#define IOCTL_DVD_GET_REGION
#define IOCTL_DISK_VERIFY
#define IOCTL_DVD_READ_KEY
#define IOCTL_DVD_START_SESSION
#define IOCTL_DISK_IS_WRITABLE
#define IOCTL_DVD_READ_STRUCTURE
#define IOCTL_VOLUME_POST_ONLINE
NTSTATUS RequestValidateReadToc(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsGetChallengeKey(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateSetSpeed(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateRawRead(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateSendOpcInformation(_In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsReadMediaKeyBlock(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsReadVolumeId(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateGetPerformance(_In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsStartSession(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateDvdStartSession(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsReadMediaId(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateGetLastSession(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateReadQChannel(_In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateGetConfiguration(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateReadTocEx(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsSendCertificate(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsSendChallengeKey(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateDvdEndSession(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateDvdReadStructure(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidatePersistentReserve(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsEndSession(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsGetCertificate(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateDvdSendKey(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateDvdReadKey(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsReadSerialNumber(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateAacsBindingNonce(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
NTSTATUS RequestValidateEnableStreaming(_In_ WDFREQUEST Request, _In_ WDF_REQUEST_PARAMETERS RequestParameters, _Out_ size_t *DataLength)
#define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
#define IOCTL_DISK_GET_PARTITION_INFO_EX
#define IOCTL_DISK_GET_DRIVE_LAYOUT_EX
#define IOCTL_STORAGE_CHECK_VERIFY2
#define IOCTL_STORAGE_LOAD_MEDIA2
struct _GET_LENGTH_INFORMATION GET_LENGTH_INFORMATION
struct _PARTITION_INFORMATION_EX PARTITION_INFORMATION_EX
#define IOCTL_DISK_GET_LENGTH_INFO
#define IOCTL_CDROM_ENABLE_STREAMING
struct _VOLUME_CONTROL VOLUME_CONTROL
#define IOCTL_CDROM_GET_LAST_SESSION
#define IOCTL_CDROM_GET_DRIVE_GEOMETRY_EX
#define IOCTL_CDROM_SEEK_AUDIO_MSF
#define IOCTL_CDROM_READ_TOC_EX
#define IOCTL_CDROM_GET_VOLUME
#define IOCTL_CDROM_PAUSE_AUDIO
#define IOCTL_CDROM_SET_VOLUME
#define IOCTL_CDROM_STOP_AUDIO
#define IOCTL_CDROM_READ_Q_CHANNEL
#define IOCTL_CDROM_GET_DRIVE_GEOMETRY
#define IOCTL_CDROM_SET_SPEED
#define IOCTL_CDROM_GET_CONFIGURATION
#define IOCTL_CDROM_PLAY_AUDIO_MSF
#define IOCTL_CDROM_RESUME_AUDIO
#define IOCTL_CDROM_SEND_OPC_INFORMATION
#define IOCTL_CDROM_READ_TOC
#define IOCTL_CDROM_RAW_READ
#define IOCTL_CDROM_GET_PERFORMANCE
struct _DISK_GEOMETRY DISK_GEOMETRY
#define IOCTL_DISK_GET_DRIVE_LAYOUT
#define IOCTL_DISK_ARE_VOLUMES_READY
struct _PARTITION_INFORMATION PARTITION_INFORMATION
#define IOCTL_DISK_GET_PARTITION_INFO
#define IOCTL_STORAGE_RELEASE
#define IOCTL_STORAGE_CHECK_VERIFY
#define IOCTL_STORAGE_READ_CAPACITY
#define IOCTL_STORAGE_PERSISTENT_RESERVE_IN
#define IOCTL_STORAGE_PERSISTENT_RESERVE_OUT
#define IOCTL_STORAGE_LOAD_MEDIA
#define IOCTL_STORAGE_RESERVE
#define IOCTL_STORAGE_FIND_NEW_DEVICES
#define IOCTL_STORAGE_MCN_CONTROL
#define IOCTL_STORAGE_CHECK_PRIORITY_HINT_SUPPORT
#define IOCTL_STORAGE_EJECTION_CONTROL
#define IOCTL_STORAGE_MEDIA_REMOVAL
#define STATUS_NOT_SUPPORTED
VOID NTAPI IoInvalidateDeviceRelations(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_RELATION_TYPE Type)
#define IOCTL_AACS_READ_MEDIA_KEY_BLOCK
#define IOCTL_AACS_START_SESSION
#define IOCTL_AACS_READ_BINDING_NONCE
#define IOCTL_AACS_SEND_CHALLENGE_KEY
#define IOCTL_AACS_READ_VOLUME_ID
#define IOCTL_AACS_END_SESSION
#define IOCTL_AACS_GET_CHALLENGE_KEY
#define IOCTL_AACS_SEND_CERTIFICATE
#define IOCTL_AACS_GENERATE_BINDING_NONCE
#define IOCTL_AACS_GET_CERTIFICATE
#define IOCTL_AACS_READ_SERIAL_NUMBER
#define IOCTL_AACS_READ_MEDIA_ID
#define STATUS_BUFFER_TOO_SMALL
#define TRACE_LEVEL_WARNING
#define FIELD_OFFSET(t, f)
#define STATUS_NO_MEDIA_IN_DEVICE