ReactOS 0.4.15-dev-5893-g1bb4167
display.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactX Diagnosis Application
3 * LICENSE: LGPL - See COPYING in the top level directory
4 * FILE: base/applications/dxdiag/display.c
5 * PURPOSE: ReactX diagnosis display page
6 * COPYRIGHT: Copyright 2008 Johannes Anderwald
7 *
8 */
9
10#include "precomp.h"
11
12#include <d3d9.h>
13
14BOOL
15GetFileModifyTime(LPCWSTR pFullPath, WCHAR * szTime, int szTimeSize)
16{
18 FILETIME AccessTime;
19 SYSTEMTIME SysTime, LocalTime;
21 TIME_ZONE_INFORMATION TimeInfo;
22
23 hFile = CreateFileW(pFullPath, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
24 if (!hFile)
25 return FALSE;
26
27 if (!GetFileTime(hFile, NULL, NULL, &AccessTime))
28 {
30 return FALSE;
31 }
33
34 if(!GetTimeZoneInformation(&TimeInfo))
35 return FALSE;
36
37 if (!FileTimeToSystemTime(&AccessTime, &SysTime))
38 return FALSE;
39
40 if (!SystemTimeToTzSpecificLocalTime(&TimeInfo, &SysTime, &LocalTime))
41 return FALSE;
42
44 szTime[Length-1] = L' ';
46}
47
48
49
50static UINT WINAPI
53 IN UINT_PTR Param1,
54 IN UINT_PTR Param2)
55{
58 LPCWSTR pFullPath = (LPCWSTR)Param1;
59 WCHAR szVer[60];
60 LRESULT Length, fLength;
61 HWND * hDlgCtrls = (HWND *)Context;
62
63 if (wcsstr(pFullPath, L"\\DRIVERS\\"))
64 {
65 /* exclude files from drivers dir to have failsafe file version/date information */
66 return NO_ERROR;
67 }
68
69 pFile = wcsrchr(pFullPath, L'\\');
70 if (!pFile)
71 return NO_ERROR;
72
73 pFile++;
74 fLength = wcslen(pFile) + 1;
75
76 Length = SendMessageW(hDlgCtrls[0], WM_GETTEXTLENGTH, 0, 0) + 1;
77 pBuffer = HeapAlloc(GetProcessHeap(), 0, (Length + fLength) * sizeof(WCHAR));
78 if (!pBuffer)
79 return ERROR_OUTOFMEMORY;
80
82 if (Length)
83 {
84 pBuffer[Length++] = L',';
85 }
86 else
87 {
88 /* set file version */
89 if (GetFileVersion(pFullPath, szVer, sizeof(szVer)/sizeof(WCHAR)))
90 SendMessageW(hDlgCtrls[1], WM_SETTEXT, 0, (LPARAM)szVer);
91 /* set file time */
92 if (GetFileModifyTime(pFullPath, szVer, sizeof(szVer)/sizeof(WCHAR)))
93 SendMessageW(hDlgCtrls[2], WM_SETTEXT, 0, (LPARAM)szVer);
94 }
95
97 SendMessageW(hDlgCtrls[0], WM_SETTEXT, 0, (LPARAM)pBuffer);
99 return NO_ERROR;
100}
101
102VOID
104{
105 HSPFILEQ hQueue;
107 SP_DRVINFO_DATA DriverInfoData;
109
112 return;
113
114 DeviceInstallParams.FlagsEx |= (DI_FLAGSEX_INSTALLEDDRIVER | DI_FLAGSEX_ALLOWEXCLUDEDDRVS);
116 return;
117
119 return;
120
121 DriverInfoData.cbSize = sizeof(DriverInfoData);
122 if (!SetupDiEnumDriverInfoW(hList, pInfoData, SPDIT_CLASSDRIVER, 0, &DriverInfoData))
123 return;
124
125 DriverInfoData.cbSize = sizeof(DriverInfoData);
126 if (!SetupDiSetSelectedDriverW(hList, pInfoData, &DriverInfoData))
127 return;
128
129 hQueue = SetupOpenFileQueue();
130 if (hQueue == (HSPFILEQ)INVALID_HANDLE_VALUE)
131 return;
132
135 {
136 SetupCloseFileQueue(hQueue);
137 return;
138 }
139
140 DeviceInstallParams.FileQueue = hQueue;
142
144 {
145 SetupCloseFileQueue(hQueue);
146 return;
147 }
148
150 {
151 SetupCloseFileQueue(hQueue);
152 return;
153 }
154
155
156 /* enumerate the driver files */
158 SetupCloseFileQueue(hQueue);
159}
160
161static
162void
163DisplayPageSetDeviceDetails(HWND * hDlgCtrls, LPCGUID classGUID, LPGUID * deviceGUID)
164{
165 HDEVINFO hInfo;
166 DWORD dwIndex = 0;
167 SP_DEVINFO_DATA InfoData;
168 WCHAR szText[100];
169
170 /* create the setup list */
172 if (hInfo == INVALID_HANDLE_VALUE)
173 return;
174
175 do
176 {
177 ZeroMemory(&InfoData, sizeof(InfoData));
178 InfoData.cbSize = sizeof(InfoData);
179
180 if (SetupDiEnumDeviceInfo(hInfo, dwIndex, &InfoData))
181 {
182 /* set device name */
183 if (SetupDiGetDeviceRegistryPropertyW(hInfo, &InfoData, SPDRP_DEVICEDESC, NULL, (PBYTE)szText, sizeof(szText), NULL))
184 SendMessageW(hDlgCtrls[0], WM_SETTEXT, 0, (LPARAM)szText);
185
186 /* set the manufacturer name */
187 if (SetupDiGetDeviceRegistryPropertyW(hInfo, &InfoData, SPDRP_MFG, NULL, (PBYTE)szText, sizeof(szText), NULL))
188 SendMessageW(hDlgCtrls[1], WM_SETTEXT, 0, (LPARAM)szText);
189
190 /* FIXME
191 * we currently enumerate only the first adapter
192 */
193 EnumerateDrivers(&hDlgCtrls[2], hInfo, &InfoData);
194 break;
195 }
196
198 break;
199
200 dwIndex++;
201 }while(TRUE);
202
203 /* destroy the setup list */
205}
206
207
208static
209BOOL
211{
212 WCHAR szText[100];
213 WCHAR szFormat[30];
214 HKEY hKey;
215 HWND hDlgCtrls[5];
216 DWORD dwMemory;
217 DEVMODEW DevMode;
218 IDirect3D9 * ppObj = NULL;
220 HRESULT hResult;
221
222 szText[0] = L'\0';
223
224 /* fix wine */
225 //ppObj = Direct3DCreate9(D3D_SDK_VERSION);
226 if (ppObj)
227 {
228 hResult = IDirect3D9_GetAdapterIdentifier(ppObj, D3DADAPTER_DEFAULT , 2/*D3DENUM_WHQL_LEVEL*/, &Identifier);
229 if (hResult == D3D_OK)
230 {
231
232 if (Identifier.WHQLLevel)
233 {
234 /* adapter is WHQL certified */
235 LoadStringW(hInst, IDS_OPTION_YES, szText, sizeof(szText)/sizeof(WCHAR));
236 }
237 else
238 {
239 LoadStringW(hInst, IDS_NOT_APPLICABLE, szText, sizeof(szText)/sizeof(WCHAR));
240 }
241 }
242 IDirect3D9_Release(ppObj);
243 }
244 else
245 {
246 LoadStringW(hInst, IDS_NOT_APPLICABLE, szText, sizeof(szText)/sizeof(WCHAR));
247 }
248 szText[(sizeof(szText)/sizeof(WCHAR))-1] = L'\0';
250
251 if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, &pDispDevice->DeviceKey[18], 0, KEY_READ, &hKey) != ERROR_SUCCESS)
252 return FALSE;
253
254 if (GetRegValue(hKey, NULL, L"HardwareInformation.ChipType", REG_BINARY, szText, sizeof(szText)))
255 {
256 /* set chip type */
258 }
259
260 if (GetRegValue(hKey, NULL, L"HardwareInformation.DacType", REG_BINARY, szText, sizeof(szText)))
261 {
262 /* set DAC type */
264 }
265
266 if (GetRegValue(hKey, NULL, L"HardwareInformation.MemorySize", REG_BINARY, (LPWSTR)&dwMemory, sizeof(dwMemory)))
267 {
268 /* set chip memory size */
269 if (dwMemory > (1048576))
270 {
271 /* buggy ATI driver requires that */
272 dwMemory /= 1048576;
273 }
274 szFormat[0] = L'\0';
275 if (LoadStringW(hInst, IDS_FORMAT_ADAPTER_MEM, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
276 szFormat[(sizeof(szFormat)/sizeof(WCHAR))-1] = L'\0';
277 wsprintfW(szText, szFormat, dwMemory);
279 }
280
281 /* retrieve current display mode */
282 DevMode.dmSize = sizeof(DEVMODEW);
283 if (EnumDisplaySettingsW(pDispDevice->DeviceName, ENUM_CURRENT_SETTINGS, &DevMode))
284 {
285 szFormat[0] = L'\0';
286 if (LoadStringW(hInst, IDS_FORMAT_ADAPTER_MODE, szFormat, sizeof(szFormat)/sizeof(WCHAR)))
287 szFormat[(sizeof(szFormat)/sizeof(WCHAR))-1] = L'\0';
288 wsprintfW(szText, szFormat, DevMode.dmPelsWidth, DevMode.dmPelsHeight, DevMode.dmBitsPerPel, DevMode.dmDisplayFrequency);
290 }
291
292 /* query attached monitor */
293 wcscpy(szText, pDispDevice->DeviceName);
294 ZeroMemory(pDispDevice, sizeof(DISPLAY_DEVICEW));
295 pDispDevice->cb = sizeof(DISPLAY_DEVICEW);
296 if (EnumDisplayDevicesW(szText, 0, pDispDevice, 0))
297 {
298 /* set monitor name */
300 }
301
302 hDlgCtrls[0] = GetDlgItem(hwndDlg, IDC_STATIC_ADAPTER_ID);
303 hDlgCtrls[1] = GetDlgItem(hwndDlg, IDC_STATIC_ADAPTER_VENDOR);
304 hDlgCtrls[2] = GetDlgItem(hwndDlg, IDC_STATIC_ADAPTER_DRIVER);
305 hDlgCtrls[3] = GetDlgItem(hwndDlg, IDC_STATIC_ADAPTER_VERSION);
306 hDlgCtrls[4] = GetDlgItem(hwndDlg, IDC_STATIC_ADAPTER_DATE);
307
308 DisplayPageSetDeviceDetails(hDlgCtrls, &GUID_DEVCLASS_DISPLAY, NULL);
309 return TRUE;
310}
311
313{
314 DISPLAY_DEVICEW DispDevice;
315 HWND * hDlgs;
316 HWND hwndDlg;
317 WCHAR szDisplay[20];
318 WCHAR szText[30];
319 DWORD dwOffset = 0;
320
321 while(TRUE)
322 {
323 ZeroMemory(&DispDevice, sizeof(DISPLAY_DEVICEW));
324 DispDevice.cb = sizeof(DISPLAY_DEVICEW);
325 if (!EnumDisplayDevicesW(NULL, pContext->NumDisplayAdapter + dwOffset, &DispDevice, 0))
326 return;
327
328 /* skip devices not attached to the desktop and mirror drivers */
330 {
331 dwOffset++;
332 continue;
333 }
334 if (pContext->NumDisplayAdapter)
335 hDlgs = HeapReAlloc(GetProcessHeap(), 0, pContext->hDisplayWnd, (pContext->NumDisplayAdapter + 1) * sizeof(HWND));
336 else
337 hDlgs = HeapAlloc(GetProcessHeap(), 0, (pContext->NumDisplayAdapter + 1) * sizeof(HWND));
338
339 if (!hDlgs)
340 break;
341
342 pContext->hDisplayWnd = hDlgs;
344 if (!hwndDlg)
345 break;
346
347 /* initialize the dialog */
348 InitializeDialog(hwndDlg, &DispDevice);
349
350 szDisplay[0] = L'\0';
351 LoadStringW(hInst, IDS_DISPLAY_DIALOG, szDisplay, sizeof(szDisplay)/sizeof(WCHAR));
352 szDisplay[(sizeof(szDisplay)/sizeof(WCHAR))-1] = L'\0';
353
354 wsprintfW (szText, L"%s %u", szDisplay, pContext->NumDisplayAdapter + 1);
355 InsertTabCtrlItem(GetDlgItem(pContext->hMainDialog, IDC_TAB_CONTROL), pContext->NumDisplayAdapter + 1, szText);
356
357 hDlgs[pContext->NumDisplayAdapter] = hwndDlg;
358 pContext->NumDisplayAdapter++;
359 }
360
361
362}
363
364
367{
368 RECT rect;
370 switch (message)
371 {
372 case WM_INITDIALOG:
373 {
374 pContext = (PDXDIAG_CONTEXT) lParam;
375 SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)pContext);
377 return TRUE;
378 }
379 case WM_COMMAND:
380 {
381 switch(LOWORD(wParam))
382 {
385 GetWindowRect(pContext->hMainDialog, &rect);
386 /* FIXME log result errors */
388 DDTests();
389 else if (IDC_BUTTON_TEST3D == LOWORD(wParam))
390 D3DTests();
392 break;
393 }
394 break;
395 }
396 }
397
398 return FALSE;
399}
@ Identifier
Definition: asmpp.cpp:95
static void DisplayPageSetDeviceDetails(HWND *hDlgCtrls, LPCGUID classGUID, LPGUID *deviceGUID)
Definition: display.c:163
VOID EnumerateDrivers(PVOID Context, HDEVINFO hList, PSP_DEVINFO_DATA pInfoData)
Definition: display.c:103
static BOOL InitializeDialog(HWND hwndDlg, PDISPLAY_DEVICEW pDispDevice)
Definition: display.c:210
INT_PTR CALLBACK DisplayPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: display.c:366
static UINT WINAPI DriverFilesCallback(IN PVOID Context, IN UINT Notification, IN UINT_PTR Param1, IN UINT_PTR Param2)
Definition: display.c:51
void InitializeDisplayAdapters(PDXDIAG_CONTEXT pContext)
Definition: display.c:312
BOOL GetFileModifyTime(LPCWSTR pFullPath, WCHAR *szTime, int szTimeSize)
Definition: display.c:15
BOOL GetFileVersion(LPCWSTR szAppName, WCHAR *szVer, DWORD szVerSize)
Definition: network.c:105
struct DXDIAG_CONTEXT * PDXDIAG_CONTEXT
BOOL GetRegValue(HKEY hBaseKey, LPWSTR SubKey, LPWSTR ValueName, DWORD Type, LPWSTR Result, DWORD Size)
Definition: system.c:15
#define IDS_FORMAT_ADAPTER_MEM
Definition: resource.h:150
#define IDS_OPTION_YES
Definition: resource.h:126
#define IDC_STATIC_ADAPTER_ID
Definition: resource.h:37
#define IDC_STATIC_ADAPTER_CHIP
Definition: resource.h:39
#define IDD_DISPLAY_DIALOG
Definition: resource.h:8
#define IDC_STATIC_ADAPTER_MODE
Definition: resource.h:42
#define IDC_STATIC_ADAPTER_DATE
Definition: resource.h:46
#define IDS_FORMAT_ADAPTER_MODE
Definition: resource.h:151
#define IDC_STATIC_ADAPTER_MONITOR
Definition: resource.h:43
#define IDC_STATIC_ADAPTER_VERSION
Definition: resource.h:45
#define IDC_BUTTON_TEST3D
Definition: resource.h:55
#define IDC_BUTTON_TESTDD
Definition: resource.h:54
#define IDC_STATIC_ADAPTER_DAC
Definition: resource.h:40
#define IDS_DISPLAY_DIALOG
Definition: resource.h:105
#define IDS_NOT_APPLICABLE
Definition: resource.h:125
#define IDC_STATIC_ADAPTER_DRIVER
Definition: resource.h:44
#define IDC_STATIC_ADAPTER_VENDOR
Definition: resource.h:38
#define IDC_TAB_CONTROL
Definition: resource.h:16
#define IDC_STATIC_ADAPTER_MEM
Definition: resource.h:41
#define IDC_STATIC_ADAPTER_LOGO
Definition: resource.h:47
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define IDirect3D9_GetAdapterIdentifier(p, a, b, c)
Definition: d3d9.h:224
#define IDirect3D9_Release(p)
Definition: d3d9.h:220
#define D3D_OK
Definition: d3d.h:106
VOID D3DTests()
Definition: d3dtest.c:73
#define NO_ERROR
Definition: dderror.h:5
VOID DDTests()
Definition: ddtest.c:71
#define ERROR_OUTOFMEMORY
Definition: deptool.c:13
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3356
#define CloseHandle
Definition: compat.h:739
#define GetProcessHeap()
Definition: compat.h:736
#define wcsrchr
Definition: compat.h:16
#define OPEN_EXISTING
Definition: compat.h:775
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define HeapAlloc
Definition: compat.h:733
#define HeapReAlloc
Definition: compat.h:734
#define ERROR_NO_MORE_ITEMS
Definition: compat.h:105
#define GENERIC_READ
Definition: compat.h:135
#define HeapFree(x, y, z)
Definition: compat.h:735
#define CreateFileW
Definition: compat.h:741
#define CALLBACK
Definition: compat.h:35
BOOL WINAPI GetFileTime(IN HANDLE hFile, OUT LPFILETIME lpCreationTime OPTIONAL, OUT LPFILETIME lpLastAccessTime OPTIONAL, OUT LPFILETIME lpLastWriteTime OPTIONAL)
Definition: fileinfo.c:896
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
Definition: time.c:188
BOOL WINAPI SystemTimeToTzSpecificLocalTime(CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation, CONST SYSTEMTIME *lpUniversalTime, LPSYSTEMTIME lpLocalTime)
Definition: timezone.c:377
DWORD WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation)
Definition: timezone.c:262
BOOL WINAPI SetupDiSetDeviceInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN PSP_DEVINSTALL_PARAMS_W DeviceInstallParams)
Definition: devinst.c:4558
BOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO devinfo, DWORD index, PSP_DEVINFO_DATA info)
Definition: devinst.c:1787
BOOL WINAPI SetupDiGetDeviceInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, OUT PSP_DEVINSTALL_PARAMS_W DeviceInstallParams)
Definition: devinst.c:4451
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4024
BOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, PDWORD PropertyRegDataType, PBYTE PropertyBuffer, DWORD PropertyBufferSize, PDWORD RequiredSize)
Definition: devinst.c:3224
HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID *class, LPCWSTR enumstr, HWND parent, DWORD flags)
Definition: devinst.c:2292
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
Definition: devinst.c:2893
BOOL WINAPI SetupDiSetSelectedDriverW(IN HDEVINFO DeviceInfoSet, IN OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN OUT PSP_DRVINFO_DATA_W DriverInfoData OPTIONAL)
Definition: driver.c:1590
BOOL WINAPI SetupDiBuildDriverInfoList(IN HDEVINFO DeviceInfoSet, IN OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN DWORD DriverType)
Definition: driver.c:718
BOOL WINAPI SetupDiEnumDriverInfoW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN DWORD DriverType, IN DWORD MemberIndex, OUT PSP_DRVINFO_DATA_W DriverInfoData)
Definition: driver.c:1355
BOOL WINAPI SetupScanFileQueueW(HSPFILEQ handle, DWORD flags, HWND window, PSP_FILE_CALLBACK_W handler, PVOID context, PDWORD result)
Definition: queue.c:1558
HSPFILEQ WINAPI SetupOpenFileQueue(void)
Definition: queue.c:493
HINSTANCE hInst
Definition: dxdiag.c:13
BOOL EnableDialogTheme(HWND hwnd)
Definition: dxdiag.c:38
VOID InsertTabCtrlItem(HWND hDlgCtrl, INT Position, LPWSTR uId)
Definition: dxdiag.c:102
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
FxAutoRegKey hKey
MdFileObject pFile
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
INT WINAPI GetTimeFormatW(LCID lcid, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCWSTR lpFormat, LPWSTR lpTimeStr, INT cchOut)
Definition: lcformat.c:1079
INT WINAPI GetDateFormatW(LCID lcid, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCWSTR lpFormat, LPWSTR lpDateStr, INT cchOut)
Definition: lcformat.c:979
HWND hList
Definition: livecd.c:10
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
_In_ HANDLE hFile
Definition: mswsock.h:90
unsigned int UINT
Definition: ndis.h:50
#define REG_BINARY
Definition: nt_native.h:1496
#define KEY_READ
Definition: nt_native.h:1023
#define LOCALE_USER_DEFAULT
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
_In_ DWORD _In_ DWORD dwOffset
Definition: ntgdi.h:2033
#define L(x)
Definition: ntvdm.h:50
#define LOWORD(l)
Definition: pedump.c:82
BYTE * PBYTE
Definition: pedump.c:66
PVOID pBuffer
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define D3DADAPTER_DEFAULT
Definition: d3d8.h:57
#define SPQ_SCAN_USE_CALLBACK
Definition: setupapi.h:619
#define DI_NOVCP
Definition: setupapi.h:49
#define SPDIT_CLASSDRIVER
Definition: setupapi.h:505
#define SPDRP_DEVICEDESC
Definition: setupapi.h:507
#define DIF_INSTALLDEVICEFILES
Definition: setupapi.h:140
#define SetupDiSetDeviceInstallParams
Definition: setupapi.h:2619
#define DIGCF_PROFILE
Definition: setupapi.h:173
#define DIGCF_PRESENT
Definition: setupapi.h:171
#define SPDRP_MFG
Definition: setupapi.h:518
#define DI_FLAGSEX_ALLOWEXCLUDEDDRVS
Definition: setupapi.h:87
TCHAR szTime[64]
Definition: solitaire.cpp:19
& rect
Definition: startmenu.cpp:1413
HWND hMainDialog
Definition: precomp.h:31
HWND * hDisplayWnd
Definition: precomp.h:34
ULONG NumDisplayAdapter
Definition: precomp.h:33
WCHAR DeviceName[32]
Definition: wingdi.h:2818
DWORD StateFlags
Definition: wingdi.h:2820
WCHAR DeviceString[128]
Definition: wingdi.h:2819
WCHAR DeviceKey[128]
Definition: wingdi.h:2822
DWORD dmBitsPerPel
Definition: wingdi.h:1647
DWORD dmPelsWidth
Definition: wingdi.h:1648
DWORD dmPelsHeight
Definition: wingdi.h:1649
DWORD dmDisplayFrequency
Definition: wingdi.h:1654
WORD dmSize
Definition: wingdi.h:1620
Definition: tftpd.h:60
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
int32_t INT_PTR
Definition: typedefs.h:64
#define IN
Definition: typedefs.h:39
BOOL WINAPI SetupCloseFileQueue(IN HSPFILEQ QueueHandle)
Definition: fileqsup.c:217
_In_ PWDFDEVICE_INIT _In_ PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION Notification
Definition: wdfcontrol.h:115
BOOL WINAPI EnumDisplayDevicesW(LPCWSTR lpDevice, DWORD iDevNum, PDISPLAY_DEVICEW lpDisplayDevice, DWORD dwFlags)
Definition: display.c:78
BOOL WINAPI EnumDisplaySettingsW(LPCWSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEW lpDevMode)
Definition: display.c:408
#define ZeroMemory
Definition: winbase.h:1670
DWORD WINAPI GetLastError(void)
Definition: except.c:1040
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define WINAPI
Definition: msvc.h:6
#define DISPLAY_DEVICE_MIRRORING_DRIVER
Definition: wingdi.h:1399
struct _DISPLAY_DEVICEW DISPLAY_DEVICEW
struct _devicemodeW DEVMODEW
#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
Definition: wingdi.h:1396
#define TIME_FORCE24HOURFORMAT
Definition: winnls.h:280
#define DATE_SHORTDATE
Definition: winnls.h:196
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
HWND WINAPI CreateDialogParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
#define WM_GETTEXTLENGTH
Definition: winuser.h:1609
#define SWP_NOACTIVATE
Definition: winuser.h:1232
#define DWLP_USER
Definition: winuser.h:866
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define WM_COMMAND
Definition: winuser.h:1730
#define SWP_NOSIZE
Definition: winuser.h:1235
#define WM_GETTEXT
Definition: winuser.h:1608
#define WM_INITDIALOG
Definition: winuser.h:1729
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_SETTEXT
Definition: winuser.h:1607
#define ENUM_CURRENT_SETTINGS
Definition: winuser.h:179
#define SWP_NOOWNERZORDER
Definition: winuser.h:1239
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define SWP_NOZORDER
Definition: winuser.h:1237
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185