node-gpuinfo 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +336 -0
  3. package/binding.gyp +69 -0
  4. package/build/Release/gpu.exp +0 -0
  5. package/build/Release/gpu.lib +0 -0
  6. package/build/Release/gpu.node +0 -0
  7. package/build/Release/gpu.pdb +0 -0
  8. package/build/binding.sln +19 -0
  9. package/build/gpu.vcxproj +175 -0
  10. package/build/gpu.vcxproj.filters +169 -0
  11. package/example.js +69 -0
  12. package/index.js +33 -0
  13. package/package.json +68 -0
  14. package/src/binding.cpp +201 -0
  15. package/src/gpu_info.c +130 -0
  16. package/src/gpu_info.h +86 -0
  17. package/src/includes/adlx/ADLX.h +367 -0
  18. package/src/includes/adlx/ADLXDefines.h +1345 -0
  19. package/src/includes/adlx/ADLXHelper/ADLXHelper.c +175 -0
  20. package/src/includes/adlx/ADLXHelper/ADLXHelper.h +245 -0
  21. package/src/includes/adlx/ADLXHelper/WinAPIS.c +64 -0
  22. package/src/includes/adlx/ADLXStructures.h +206 -0
  23. package/src/includes/adlx/ADLXVersion.h +18 -0
  24. package/src/includes/adlx/I3DSettings.h +3476 -0
  25. package/src/includes/adlx/I3DSettings1.h +292 -0
  26. package/src/includes/adlx/I3DSettings2.h +317 -0
  27. package/src/includes/adlx/IApplications.h +397 -0
  28. package/src/includes/adlx/IChangedEvent.h +71 -0
  29. package/src/includes/adlx/ICollections.h +325 -0
  30. package/src/includes/adlx/IDesktops.h +918 -0
  31. package/src/includes/adlx/IDisplay3DLUT.h +663 -0
  32. package/src/includes/adlx/IDisplayGamma.h +683 -0
  33. package/src/includes/adlx/IDisplayGamut.h +760 -0
  34. package/src/includes/adlx/IDisplaySettings.h +3476 -0
  35. package/src/includes/adlx/IDisplays.h +2676 -0
  36. package/src/includes/adlx/IDisplays1.h +191 -0
  37. package/src/includes/adlx/IDisplays2.h +188 -0
  38. package/src/includes/adlx/IDisplays3.h +256 -0
  39. package/src/includes/adlx/IGPUAutoTuning.h +460 -0
  40. package/src/includes/adlx/IGPUManualFanTuning.h +1007 -0
  41. package/src/includes/adlx/IGPUManualGFXTuning.h +607 -0
  42. package/src/includes/adlx/IGPUManualPowerTuning.h +340 -0
  43. package/src/includes/adlx/IGPUManualVRAMTuning.h +576 -0
  44. package/src/includes/adlx/IGPUPresetTuning.h +469 -0
  45. package/src/includes/adlx/IGPUTuning.h +1239 -0
  46. package/src/includes/adlx/IGPUTuning1.h +197 -0
  47. package/src/includes/adlx/II2C.h +198 -0
  48. package/src/includes/adlx/ILog.h +72 -0
  49. package/src/includes/adlx/IMultiMedia.h +578 -0
  50. package/src/includes/adlx/IPerformanceMonitoring.h +2520 -0
  51. package/src/includes/adlx/IPerformanceMonitoring1.h +134 -0
  52. package/src/includes/adlx/IPerformanceMonitoring2.h +341 -0
  53. package/src/includes/adlx/IPerformanceMonitoring3.h +199 -0
  54. package/src/includes/adlx/IPowerTuning.h +473 -0
  55. package/src/includes/adlx/IPowerTuning1.h +515 -0
  56. package/src/includes/adlx/ISmartAccessMemory.h +114 -0
  57. package/src/includes/adlx/ISystem.h +1557 -0
  58. package/src/includes/adlx/ISystem1.h +237 -0
  59. package/src/includes/adlx/ISystem2.h +643 -0
  60. package/src/linux/amd_linux.c +269 -0
  61. package/src/linux/intel_linux.c +20 -0
  62. package/src/linux/nvidia_linux.c +257 -0
  63. package/src/macos/amd_mac.c +131 -0
  64. package/src/macos/intel_mac.c +131 -0
  65. package/src/macos/nvidia_mac.c +21 -0
  66. package/src/vendor/amd.c +37 -0
  67. package/src/vendor/intel.c +37 -0
  68. package/src/vendor/nvidia.c +37 -0
  69. package/src/windows/amd_windows.c +468 -0
  70. package/src/windows/intel_windows.c +157 -0
  71. package/src/windows/nvidia_windows.c +252 -0
@@ -0,0 +1,918 @@
1
+ //
2
+ // Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
3
+ //
4
+ //-------------------------------------------------------------------------------------------------
5
+
6
+ #ifndef ADLX_IDESKTOPS_H
7
+ #define ADLX_IDESKTOPS_H
8
+ #pragma once
9
+
10
+ #include "ADLXStructures.h"
11
+ #include "ICollections.h"
12
+
13
+ //-------------------------------------------------------------------------------------------------
14
+ //IDesktops.h - Interfaces for ADLX Desktops functionality, including AMD Eyefinity
15
+
16
+ //Desktop interface: Describe a generic desktop
17
+ #pragma region IADLXDesktop
18
+ #if defined (__cplusplus)
19
+ namespace adlx
20
+ {
21
+ class ADLX_NO_VTABLE IADLXDisplayList;
22
+ class ADLX_NO_VTABLE IADLXDesktop : public IADLXInterface
23
+ {
24
+ public:
25
+ ADLX_DECLARE_IID (L"IADLXDesktop")
26
+ /**
27
+ *@page DOX_IADLXDesktop_Orientation Orientation
28
+ *@ENG_START_DOX @brief Gets the orientation of a desktop. @ENG_END_DOX
29
+ *
30
+ *@syntax
31
+ *@codeStart
32
+ * @ref ADLX_RESULT Orientation (@ref ADLX_ORIENTATION* orientation)
33
+ *@codeEnd
34
+ *
35
+ *@params
36
+ *@paramrow{1.,[out] ,orientation,@ref ADLX_ORIENTATION* ,@ENG_START_DOX The pointer to a variable where the orientation is returned. @ENG_END_DOX}
37
+ *
38
+ *@retvalues
39
+ *@ENG_START_DOX If the orientation is successfully returned, __ADLX_OK__ is returned.<br>
40
+ * If the orientation is not successfully returned, an error code is returned.<br>
41
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
42
+ *
43
+ *@detaileddesc
44
+ *@ENG_START_DOX @details The desktop orientation indicates the rotation angle of the desktop.<br> @ENG_END_DOX
45
+ *
46
+ *@copydoc IADLXDesktop_REQ_TABLE
47
+ *
48
+ */
49
+ virtual ADLX_RESULT ADLX_STD_CALL Orientation (ADLX_ORIENTATION* orientation) = 0;
50
+ /**
51
+ *@page DOX_IADLXDesktop_Size Size
52
+ *@ENG_START_DOX @brief Gets the size of a desktop. @ENG_END_DOX
53
+ *
54
+ *@syntax
55
+ *@codeStart
56
+ * @ref ADLX_RESULT Size (adlx_int* width, adlx_int* height)
57
+ *@codeEnd
58
+ *
59
+ *@params
60
+ *@paramrow{1.,[out] ,width,adlx_int* ,@ENG_START_DOX The pointer to a variable where the width is returned. @ENG_END_DOX}
61
+ *@paramrow{2.,[out] ,height,adlx_int* ,@ENG_START_DOX The pointer to a variable where the height is returned. @ENG_END_DOX}
62
+ *
63
+ *@retvalues
64
+ *@ENG_START_DOX If the width and height are successfully returned, __ADLX_OK__ is returned.<br>
65
+ * If the width and height are not successfully returned, an error code is returned.<br>
66
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
67
+ *
68
+ *@detaileddesc
69
+ *@ENG_START_DOX @details The desktop size represents the pixel resolution of the desktop.
70
+ * @ENG_END_DOX
71
+ *
72
+ *@copydoc IADLXDesktop_REQ_TABLE
73
+ *
74
+ */
75
+ virtual ADLX_RESULT ADLX_STD_CALL Size (adlx_int* width, adlx_int* height) = 0;
76
+ /**
77
+ *@page DOX_IADLXDesktop_TopLeft TopLeft
78
+ *@ENG_START_DOX @brief Get the top left position of a desktop in Windows screen coordinates. @ENG_END_DOX
79
+ *
80
+ *@syntax
81
+ *@codeStart
82
+ * @ref ADLX_RESULT TopLeft (@ref ADLX_Point* locationTopLeft)
83
+ *@codeEnd
84
+ *
85
+ *@params
86
+ *@paramrow{1.,[out] ,locationTopLeft,@ref ADLX_Point* ,@ENG_START_DOX The pointer to a variable where the top left position is returned. @ENG_END_DOX}
87
+ *
88
+ *@retvalues
89
+ *@ENG_START_DOX If the top left position is successfully returned, __ADLX_OK__ is returned.<br>
90
+ * If the top left position is not successfully returned, an error code is returned.<br>
91
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
92
+ *
93
+ *@detaileddesc
94
+ *@ENG_START_DOX @details The desktop top left position is measured in screen coordinates.<br> @ENG_END_DOX
95
+ *
96
+ *@copydoc IADLXDesktop_REQ_TABLE
97
+ *
98
+ */
99
+ virtual ADLX_RESULT ADLX_STD_CALL TopLeft (ADLX_Point* locationTopLeft) = 0;
100
+ /**
101
+ *@page DOX_IADLXDesktop_Type Type
102
+ *@ENG_START_DOX @brief Get the type of a desktop. @ENG_END_DOX
103
+ *
104
+ *@syntax
105
+ *@codeStart
106
+ * @ref ADLX_RESULT Type (@ref ADLX_DESKTOP_TYPE* desktopType)
107
+ *@codeEnd
108
+ *
109
+ *@params
110
+ *@paramrow{1.,[out] ,desktopType,@ref ADLX_DESKTOP_TYPE* ,@ENG_START_DOX The pointer to a variable where the desktop type is returned. @ENG_END_DOX}
111
+ *
112
+ *@retvalues
113
+ *@ENG_START_DOX If the desktop type is successfully returned, __ADLX_OK__ is returned.<br>
114
+ * If the desktop type is not successfully returned, an error code is returned.<br>
115
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
116
+ *
117
+ *@detaileddesc
118
+ *@ENG_START_DOX @details The desktop type indicates if the desktop is single, duplicate or AMD Eyefinity.<br> @ENG_END_DOX
119
+ *
120
+ *@copydoc IADLXDesktop_REQ_TABLE
121
+ *
122
+ */
123
+ virtual ADLX_RESULT ADLX_STD_CALL Type (ADLX_DESKTOP_TYPE* desktopType) = 0;
124
+ /**
125
+ *@page DOX_IADLXDesktop_GetNumberOfDisplays GetNumberOfDisplays
126
+ *@ENG_START_DOX @brief Gets the number of displays that show pixels from a desktop. @ENG_END_DOX
127
+ *
128
+ *@syntax
129
+ *@codeStart
130
+ * @ref ADLX_RESULT GetNumberOfDisplays (adlx_uint* numDisplays)
131
+ *@codeEnd
132
+ *
133
+ *@params
134
+ *@paramrow{1.,[out] ,numDisplays,adlx_uint* ,@ENG_START_DOX The pointer to a variable where the number of displays is returned. @ENG_END_DOX}
135
+ *
136
+ *@retvalues
137
+ *@ENG_START_DOX If the number of displays is successfully returned, __ADLX_OK__ is returned.<br>
138
+ * If the number of displays is not successfully returned, an error code is returned.<br>
139
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
140
+ *
141
+ *@detaileddesc
142
+ *@ENG_START_DOX @details
143
+ * The number of displays that show pixels from a desktop depends on the desktop @ref ADLX_DESKTOP_TYPE "Type".<br>
144
+ * A single desktop is associated with one display.<br>
145
+ * A duplicate desktop is associated with two or more displays.<br>
146
+ * An AMD Eyefinity desktop is associated with two or more displays.<br> @ENG_END_DOX
147
+ *
148
+ *@copydoc IADLXDesktop_REQ_TABLE
149
+ *
150
+ */
151
+ virtual ADLX_RESULT ADLX_STD_CALL GetNumberOfDisplays (adlx_uint* numDisplays) = 0;
152
+ /**
153
+ *@page DOX_IADLXDesktop_GetDisplays GetDisplays
154
+ *@ENG_START_DOX @brief Gets the reference counted list of displays that show pixels from a desktop. @ENG_END_DOX
155
+ *
156
+ *@syntax
157
+ *@codeStart
158
+ * @ref ADLX_RESULT GetDisplays (@ref DOX_IADLXDisplayList** ppDisplays)
159
+ *@codeEnd
160
+ *
161
+ *@params
162
+ *@paramrow{1.,[out] ,ppDisplays,@ref DOX_IADLXDisplayList** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppDisplays__ to __nullptr__. @ENG_END_DOX}
163
+ *
164
+ *@retvalues
165
+ *@ENG_START_DOX If the list of displays is successfully returned, __ADLX_OK__ is returned.<br>
166
+ * If the list of displays is not successfully returned, an error code is returned.<br>
167
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
168
+ *
169
+ *@detaileddesc
170
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
171
+ *
172
+ *@addinfo
173
+ *@ENG_START_DOX In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation. @ENG_END_DOX
174
+ *
175
+ *@copydoc IADLXDesktop_REQ_TABLE
176
+ *
177
+ */
178
+ virtual ADLX_RESULT ADLX_STD_CALL GetDisplays (IADLXDisplayList** ppDisplays) = 0;
179
+ }; //IADLXDesktop
180
+ //----------------------------------------------------------------------------------------------
181
+ typedef IADLXInterfacePtr_T<IADLXDesktop> IADLXDesktopPtr;
182
+ } //namespace adlx
183
+ #else //__cplusplus
184
+ ADLX_DECLARE_IID (IADLXDesktop, L"IADLXDesktop")
185
+ typedef struct IADLXDesktop IADLXDesktop;
186
+ typedef struct IADLXDisplayList IADLXDisplayList;
187
+ typedef struct IADLXDesktopVtbl
188
+ {
189
+ //IADLXInterface
190
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXDesktop* pThis);
191
+ adlx_long (ADLX_STD_CALL *Release)(IADLXDesktop* pThis);
192
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXDesktop* pThis, const wchar_t* interfaceId, void** ppInterface);
193
+
194
+ //IADLXDesktop
195
+ ADLX_RESULT (ADLX_STD_CALL *Orientation) (IADLXDesktop* pThis, ADLX_ORIENTATION* orientation);
196
+ ADLX_RESULT (ADLX_STD_CALL *Size) (IADLXDesktop* pThis, adlx_int* width, adlx_int* height);
197
+ ADLX_RESULT (ADLX_STD_CALL *TopLeft) (IADLXDesktop* pThis, ADLX_Point* locationTopLeft);
198
+ ADLX_RESULT (ADLX_STD_CALL *Type) (IADLXDesktop* pThis, ADLX_DESKTOP_TYPE* desktopType);
199
+ ADLX_RESULT (ADLX_STD_CALL *GetNumberOfDisplays) (IADLXDesktop* pThis, adlx_uint* numDisplays);
200
+ ADLX_RESULT (ADLX_STD_CALL *GetDisplays) (IADLXDesktop* pThis, IADLXDisplayList** ppDisplays);
201
+ }IADLXDesktopVtbl;
202
+ struct IADLXDesktop { const IADLXDesktopVtbl *pVtbl; };
203
+ #endif //__cplusplus
204
+ #pragma endregion IADLXDesktop
205
+
206
+
207
+ //AMD Eyefinity Desktop interface: describe and AMD Eyefinity desktop
208
+ #pragma region IADLXEyefinityDesktop
209
+ #if defined (__cplusplus)
210
+ namespace adlx
211
+ {
212
+ class ADLX_NO_VTABLE IADLXDisplay;
213
+ class ADLX_NO_VTABLE IADLXEyefinityDesktop : public IADLXInterface
214
+ {
215
+ public:
216
+ ADLX_DECLARE_IID (L"IADLXEyefinityDesktop")
217
+ /**
218
+ *@page DOX_IADLXEyefinityDesktop_GridSize GridSize
219
+ *@ENG_START_DOX @brief Gets the number of rows and columns that describes the display composition of an AMD Eyefinity desktop. @ENG_END_DOX
220
+ *
221
+ *@syntax
222
+ *@codeStart
223
+ * @ref ADLX_RESULT GridSize (adlx_uint* rows, adlx_uint* cols)
224
+ *@codeEnd
225
+ *
226
+ *@params
227
+ *@paramrow{1.,[out] ,rows,adlx_uint* ,@ENG_START_DOX The pointer to a variable where the number of rows is returned. @ENG_END_DOX}
228
+ *@paramrow{2.,[out] ,cols,adlx_uint* ,@ENG_START_DOX The pointer to a variable where the number of cols is returned. @ENG_END_DOX}
229
+ *
230
+ *@retvalues
231
+ *@ENG_START_DOX If the number of rows and cols are successfully returned, __ADLX_OK__ is returned.<br>
232
+ * If the number of rows and cols are not successfully returned, an error code is returned.<br>
233
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
234
+ *
235
+ *@detaileddesc
236
+ *@ENG_START_DOX @details The grid location of an AMD Eyefinity desktop is identified by a row and a column from zero to the respective value returned from this method minus one. @ENG_END_DOX
237
+ *
238
+ *@copydoc IADLXEyefinityDesktop_REQ_TABLE
239
+ *
240
+ */
241
+ virtual ADLX_RESULT ADLX_STD_CALL GridSize (adlx_uint* rows, adlx_uint* cols) = 0;
242
+ /**
243
+ *@page DOX_IADLXEyefinityDesktop_GetDisplay GetDisplay
244
+ *@ENG_START_DOX @brief Gets the reference counted display interface for the display that shows the portion of an AMD Eyefinity desktop at the requested grid location. @ENG_END_DOX
245
+ *
246
+ *@syntax
247
+ *@codeStart
248
+ * @ref ADLX_RESULT GetDisplay (adlx_uint row, adlx_uint col, @ref DOX_IADLXDisplay** ppDisplay)
249
+ *@codeEnd
250
+ *
251
+ *@params
252
+ *@paramrow{1.,[in] ,row,adlx_uint ,@ENG_START_DOX The row of the AMD Eyefinity grid location for the requested display. @ENG_END_DOX}
253
+ *@paramrow{2.,[in] ,col,adlx_uint ,@ENG_START_DOX The column of the AMD Eyefinity grid location for the requested display. @ENG_END_DOX}
254
+ *@paramrow{3.,[out] ,ppDisplay,@ref DOX_IADLXDisplay** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppDisplay__ to __nullptr__. @ENG_END_DOX}
255
+ *
256
+ *@retvalues
257
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
258
+ * If the interface is not successfully returned, an error code is returned.<br>
259
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
260
+ *
261
+ *@detaileddesc
262
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
263
+ *
264
+ *@addinfo
265
+ *@ENG_START_DOX In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation. @ENG_END_DOX
266
+ *
267
+ *@copydoc IADLXEyefinityDesktop_REQ_TABLE
268
+ *
269
+ */
270
+ virtual ADLX_RESULT ADLX_STD_CALL GetDisplay (adlx_uint row, adlx_uint col, IADLXDisplay** ppDisplay) = 0;
271
+ /**
272
+ *@page DOX_IADLXEyefinityDesktop_DisplayOrientation DisplayOrientation
273
+ *@ENG_START_DOX @brief Gets the orientation of the display area on an AMD Eyefinity desktop at a given grid location. @ENG_END_DOX
274
+ *
275
+ *@syntax
276
+ *@codeStart
277
+ * @ref ADLX_RESULT DisplayOrientation (adlx_uint row, adlx_uint col, @ref ADLX_ORIENTATION* displayOrientation)
278
+ *@codeEnd
279
+ *
280
+ *@params
281
+ *@paramrow{1.,[in] ,row,adlx_uint ,@ENG_START_DOX The row of the AMD Eyefinity grid location for the requested display. @ENG_END_DOX}
282
+ *@paramrow{2.,[in] ,col,adlx_uint ,@ENG_START_DOX The column of the AMD Eyefinity grid location for the requested display. @ENG_END_DOX}
283
+ *@paramrow{3.,[out] ,displayOrientation,@ref ADLX_ORIENTATION* ,@ENG_START_DOX The pointer to a variable where the display orientation is returned. @ENG_END_DOX}
284
+ *
285
+ *@retvalues
286
+ *@ENG_START_DOX If the display orientation is successfully returned, __ADLX_OK__ is returned.<br>
287
+ * If the display orientation is not successfully returned, an error code is returned.<br>
288
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
289
+ *
290
+ *@detaileddesc
291
+ *@ENG_START_DOX @details The display orientation indicates the rotation angle of the display area on an AMD Eyefinity desktop. @ENG_END_DOX
292
+ *
293
+ *@copydoc IADLXEyefinityDesktop_REQ_TABLE
294
+ *
295
+ */
296
+ virtual ADLX_RESULT ADLX_STD_CALL DisplayOrientation (adlx_uint row, adlx_uint col, ADLX_ORIENTATION* displayOrientation) = 0;
297
+ /**
298
+ *@page DOX_IADLXEyefinityDesktop_DisplaySize DisplaySize
299
+ *@ENG_START_DOX @brief Gets the size of the display area on an AMD Eyefinity desktop at a given grid location. @ENG_END_DOX
300
+ *
301
+ *@syntax
302
+ *@codeStart
303
+ * @ref ADLX_RESULT DisplaySize (adlx_uint row, adlx_uint col, adlx_int* displayWidth, adlx_int* displayHeight)
304
+ *@codeEnd
305
+ *
306
+ *@params
307
+ *@paramrow{1.,[in] ,row,adlx_uint ,@ENG_START_DOX The row of the AMD Eyefinity grid location for the requested display. @ENG_END_DOX}
308
+ *@paramrow{2.,[in] ,col,adlx_uint ,@ENG_START_DOX The column of the AMD Eyefinity grid location for the requested display. @ENG_END_DOX}
309
+ *@paramrow{3.,[out] ,displayWidth,adlx_int* ,@ENG_START_DOX The pointer to a variable where the display width is returned. @ENG_END_DOX}
310
+ *@paramrow{4.,[out] ,displayHeight,adlx_int* ,@ENG_START_DOX The pointer to a variable where the display height is returned. @ENG_END_DOX}
311
+ *
312
+ *@retvalues
313
+ *@ENG_START_DOX If the display size is successfully returned, __ADLX_OK__ is returned.<br>
314
+ * If the display size is not successfully returned, an error code is returned.<br>
315
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
316
+ *
317
+ *@detaileddesc
318
+ *@ENG_START_DOX @details The display size represents the pixel resolution of the dispay area in an AMD Eyefinity desktop.
319
+ * @ENG_END_DOX
320
+ *
321
+ *@copydoc IADLXEyefinityDesktop_REQ_TABLE
322
+ *
323
+ */
324
+ virtual ADLX_RESULT ADLX_STD_CALL DisplaySize (adlx_uint row, adlx_uint col, adlx_int* displayWidth, adlx_int* displayHeight) = 0;
325
+ /**
326
+ *@page DOX_IADLXEyefinityDesktop_DisplayTopLeft DisplayTopLeft
327
+ *@ENG_START_DOX @brief Gets the top left position of the display area on an AMD Eyefinity desktop at a given grid location. @ENG_END_DOX
328
+ *
329
+ *@syntax
330
+ *@codeStart
331
+ * @ref ADLX_RESULT DisplayTopLeft (adlx_uint row, adlx_uint col, @ref ADLX_Point* displayLocationTopLeft)
332
+ *@codeEnd
333
+ *
334
+ *@params
335
+ *@paramrow{1.,[in] ,row,adlx_uint ,@ENG_START_DOX The row of the AMD Eyefinity grid location for the requested display. @ENG_END_DOX}
336
+ *@paramrow{2.,[in] ,col,adlx_uint ,@ENG_START_DOX The column of the AMD Eyefinity grid location for the requested display. @ENG_END_DOX}
337
+ *@paramrow{3.,[out] ,displayLocationTopLeft,@ref ADLX_Point* ,@ENG_START_DOX The pointer to a variable where the top left position is returned. @ENG_END_DOX}
338
+ *
339
+ *@retvalues
340
+ *@ENG_START_DOX If the top left position is successfully returned, __ADLX_OK__ is returned.<br>
341
+ * If the top left position is not successfully returned, an error code is returned.<br>
342
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
343
+ *
344
+ *@detaileddesc
345
+ *@ENG_START_DOX @details The top left position is relative to the desktop's top left position.
346
+ * @ENG_END_DOX
347
+ *
348
+ *@copydoc IADLXEyefinityDesktop_REQ_TABLE
349
+ *
350
+ */
351
+ virtual ADLX_RESULT ADLX_STD_CALL DisplayTopLeft (adlx_uint row, adlx_uint col, ADLX_Point* displayLocationTopLeft) = 0;
352
+ }; //IADLXEyefinityDesktop
353
+ //----------------------------------------------------------------------------------------------
354
+ typedef IADLXInterfacePtr_T<IADLXEyefinityDesktop> IADLXEyefinityDesktopPtr;
355
+ } //namespace adlx
356
+ #else //__cplusplus
357
+ ADLX_DECLARE_IID (IADLXEyefinityDesktop, L"IADLXEyefinityDesktop")
358
+ typedef struct IADLXEyefinityDesktop IADLXEyefinityDesktop;
359
+ typedef struct IADLXDisplay IADLXDisplay;
360
+ typedef struct IADLXDisplayList IADLXDisplayList;
361
+ typedef struct IADLXEyefinityDesktopVtbl
362
+ {
363
+ //IADLXInterface
364
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXEyefinityDesktop* pThis);
365
+ adlx_long (ADLX_STD_CALL *Release)(IADLXEyefinityDesktop* pThis);
366
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXEyefinityDesktop* pThis, const wchar_t* interfaceId, void** ppInterface);
367
+
368
+ //IADLXEyefinityDesktop
369
+ ADLX_RESULT (ADLX_STD_CALL *GridSize) (IADLXEyefinityDesktop* pThis, adlx_uint* rows, adlx_uint* cols);
370
+ ADLX_RESULT (ADLX_STD_CALL *GetDisplay) (IADLXEyefinityDesktop* pThis, adlx_uint row, adlx_uint col, IADLXDisplay** ppDisplay);
371
+ ADLX_RESULT (ADLX_STD_CALL *DisplayOrientation) (IADLXEyefinityDesktop* pThis, adlx_uint row, adlx_uint col, ADLX_ORIENTATION* displayOrientation);
372
+ ADLX_RESULT (ADLX_STD_CALL *DisplaySize) (IADLXEyefinityDesktop* pThis, adlx_uint row, adlx_uint col, adlx_int* displayWidth, adlx_int* displayHeight);
373
+ ADLX_RESULT (ADLX_STD_CALL *DisplayTopLeft) (IADLXEyefinityDesktop* pThis, adlx_uint row, adlx_uint col, ADLX_Point* displayLocationTopLeft);
374
+ }IADLXEyefinityDesktopVtbl;
375
+ struct IADLXEyefinityDesktop { const IADLXEyefinityDesktopVtbl *pVtbl; };
376
+ #endif //__cplusplus
377
+ #pragma endregion IADLXEyefinityDesktop
378
+
379
+
380
+ //Desktops list interface: List for IADLXDesktop items
381
+ #pragma region IADLXDesktopList
382
+ #if defined (__cplusplus)
383
+ namespace adlx
384
+ {
385
+ class ADLX_NO_VTABLE IADLXDesktopList : public IADLXList
386
+ {
387
+ public:
388
+ ADLX_DECLARE_IID (L"IADLXDesktopList")
389
+ //Lists must declare the type of items it holds - what was passed as ADLX_DECLARE_IID() in that interface
390
+ ADLX_DECLARE_ITEM_IID (IADLXDesktop::IID ())
391
+ /**
392
+ * @page DOX_IADLXDesktopList_At At
393
+ * @ENG_START_DOX
394
+ * @brief Returns the reference counted interface at the requested location.
395
+ * @ENG_END_DOX
396
+ *
397
+ * @syntax
398
+ * @codeStart
399
+ * @ref ADLX_RESULT At (const adlx_uint location, @ref DOX_IADLXDesktop** ppItem)
400
+ * @codeEnd
401
+ *
402
+ * @params
403
+ * @paramrow{1.,[in] ,location,const adlx_uint ,@ENG_START_DOX The location of the requested interface. @ENG_END_DOX}
404
+ * @paramrow{2.,[out] ,ppItem,@ref DOX_IADLXDesktop** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned then the method sets the dereferenced address __*ppItem__ to __nullptr__. @ENG_END_DOX}
405
+ *
406
+ * @retvalues
407
+ * @ENG_START_DOX
408
+ * If the location is within the list bounds, __ADLX_OK__ is returned.<br>
409
+ * If the location is not within the list bounds, an error code is returned.<br>
410
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
411
+ * @ENG_END_DOX
412
+ *
413
+ * @detaileddesc
414
+ * @ENG_START_DOX
415
+ * @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.
416
+ * @ENG_END_DOX
417
+ *
418
+ * @addinfo
419
+ * @ENG_START_DOX
420
+ * In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation.
421
+ * @ENG_END_DOX
422
+ *
423
+ * @copydoc IADLXDesktopList_REQ_TABLE
424
+ *
425
+ */
426
+ virtual ADLX_RESULT ADLX_STD_CALL At (const adlx_uint location, IADLXDesktop** ppItem) = 0;
427
+ /**
428
+ *@page DOX_IADLXDesktopList_Add_Back Add_Back
429
+ *@ENG_START_DOX @brief Adds an interface to the end of a list. @ENG_END_DOX
430
+ *
431
+ *@syntax
432
+ *@codeStart
433
+ * @ref ADLX_RESULT Add_Back (@ref DOX_IADLXDesktop* pItem)
434
+ *@codeEnd
435
+ *
436
+ *@params
437
+ *@paramrow{1.,[in] ,pItem,@ref DOX_IADLXDesktop* ,@ENG_START_DOX The pointer to the interface to be added to the list. @ENG_END_DOX}
438
+ *
439
+ *@retvalues
440
+ *@ENG_START_DOX If the interface is added successfully to the end of the list, __ADLX_OK__ is returned.<br>
441
+ * If the interface is not added to the end of the list, an error code is returned.<br>
442
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
443
+ *
444
+ *@detaileddesc
445
+ *@ENG_START_DOX @details @ENG_END_DOX
446
+ *
447
+ *@copydoc IADLXDesktopList_REQ_TABLE
448
+ *
449
+ */
450
+ virtual ADLX_RESULT ADLX_STD_CALL Add_Back (IADLXDesktop* pItem) = 0;
451
+ }; //IADLXDisplayList
452
+ //----------------------------------------------------------------------------------------------
453
+ typedef IADLXInterfacePtr_T<IADLXDesktopList> IADLXDesktopListPtr;
454
+ } //namespace adlx
455
+ #else //__cplusplus
456
+ ADLX_DECLARE_IID (IADLXDesktopList, L"IADLXDesktopList")
457
+ ADLX_DECLARE_ITEM_IID (IADLXDesktop, IID_IADLXDesktop ())
458
+
459
+ typedef struct IADLXDesktopList IADLXDesktopList;
460
+ typedef struct IADLXDesktopListVtbl
461
+ {
462
+ //IADLXInterface
463
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXDesktopList* pThis);
464
+ adlx_long (ADLX_STD_CALL *Release)(IADLXDesktopList* pThis);
465
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXDesktopList* pThis, const wchar_t* interfaceId, void** ppInterface);
466
+
467
+ //IADLXList
468
+ adlx_uint (ADLX_STD_CALL *Size)(IADLXDesktopList* pThis);
469
+ adlx_bool (ADLX_STD_CALL *Empty)(IADLXDesktopList* pThis);
470
+ adlx_uint (ADLX_STD_CALL *Begin)(IADLXDesktopList* pThis);
471
+ adlx_uint (ADLX_STD_CALL *End)(IADLXDesktopList* pThis);
472
+ ADLX_RESULT (ADLX_STD_CALL *At)(IADLXDesktopList* pThis, const adlx_uint location, IADLXInterface** ppItem);
473
+ ADLX_RESULT (ADLX_STD_CALL *Clear)(IADLXDesktopList* pThis);
474
+ ADLX_RESULT (ADLX_STD_CALL *Remove_Back)(IADLXDesktopList* pThis);
475
+ ADLX_RESULT (ADLX_STD_CALL *Add_Back)(IADLXDesktopList* pThis, IADLXInterface* pItem);
476
+
477
+ //IADLXDesktopList
478
+ ADLX_RESULT (ADLX_STD_CALL *At_DesktopList)(IADLXDesktopList* pThis, const adlx_uint location, IADLXDesktop** ppItem);
479
+ ADLX_RESULT (ADLX_STD_CALL *Add_Back_DesktopList)(IADLXDesktopList* pThis, IADLXDesktop* pItem);
480
+
481
+ }IADLXDesktopListVtbl;
482
+
483
+ struct IADLXDesktopList { const IADLXDesktopListVtbl *pVtbl; };
484
+ #endif //__cplusplus
485
+ #pragma endregion IADLXDesktopList
486
+
487
+ //Desktop List changed listener interface. To be implemented in application and passed in IADLXDesktopChangedHandling::AddDesktopListEventListener()
488
+ #pragma region IADLXDesktopListChangedListener
489
+ #if defined (__cplusplus)
490
+ namespace adlx
491
+ {
492
+ class ADLX_NO_VTABLE IADLXDesktopListChangedListener
493
+ {
494
+ public:
495
+ /**
496
+ *@page DOX_IADLXDesktopListChangedListener_OnDesktopListChanged OnDesktopListChanged
497
+ *@ENG_START_DOX @brief The __OnDesktopsListChanged__ is called by ADLX when the desktop list changes. @ENG_END_DOX
498
+ *
499
+ *@syntax
500
+ *@codeStart
501
+ * adlx_bool OnDesktopListChanged (@ref DOX_IADLXDesktopList* pNewDesktop)
502
+ *@codeEnd
503
+ *
504
+ *@params
505
+ *@paramrow{1.,[out] ,pNewDesktop,@ref DOX_IADLXDesktopList* ,@ENG_START_DOX The pointer to the new desktop list. @ENG_END_DOX}
506
+ *
507
+ *
508
+ *@retvalues
509
+ *@ENG_START_DOX If the application requires ADLX to continue notifying the next listener, __true__ must be returned.<br>
510
+ * If the application requires ADLX to stop notifying the next listener, __false__ must be returned.<br> @ENG_END_DOX
511
+ *
512
+ *@detaileddesc
513
+ *@ENG_START_DOX Once the application registers to the notifications with @ref DOX_IADLXDesktopChangedHandling_AddDesktopListEventListener, ADLX will call this method until the application unregisters from the notifications with @ref DOX_IADLXDesktopChangedHandling_RemoveDesktopListEventListener.<br>
514
+ * The method should return quickly to not block the execution path in ADLX. If the method requires a long processing of the event notification, the application must hold onto a reference to the new desktop list with @ref DOX_IADLXInterface_Acquire and make it available on an asynchronous thread and return immediately. When the asynchronous thread is done processing it must discard the new desktop list with @ref DOX_IADLXInterface_Release.<br> @ENG_END_DOX
515
+ *
516
+ *
517
+ *@copydoc IADLXDesktopListChangedListener_REQ_TABLE
518
+ *
519
+ */
520
+ virtual adlx_bool ADLX_STD_CALL OnDesktopListChanged (IADLXDesktopList* pNewDesktop) = 0;
521
+ }; //IADLXDesktopListChangedListener
522
+ } //namespace adlx
523
+ #else //__cplusplus
524
+ typedef struct IADLXDesktopListChangedListener IADLXDesktopListChangedListener;
525
+
526
+ typedef struct IADLXDesktopListChangedListenerVtbl
527
+ {
528
+ // IADLXDesktopListChangedListener interface
529
+ adlx_bool (ADLX_STD_CALL *OnDesktopListChanged)(IADLXDesktopListChangedListener* pThis, IADLXDesktopList* pNewDesktop);
530
+
531
+ } IADLXDesktopListChangedListenerVtbl;
532
+
533
+ struct IADLXDesktopListChangedListener { const IADLXDesktopListChangedListenerVtbl *pVtbl; };
534
+ #endif //__cplusplus
535
+ #pragma endregion IADLXDesktopListChangedListener
536
+
537
+
538
+ #pragma region IADLXDesktopChangedHandling
539
+ #if defined (__cplusplus)
540
+ namespace adlx
541
+ {
542
+ class ADLX_NO_VTABLE IADLXDesktopChangedHandling : public IADLXInterface
543
+ {
544
+ public:
545
+ ADLX_DECLARE_IID (L"IADLXDesktopChangedHandling")
546
+ /**
547
+ *@page DOX_IADLXDesktopChangedHandling_AddDesktopListEventListener AddDesktopListEventListener
548
+ *@ENG_START_DOX @brief Registers an event listener for notifications when the desktop list changes. @ENG_END_DOX
549
+ *
550
+ *@syntax
551
+ *@codeStart
552
+ * @ref ADLX_RESULT AddDesktopListEventListener (@ref DOX_IADLXDesktopListChangedListener* pDesktopListChangedListener)
553
+ *@codeEnd
554
+ *
555
+ *@params
556
+ *@paramrow{1.,[in] ,pDesktopListChangedListener,@ref DOX_IADLXDesktopListChangedListener* ,@ENG_START_DOX The pointer to the event listener interface to register for receiving the desktop list change notifications. @ENG_END_DOX}
557
+ *
558
+ *
559
+ *@retvalues
560
+ *@ENG_START_DOX If the event listener is successfully registered, __ADLX_OK__ is returned.<br>
561
+ * If the event listener is not successfully registered, an error code is returned.<br>
562
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
563
+ *
564
+ *@detaileddesc
565
+ *@ENG_START_DOX After the event listener is successfully registered, ADLX will call @ref DOX_IADLXDesktopListChangedListener_OnDesktopListChanged of the listener when the desktop list changes.<br>
566
+ * The event listener instance must exist until the application unregisters the event listener with @ref DOX_IADLXDesktopChangedHandling_RemoveDesktopListEventListener.<br> @ENG_END_DOX
567
+ *
568
+ *
569
+ *@copydoc IADLXDesktopChangedHandling_REQ_TABLE
570
+ *
571
+ */
572
+ virtual ADLX_RESULT ADLX_STD_CALL AddDesktopListEventListener (IADLXDesktopListChangedListener* pDesktopListChangedListener) = 0;
573
+ /**
574
+ *@page DOX_IADLXDesktopChangedHandling_RemoveDesktopListEventListener RemoveDesktopListEventListener
575
+ *@ENG_START_DOX @brief Unregisters an event listener from notifications when the desktop list changes. @ENG_END_DOX
576
+ *
577
+ *@syntax
578
+ *@codeStart
579
+ * @ref ADLX_RESULT RemoveDesktopListEventListener (@ref DOX_IADLXDesktopListChangedListener* pDesktopListChangedListener)
580
+ *@codeEnd
581
+ *
582
+ *@params
583
+ *@paramrow{1.,[in] ,pDesktopListChangedListener,@ref DOX_IADLXDesktopListChangedListener* ,@ENG_START_DOX The pointer to the event listener interface to unregister from receiving the desktop list change notifications. @ENG_END_DOX}
584
+ *
585
+ *
586
+ *@retvalues
587
+ *@ENG_START_DOX If the event listener is successfully unregistered, __ADLX_OK__ is returned.<br>
588
+ * If the event listener is not successfully unregistered, an error code is returned.<br>
589
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
590
+ *
591
+ *@detaileddesc
592
+ *@ENG_START_DOX After the event listener is successfully unregistered, ADLX will no longer call @ref DOX_IADLXDesktopListChangedListener_OnDesktopListChanged method of the listener when the desktop list changes. The application can discard the event listener instance. @ENG_END_DOX
593
+ *
594
+ *
595
+ *@copydoc IADLXDesktopChangedHandling_REQ_TABLE
596
+ *
597
+ */
598
+ virtual ADLX_RESULT ADLX_STD_CALL RemoveDesktopListEventListener (IADLXDesktopListChangedListener* pDesktopListChangedListener) = 0;
599
+
600
+ }; //IADLXDesktopChangedHandling
601
+ //----------------------------------------------------------------------------------------------
602
+ typedef IADLXInterfacePtr_T<IADLXDesktopChangedHandling> IADLXDesktopChangedHandlingPtr;
603
+ } //namespace adlx
604
+ #else //__cplusplus
605
+ ADLX_DECLARE_IID (IADLXDesktopChangedHandling, L"IADLXDesktopChangedHandling")
606
+ typedef struct IADLXDesktopChangedHandling IADLXDesktopChangedHandling;
607
+
608
+ typedef struct IADLXDesktopChangedHandlingVtbl
609
+ {
610
+ //IADLXInterface
611
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXDesktopChangedHandling* pThis);
612
+ adlx_long (ADLX_STD_CALL *Release)(IADLXDesktopChangedHandling* pThis);
613
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXDesktopChangedHandling* pThis, const wchar_t* interfaceId, void** ppInterface);
614
+
615
+ // IADLXDesktopChangedHandling interface
616
+ ADLX_RESULT (ADLX_STD_CALL *AddDesktopListEventListener)(IADLXDesktopChangedHandling* pThis, IADLXDesktopListChangedListener* pDesktopListChangedListener);
617
+ ADLX_RESULT (ADLX_STD_CALL *RemoveDesktopListEventListener)(IADLXDesktopChangedHandling* pThis, IADLXDesktopListChangedListener* pDesktopListChangedListener);
618
+
619
+ } IADLXDesktopChangedHandlingVtbl;
620
+
621
+ struct IADLXDesktopChangedHandling { const IADLXDesktopChangedHandlingVtbl *pVtbl; };
622
+ #endif //__cplusplus
623
+ #pragma endregion IADLXDesktopChangedHandling
624
+
625
+ //Simple AMD Eyefinity interface: allows creation and destruction of AMD Eyefinity desktops
626
+ #pragma region IADLXSimpleEyefinity
627
+ #if defined (__cplusplus)
628
+ namespace adlx
629
+ {
630
+ class ADLX_NO_VTABLE IADLXSimpleEyefinity : public IADLXInterface
631
+ {
632
+ public:
633
+ ADLX_DECLARE_IID (L"IADLXSimpleEyefinity")
634
+ /**
635
+ *@page DOX_IADLXSimpleEyefinity_IsSupported IsSupported
636
+ *@ENG_START_DOX @brief Checks if an AMD Eyefinity desktop can be created with all the enabled displays. @ENG_END_DOX
637
+ *
638
+ *@syntax
639
+ *@codeStart
640
+ * @ref ADLX_RESULT IsSupported (adlx_bool* supported)
641
+ *@codeEnd
642
+ *
643
+ *@params
644
+ *@paramrow{1.,[out] ,supported,adlx_bool* ,@ENG_START_DOX The pointer to a variable where the state of AMD Eyefinity desktop creation is returned. The variable is __true__ if AMD Eyefinity desktop creation is supported. The variable is __false__ if AMD Eyefinity desktop creation is not supported. @ENG_END_DOX}
645
+ *
646
+ *@retvalues
647
+ *@ENG_START_DOX If the state is successfully returned, __ADLX_OK__ is returned.<br>
648
+ * If the state is not successfully returned, an error code is returned.<br>
649
+ * Refer to @ref ADLX_RESULT for success codes and error codes. @ENG_END_DOX
650
+ *
651
+ *@detaileddesc
652
+ *@ENG_START_DOX @details
653
+ * AMD Eyefinity desktops can be created with ADLX using all the enabled displays connected to the AMD GPUs, except LCD panel displays. For more information about AMD GPUs, refer to @ref @adlx_gpu_support "ADLX GPU Support". Use @ref DOX_IADLXDisplay_DisplayType to check if a display is an LCD panel.<br>
654
+ * All the desktops must be single desktops. Use @ref DOX_IADLXDesktop_Type to check if a desktop is a single desktop.<br>
655
+ * All the enabled displays must be connected to the same GPU.<br>
656
+ * The AMD Eyefinity desktop configuration must be supported by the AMD driver. Driver support varies depending on the GPU.<br>
657
+ * @ENG_END_DOX
658
+ *
659
+ *@copydoc IADLXSimpleEyefinity_REQ_TABLE
660
+ *
661
+ */
662
+ virtual ADLX_RESULT ADLX_STD_CALL IsSupported (adlx_bool* supported) = 0;
663
+ /**
664
+ *@page DOX_IADLXSimpleEyefinity_Create Create
665
+ *@ENG_START_DOX @brief Creates an AMD Eyefinity desktop with all the enabled displays. @ENG_END_DOX
666
+ *
667
+ *@syntax
668
+ *@codeStart
669
+ * @ref ADLX_RESULT Create (@ref DOX_IADLXEyefinityDesktop** ppEyefinityDesktop)
670
+ *@codeEnd
671
+ *
672
+ *@params
673
+ *@paramrow{1.,[out] ,ppEyefinityDesktop,@ref DOX_IADLXEyefinityDesktop** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppEyefinityDesktop__ to __nullptr__. @ENG_END_DOX}
674
+ *
675
+ *@retvalues
676
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
677
+ * If the interface is not successfully returned, an error code is returned.<br>
678
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
679
+ *
680
+ *@detaileddesc
681
+ *@ENG_START_DOX @details
682
+ * Use @ref DOX_IADLXSimpleEyefinity_IsSupported to check if an AMD Eyefinity desktop can be created.<br>
683
+ * Creating an AMD Eyefinity desktop can take a couple of seconds to complete. The method will block the execution thread until the operation is finished.<br>
684
+ * The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. Discarding the interface does not destroy the AMD Eyefinity desktop.<br> @ENG_END_DOX
685
+ *
686
+ *@addinfo
687
+ *@ENG_START_DOX In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation. @ENG_END_DOX
688
+ *
689
+ *@copydoc IADLXSimpleEyefinity_REQ_TABLE
690
+ *
691
+ */
692
+ virtual ADLX_RESULT ADLX_STD_CALL Create (IADLXEyefinityDesktop** ppEyefinityDesktop) = 0;
693
+ /**
694
+ *@page DOX_IADLXSimpleEyefinity_DestroyAll DestroyAll
695
+ *@ENG_START_DOX @brief Destroys all the AMD Eyefinity desktops. @ENG_END_DOX
696
+ *
697
+ *@syntax
698
+ *@codeStart
699
+ * @ref ADLX_RESULT DestroyAll ()
700
+ *@codeEnd
701
+ *
702
+ *@retvalues
703
+ *@ENG_START_DOX If all AMD Eyefinity desktops are successfully destroyed, __ADLX_OK__ is returned.<br>
704
+ * If all AMD Eyefinity desktops are not successfully destroyed, an error code is returned.<br>
705
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
706
+ *
707
+ *@detaileddesc
708
+ *@ENG_START_DOX @details Destroying all AMD Eyefinity desktops can take a couple of seconds to complete. The method will block the execution thread until the operation is finished. @ENG_END_DOX
709
+ *
710
+ *@copydoc IADLXSimpleEyefinity_REQ_TABLE
711
+ *
712
+ */
713
+ virtual ADLX_RESULT ADLX_STD_CALL DestroyAll () = 0;
714
+ /**
715
+ *@page DOX_IADLXSimpleEyefinity_Destroy Destroy
716
+ *@ENG_START_DOX @brief Destroys a specified AMD Eyefinity desktop. @ENG_END_DOX
717
+ *
718
+ *@syntax
719
+ *@codeStart
720
+ * @ref ADLX_RESULT Destroy (@ref DOX_IADLXEyefinityDesktop* pDesktop)
721
+ *@codeEnd
722
+ *
723
+ *@params
724
+ *@paramrow{1.,[in] ,pDesktop,@ref DOX_IADLXEyefinityDesktop* ,@ENG_START_DOX The pointer to the eyefinity desktop to be destroyed. @ENG_END_DOX}
725
+ *
726
+ *@retvalues
727
+ *@ENG_START_DOX If the AMD Eyefinity desktop is successfully destroyed, __ADLX_OK__ is returned.<br>
728
+ * If the AMD Eyefinity desktop is not successfully destroyed, an error code is returned.<br>
729
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
730
+ *
731
+ *@detaileddesc
732
+ *@ENG_START_DOX @details Destroying an AMD Eyefinity desktop can take a couple of seconds to complete. The method will block the execution thread until the operation is finished. @ENG_END_DOX
733
+ *
734
+ *@copydoc IADLXSimpleEyefinity_REQ_TABLE
735
+ *
736
+ */
737
+ virtual ADLX_RESULT ADLX_STD_CALL Destroy (IADLXEyefinityDesktop* pDesktop) = 0;
738
+ }; //IADLXSimpleEyefinity
739
+ //----------------------------------------------------------------------------------------------
740
+ typedef IADLXInterfacePtr_T<IADLXSimpleEyefinity> IADLXSimpleEyefinityPtr;
741
+ } //namespace adlx
742
+ #else //__cplusplus
743
+ ADLX_DECLARE_IID (IADLXSimpleEyefinity, L"IADLXSimpleEyefinity")
744
+ typedef struct IADLXSimpleEyefinity IADLXSimpleEyefinity;
745
+ typedef struct IADLXSimpleEyefinityVtbl
746
+ {
747
+ //IADLXInterface
748
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXSimpleEyefinity* pThis);
749
+ adlx_long (ADLX_STD_CALL *Release)(IADLXSimpleEyefinity* pThis);
750
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXSimpleEyefinity* pThis, const wchar_t* interfaceId, void** ppInterface);
751
+
752
+ //IADLXSimpleEyefinity
753
+ ADLX_RESULT (ADLX_STD_CALL *IsSupported) (IADLXSimpleEyefinity* pThis, adlx_bool* supported);
754
+ ADLX_RESULT (ADLX_STD_CALL *Create) (IADLXSimpleEyefinity* pThis, IADLXEyefinityDesktop** ppEyefinityDesktop);
755
+ ADLX_RESULT (ADLX_STD_CALL *DestroyAll) (IADLXSimpleEyefinity* pThis);
756
+ ADLX_RESULT (ADLX_STD_CALL *Destroy) (IADLXSimpleEyefinity* pThis, IADLXEyefinityDesktop* pDesktop);
757
+ }IADLXSimpleEyefinityVtbl;
758
+ struct IADLXSimpleEyefinity { const IADLXSimpleEyefinityVtbl *pVtbl; };
759
+ #endif //__cplusplus
760
+ #pragma endregion IADLXSimpleEyefinity
761
+
762
+ //Desktops services interface: top level interface for accessing desktop functionality:
763
+ //describe desktops (including AMD Eyefinity), register for desktop changed events and access AMD Eyefinity functionality
764
+ #pragma region IADLXDesktopServices
765
+ #if defined (__cplusplus)
766
+ namespace adlx
767
+ {
768
+ class ADLX_NO_VTABLE IADLXDesktopServices : public IADLXInterface
769
+ {
770
+ public:
771
+ ADLX_DECLARE_IID (L"IADLXDesktopServices")
772
+ /**
773
+ * @page DOX_IADLXDesktopServices_GetNumberOfDesktops GetNumberOfDesktops
774
+ * @ENG_START_DOX
775
+ * @brief Gets the number of desktops instantiated on the AMD GPUs.
776
+ * @ENG_END_DOX
777
+ *
778
+ * @syntax
779
+ * @codeStart
780
+ * @ref ADLX_RESULT GetNumberOfDesktops (adlx_uint* numDesktops)
781
+ * @codeEnd
782
+ *
783
+ * @params
784
+ * @paramrow{1.,[out] ,numDesktops,adlx_uint* ,@ENG_START_DOX The pointer to a variable where the number of desktops is returned. @ENG_END_DOX}
785
+ *
786
+ * @retvalues
787
+ * @ENG_START_DOX
788
+ * If the number of desktops is successfully returned, __ADLX_OK__ is returned.<br>
789
+ * If the number of desktops is not successfully returned, an error code is returned.<br>
790
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
791
+ * @ENG_END_DOX
792
+ *
793
+ * @detaileddesc
794
+ * @ENG_START_DOX
795
+ * @details For more information about the AMD GPUs, refer to @ref @adlx_gpu_support "ADLX GPU Support".
796
+ * @ENG_END_DOX
797
+ *
798
+ * @copydoc IADLXDesktopServices_REQ_TABLE
799
+ *
800
+ */
801
+ virtual ADLX_RESULT ADLX_STD_CALL GetNumberOfDesktops (adlx_uint* numDesktops) = 0;
802
+ /**
803
+ * @page DOX_IADLXDesktopServices_GetDesktops GetDesktops
804
+ * @ENG_START_DOX
805
+ * @brief Gets the reference counted list of desktops instantiated on the AMD GPUs.
806
+ * @ENG_END_DOX
807
+ *
808
+ * @syntax
809
+ * @codeStart
810
+ * @ref ADLX_RESULT GetDesktops (@ref DOX_IADLXDesktopList** ppDesktops)
811
+ * @codeEnd
812
+ *
813
+ * @params
814
+ * @paramrow{1.,[out] ,ppDesktops,@ref DOX_IADLXDesktopList** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppDesktops__ to __nullptr__. @ENG_END_DOX}
815
+ *
816
+ * @retvalues
817
+ * @ENG_START_DOX
818
+ * If the list of desktops is successfully returned, __ADLX_OK__ is returned.<br>
819
+ * If the list of desktops is not successfully returned, an error code is returned.<br>
820
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br>
821
+ * @ENG_END_DOX
822
+ *
823
+ * @detaileddesc
824
+ * @ENG_START_DOX
825
+ * @details For more information about the AMD GPUs, refer to @ref @adlx_gpu_support "ADLX GPU Support".<br>
826
+ * The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed.<br>
827
+ * @ENG_END_DOX
828
+ *
829
+ * @addinfo
830
+ * @ENG_START_DOX
831
+ * In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation.
832
+ * @ENG_END_DOX
833
+ *
834
+ * @copydoc IADLXDesktopServices_REQ_TABLE
835
+ *
836
+ */
837
+ virtual ADLX_RESULT ADLX_STD_CALL GetDesktops (IADLXDesktopList** ppDesktops) = 0;
838
+ /**
839
+ * @page DOX_IADLXDesktopServices_GetDesktopChangedHandling GetDesktopChangedHandling
840
+ * @ENG_START_DOX
841
+ * @brief Gets the reference counted interface that allows registering and unregistering for notifications when desktop settings change.
842
+ * @ENG_END_DOX
843
+ *
844
+ * @syntax
845
+ * @codeStart
846
+ * @ref ADLX_RESULT GetDesktopChangedHandling (@ref DOX_IADLXDesktopChangedHandling** ppDesktopChangedHandling)
847
+ * @codeEnd
848
+ *
849
+ * @params
850
+ * @paramrow{1.,[out] ,ppDesktopChangedHandling,@ref DOX_IADLXDesktopChangedHandling** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppDeskChangedHandling__ to __nullptr__. @ENG_END_DOX}
851
+ *
852
+ *@retvalues
853
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
854
+ * If the interface is not successfully returned, an error code is returned.<br>
855
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
856
+ *
857
+ *@detaileddesc
858
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
859
+ *
860
+ *@addinfo
861
+ *@ENG_START_DOX In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation. @ENG_END_DOX
862
+ *
863
+ * @copydoc IADLXDesktopServices_REQ_TABLE
864
+ *
865
+ */
866
+ virtual ADLX_RESULT ADLX_STD_CALL GetDesktopChangedHandling (IADLXDesktopChangedHandling** ppDesktopChangedHandling) = 0;
867
+ /**
868
+ *@page DOX_IADLXDesktopServices_GetSimpleEyefinity GetSimpleEyefinity
869
+ *@ENG_START_DOX @brief Gets the reference counted interface to create and destroy AMD Eyefinity desktops. @ENG_END_DOX
870
+ *
871
+ *@syntax
872
+ *@codeStart
873
+ * @ref ADLX_RESULT GetSimpleEyefinity (@ref DOX_IADLXSimpleEyefinity** ppSimpleEyefinity)
874
+ *@codeEnd
875
+ *
876
+ *@params
877
+ *@paramrow{1.,[out] ,ppSimpleEyefinity,@ref DOX_IADLXSimpleEyefinity** ,@ENG_START_DOX The address of a pointer to the returned interface. If the interface is not successfully returned\, the method sets the dereferenced address __*ppSimpleEyefinity__ to __nullptr__. @ENG_END_DOX}
878
+ *
879
+ *@retvalues
880
+ *@ENG_START_DOX If the interface is successfully returned, __ADLX_OK__ is returned.<br>
881
+ * If the interface is not successfully returned, an error code is returned.<br>
882
+ * Refer to @ref ADLX_RESULT for success codes and error codes.<br> @ENG_END_DOX
883
+ *
884
+ *@detaileddesc
885
+ *@ENG_START_DOX @details The returned interface must be discarded with @ref DOX_IADLXInterface_Release when it is no longer needed. @ENG_END_DOX
886
+ *
887
+ *@addinfo
888
+ *@ENG_START_DOX In C++, when using ADLX interfaces as smart pointers, there is no need to call @ref DOX_IADLXInterface_Release because smart pointers call it in their internal implementation. @ENG_END_DOX
889
+ *
890
+ *@copydoc IADLXDesktopServices_REQ_TABLE
891
+ *
892
+ */
893
+ virtual ADLX_RESULT ADLX_STD_CALL GetSimpleEyefinity (IADLXSimpleEyefinity** ppSimpleEyefinity) = 0;
894
+ }; //IADLXDesktopServices
895
+ //----------------------------------------------------------------------------------------------
896
+ typedef IADLXInterfacePtr_T<IADLXDesktopServices> IADLXDesktopServicesPtr;
897
+ } //namespace adlx
898
+ #else //__cplusplus
899
+ ADLX_DECLARE_IID (IADLXDesktopServices, L"IADLXDesktopServices")
900
+ typedef struct IADLXDesktopServices IADLXDesktopServices;
901
+ typedef struct IADLXDesktopServicesVtbl
902
+ {
903
+ //IADLXInterface
904
+ adlx_long (ADLX_STD_CALL *Acquire)(IADLXDesktopServices* pThis);
905
+ adlx_long (ADLX_STD_CALL *Release)(IADLXDesktopServices* pThis);
906
+ ADLX_RESULT (ADLX_STD_CALL *QueryInterface)(IADLXDesktopServices* pThis, const wchar_t* interfaceId, void** ppInterface);
907
+
908
+ //IADLXDesktopServices
909
+ ADLX_RESULT (ADLX_STD_CALL *GetNumberOfDesktops) (IADLXDesktopServices* pThis, adlx_uint* pNumDesktops);
910
+ ADLX_RESULT (ADLX_STD_CALL *GetDesktops) (IADLXDesktopServices* pThis, IADLXDesktopList** ppDesktops);
911
+ ADLX_RESULT (ADLX_STD_CALL *GetDesktopChangedHandling) (IADLXDesktopServices* pThis, IADLXDesktopChangedHandling** ppDesktopChangedHandling);
912
+ ADLX_RESULT (ADLX_STD_CALL *GetSimpleEyefinity) (IADLXDesktopServices* pThis, IADLXSimpleEyefinity** ppSimpleEyefinity);
913
+ }IADLXDesktopServicesVtbl;
914
+ struct IADLXDesktopServices { const IADLXDesktopServicesVtbl *pVtbl; };
915
+ #endif //__cplusplus
916
+ #pragma endregion IADLXDesktopServices
917
+
918
+ #endif //ADLX_IDESKTOPS_H