15db71995Sopenharmony_ci/* 25db71995Sopenharmony_ci * Copyright (c) 2019-2021 The Khronos Group Inc. 35db71995Sopenharmony_ci * Copyright (c) 2019-2021 Valve Corporation 45db71995Sopenharmony_ci * Copyright (c) 2019-2021 LunarG, Inc. 55db71995Sopenharmony_ci * 65db71995Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 75db71995Sopenharmony_ci * you may not use this file except in compliance with the License. 85db71995Sopenharmony_ci * You may obtain a copy of the License at 95db71995Sopenharmony_ci * 105db71995Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 115db71995Sopenharmony_ci * 125db71995Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 135db71995Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 145db71995Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 155db71995Sopenharmony_ci * See the License for the specific language governing permissions and 165db71995Sopenharmony_ci * limitations under the License. 175db71995Sopenharmony_ci * 185db71995Sopenharmony_ci * Author: Lenny Komow <lenny@lunarg.com> 195db71995Sopenharmony_ci * Author: Charles Giessen <charles@lunarg.com> 205db71995Sopenharmony_ci */ 215db71995Sopenharmony_ci 225db71995Sopenharmony_ci#pragma once 235db71995Sopenharmony_ci 245db71995Sopenharmony_citypedef struct LoaderEnumAdapters2 { 255db71995Sopenharmony_ci ULONG adapter_count; 265db71995Sopenharmony_ci struct { 275db71995Sopenharmony_ci UINT handle; 285db71995Sopenharmony_ci LUID luid; 295db71995Sopenharmony_ci ULONG source_count; 305db71995Sopenharmony_ci BOOL present_move_regions_preferred; 315db71995Sopenharmony_ci } *adapters; 325db71995Sopenharmony_ci} LoaderEnumAdapters2; 335db71995Sopenharmony_ci 345db71995Sopenharmony_citypedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderEnumAdapters2)(const LoaderEnumAdapters2 *); 355db71995Sopenharmony_ci 365db71995Sopenharmony_citypedef enum AdapterInfoType { 375db71995Sopenharmony_ci LOADER_QUERY_TYPE_REGISTRY = 48, 385db71995Sopenharmony_ci} AdapterInfoType; 395db71995Sopenharmony_ci 405db71995Sopenharmony_citypedef struct LoaderQueryAdapterInfo { 415db71995Sopenharmony_ci UINT handle; 425db71995Sopenharmony_ci AdapterInfoType type; 435db71995Sopenharmony_ci VOID *private_data; 445db71995Sopenharmony_ci UINT private_data_size; 455db71995Sopenharmony_ci} LoaderQueryAdapterInfo; 465db71995Sopenharmony_ci 475db71995Sopenharmony_citypedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderQueryAdapterInfo)(const LoaderQueryAdapterInfo *); 485db71995Sopenharmony_ci 495db71995Sopenharmony_citypedef enum LoaderQueryRegistryType { 505db71995Sopenharmony_ci LOADER_QUERY_REGISTRY_ADAPTER_KEY = 1, 515db71995Sopenharmony_ci} LoaderQueryRegistryType; 525db71995Sopenharmony_ci 535db71995Sopenharmony_citypedef enum LoaderQueryRegistryStatus { 545db71995Sopenharmony_ci LOADER_QUERY_REGISTRY_STATUS_SUCCESS = 0, 555db71995Sopenharmony_ci LOADER_QUERY_REGISTRY_STATUS_BUFFER_OVERFLOW = 1, 565db71995Sopenharmony_ci} LoaderQueryRegistryStatus; 575db71995Sopenharmony_ci 585db71995Sopenharmony_citypedef struct LoaderQueryRegistryFlags { 595db71995Sopenharmony_ci union { 605db71995Sopenharmony_ci struct { 615db71995Sopenharmony_ci UINT translate_path : 1; 625db71995Sopenharmony_ci UINT mutable_value : 1; 635db71995Sopenharmony_ci UINT reserved : 30; 645db71995Sopenharmony_ci }; 655db71995Sopenharmony_ci UINT value; 665db71995Sopenharmony_ci }; 675db71995Sopenharmony_ci} LoaderQueryRegistryFlags; 685db71995Sopenharmony_ci 695db71995Sopenharmony_citypedef struct LoaderQueryRegistryInfo { 705db71995Sopenharmony_ci LoaderQueryRegistryType query_type; 715db71995Sopenharmony_ci LoaderQueryRegistryFlags query_flags; 725db71995Sopenharmony_ci WCHAR value_name[MAX_PATH]; 735db71995Sopenharmony_ci ULONG value_type; 745db71995Sopenharmony_ci ULONG physical_adapter_index; 755db71995Sopenharmony_ci ULONG output_value_size; 765db71995Sopenharmony_ci LoaderQueryRegistryStatus status; 775db71995Sopenharmony_ci union { 785db71995Sopenharmony_ci DWORD output_dword; 795db71995Sopenharmony_ci UINT64 output_qword; 805db71995Sopenharmony_ci WCHAR output_string[1]; 815db71995Sopenharmony_ci BYTE output_binary[1]; 825db71995Sopenharmony_ci }; 835db71995Sopenharmony_ci} LoaderQueryRegistryInfo; 84