1*1cddb830SAndroid Build Coastguard Worker /* 2*1cddb830SAndroid Build Coastguard Worker * Copyright (c) 2019 The Khronos Group Inc. 3*1cddb830SAndroid Build Coastguard Worker * Copyright (c) 2019 Valve Corporation 4*1cddb830SAndroid Build Coastguard Worker * Copyright (c) 2019 LunarG, Inc. 5*1cddb830SAndroid Build Coastguard Worker * 6*1cddb830SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 7*1cddb830SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 8*1cddb830SAndroid Build Coastguard Worker * You may obtain a copy of the License at 9*1cddb830SAndroid Build Coastguard Worker * 10*1cddb830SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 11*1cddb830SAndroid Build Coastguard Worker * 12*1cddb830SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 13*1cddb830SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 14*1cddb830SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15*1cddb830SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 16*1cddb830SAndroid Build Coastguard Worker * limitations under the License. 17*1cddb830SAndroid Build Coastguard Worker * 18*1cddb830SAndroid Build Coastguard Worker * Author: Lenny Komow <[email protected]> 19*1cddb830SAndroid Build Coastguard Worker */ 20*1cddb830SAndroid Build Coastguard Worker 21*1cddb830SAndroid Build Coastguard Worker typedef struct LoaderEnumAdapters2 { 22*1cddb830SAndroid Build Coastguard Worker ULONG adapter_count; 23*1cddb830SAndroid Build Coastguard Worker struct { 24*1cddb830SAndroid Build Coastguard Worker UINT handle; 25*1cddb830SAndroid Build Coastguard Worker LUID luid; 26*1cddb830SAndroid Build Coastguard Worker ULONG source_count; 27*1cddb830SAndroid Build Coastguard Worker BOOL present_move_regions_preferred; 28*1cddb830SAndroid Build Coastguard Worker } * adapters; 29*1cddb830SAndroid Build Coastguard Worker } LoaderEnumAdapters2; 30*1cddb830SAndroid Build Coastguard Worker 31*1cddb830SAndroid Build Coastguard Worker typedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderEnumAdapters2)(const LoaderEnumAdapters2 *); 32*1cddb830SAndroid Build Coastguard Worker 33*1cddb830SAndroid Build Coastguard Worker typedef enum AdapterInfoType { 34*1cddb830SAndroid Build Coastguard Worker LOADER_QUERY_TYPE_REGISTRY = 48, 35*1cddb830SAndroid Build Coastguard Worker } AdapterInfoType; 36*1cddb830SAndroid Build Coastguard Worker 37*1cddb830SAndroid Build Coastguard Worker typedef struct LoaderQueryAdapterInfo { 38*1cddb830SAndroid Build Coastguard Worker UINT handle; 39*1cddb830SAndroid Build Coastguard Worker AdapterInfoType type; 40*1cddb830SAndroid Build Coastguard Worker VOID *private_data; 41*1cddb830SAndroid Build Coastguard Worker UINT private_data_size; 42*1cddb830SAndroid Build Coastguard Worker } LoaderQueryAdapterInfo; 43*1cddb830SAndroid Build Coastguard Worker 44*1cddb830SAndroid Build Coastguard Worker typedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderQueryAdapterInfo)(const LoaderQueryAdapterInfo *); 45*1cddb830SAndroid Build Coastguard Worker 46*1cddb830SAndroid Build Coastguard Worker typedef enum LoaderQueryRegistryType { 47*1cddb830SAndroid Build Coastguard Worker LOADER_QUERY_REGISTRY_ADAPTER_KEY = 1, 48*1cddb830SAndroid Build Coastguard Worker } LoaderQueryRegistryType; 49*1cddb830SAndroid Build Coastguard Worker 50*1cddb830SAndroid Build Coastguard Worker typedef enum LoaderQueryRegistryStatus { 51*1cddb830SAndroid Build Coastguard Worker LOADER_QUERY_REGISTRY_STATUS_SUCCESS = 0, 52*1cddb830SAndroid Build Coastguard Worker LOADER_QUERY_REGISTRY_STATUS_BUFFER_OVERFLOW = 1, 53*1cddb830SAndroid Build Coastguard Worker } LoaderQueryRegistryStatus; 54*1cddb830SAndroid Build Coastguard Worker 55*1cddb830SAndroid Build Coastguard Worker typedef struct LoaderQueryRegistryFlags { 56*1cddb830SAndroid Build Coastguard Worker union { 57*1cddb830SAndroid Build Coastguard Worker struct { 58*1cddb830SAndroid Build Coastguard Worker UINT translate_path : 1; 59*1cddb830SAndroid Build Coastguard Worker UINT mutable_value : 1; 60*1cddb830SAndroid Build Coastguard Worker UINT reserved : 30; 61*1cddb830SAndroid Build Coastguard Worker }; 62*1cddb830SAndroid Build Coastguard Worker UINT value; 63*1cddb830SAndroid Build Coastguard Worker }; 64*1cddb830SAndroid Build Coastguard Worker } LoaderQueryRegistryFlags; 65*1cddb830SAndroid Build Coastguard Worker 66*1cddb830SAndroid Build Coastguard Worker typedef struct LoaderQueryRegistryInfo { 67*1cddb830SAndroid Build Coastguard Worker LoaderQueryRegistryType query_type; 68*1cddb830SAndroid Build Coastguard Worker LoaderQueryRegistryFlags query_flags; 69*1cddb830SAndroid Build Coastguard Worker WCHAR value_name[MAX_PATH]; 70*1cddb830SAndroid Build Coastguard Worker ULONG value_type; 71*1cddb830SAndroid Build Coastguard Worker ULONG physical_adapter_index; 72*1cddb830SAndroid Build Coastguard Worker ULONG output_value_size; 73*1cddb830SAndroid Build Coastguard Worker LoaderQueryRegistryStatus status; 74*1cddb830SAndroid Build Coastguard Worker union { 75*1cddb830SAndroid Build Coastguard Worker DWORD output_dword; 76*1cddb830SAndroid Build Coastguard Worker UINT64 output_qword; 77*1cddb830SAndroid Build Coastguard Worker WCHAR output_string[1]; 78*1cddb830SAndroid Build Coastguard Worker BYTE output_binary[1]; 79*1cddb830SAndroid Build Coastguard Worker }; 80*1cddb830SAndroid Build Coastguard Worker } LoaderQueryRegistryInfo; 81