adapters.h 2.3 KB

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