/* * Copyright (c) 2019-2021 The Khronos Group Inc. * Copyright (c) 2019-2021 Valve Corporation * Copyright (c) 2019-2021 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Author: Lenny Komow * Author: Charles Giessen */ #pragma once typedef struct LoaderEnumAdapters2 { ULONG adapter_count; struct { UINT handle; LUID luid; ULONG source_count; BOOL present_move_regions_preferred; } * adapters; } LoaderEnumAdapters2; typedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderEnumAdapters2)(const LoaderEnumAdapters2 *); typedef enum AdapterInfoType { LOADER_QUERY_TYPE_REGISTRY = 48, } AdapterInfoType; typedef struct LoaderQueryAdapterInfo { UINT handle; AdapterInfoType type; VOID *private_data; UINT private_data_size; } LoaderQueryAdapterInfo; typedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderQueryAdapterInfo)(const LoaderQueryAdapterInfo *); typedef enum LoaderQueryRegistryType { LOADER_QUERY_REGISTRY_ADAPTER_KEY = 1, } LoaderQueryRegistryType; typedef enum LoaderQueryRegistryStatus { LOADER_QUERY_REGISTRY_STATUS_SUCCESS = 0, LOADER_QUERY_REGISTRY_STATUS_BUFFER_OVERFLOW = 1, } LoaderQueryRegistryStatus; typedef struct LoaderQueryRegistryFlags { union { struct { UINT translate_path : 1; UINT mutable_value : 1; UINT reserved : 30; }; UINT value; }; } LoaderQueryRegistryFlags; typedef struct LoaderQueryRegistryInfo { LoaderQueryRegistryType query_type; LoaderQueryRegistryFlags query_flags; WCHAR value_name[MAX_PATH]; ULONG value_type; ULONG physical_adapter_index; ULONG output_value_size; LoaderQueryRegistryStatus status; union { DWORD output_dword; UINT64 output_qword; WCHAR output_string[1]; BYTE output_binary[1]; }; } LoaderQueryRegistryInfo;