ReactOS  0.4.15-dev-1638-gc0caa5c
general.c
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS System Control Panel Applet
3  * LICENSE: GPL - See COPYING in the top level directory
4  * FILE: dll/cpl/sysdm/general.c
5  * PURPOSE: General System Information
6  * COPYRIGHT: Copyright Thomas Weidenmueller <w3seek@reactos.org>
7  * Copyright 2006 Ged Murphy <gedmurphy@gmail.com>
8  * Copyright 2006-2007 Colin Finck <mail@colinfinck.de>
9  *
10  */
11 
12 #include "precomp.h"
13 
14 #include <winnls.h>
15 #include <powrprof.h>
16 #include <buildno.h>
17 #include <strsafe.h>
18 
19 #define ANIM_STEP 2
20 #define ANIM_TIME 50
21 
22 typedef struct _IMGINFO
23 {
25  INT cxSource;
26  INT cySource;
27  INT iPlanes;
28  INT iBits;
29 } IMGINFO, *PIMGINFO;
30 
32 static const BLENDFUNCTION BlendFunc = {AC_SRC_OVER, 0, 255, AC_SRC_ALPHA};
33 
35 {
36  LPTSTR lpMsg;
37  DWORD LastError;
38 
39  LastError = GetLastError();
40  if (LastError == ERROR_SUCCESS)
41  return;
42 
46  NULL,
47  LastError,
49  (LPTSTR)&lpMsg,
50  0, NULL))
51  {
52  return;
53  }
54 
55  MessageBox(hWndOwner, lpMsg, NULL, MB_OK | MB_ICONERROR);
56  LocalFree(lpMsg);
57 }
58 
59 
60 static VOID InitLogo(HWND hwndDlg)
61 {
62  BITMAP logoBitmap;
63  BITMAP maskBitmap;
65  HDC hDC = GetDC(hwndDlg);
66  HDC hDCLogo = CreateCompatibleDC(NULL);
67  HDC hDCMask = CreateCompatibleDC(NULL);
68  HBITMAP hMask, hLogo, hAlphaLogo = NULL;
69  COLORREF *pBits;
70  INT line, column;
71 
72  if (hDC == NULL || hDCLogo == NULL || hDCMask == NULL)
73  goto Cleanup;
74 
75  ZeroMemory(pImgInfo, sizeof(*pImgInfo));
76  ZeroMemory(&bmpi, sizeof(bmpi));
77 
80 
81  if (hLogo != NULL && hMask != NULL)
82  {
83  GetObject(hLogo, sizeof(logoBitmap), &logoBitmap);
84  GetObject(hMask, sizeof(maskBitmap), &maskBitmap);
85 
86  if (logoBitmap.bmHeight != maskBitmap.bmHeight || logoBitmap.bmWidth != maskBitmap.bmWidth)
87  goto Cleanup;
88 
89  bmpi.bmiHeader.biSize = sizeof(BITMAPINFO);
90  bmpi.bmiHeader.biWidth = logoBitmap.bmWidth;
91  bmpi.bmiHeader.biHeight = logoBitmap.bmHeight;
95  bmpi.bmiHeader.biSizeImage = 4 * logoBitmap.bmWidth * logoBitmap.bmHeight;
96 
97  /* Create a premultiplied bitmap */
98  hAlphaLogo = CreateDIBSection(hDC, &bmpi, DIB_RGB_COLORS, (PVOID*)&pBits, 0, 0);
99  if (!hAlphaLogo)
100  goto Cleanup;
101 
102  SelectObject(hDCLogo, hLogo);
103  SelectObject(hDCMask, hMask);
104 
105  for (line = logoBitmap.bmHeight - 1; line >= 0; line--)
106  {
107  for (column = 0; column < logoBitmap.bmWidth; column++)
108  {
109  COLORREF alpha = GetPixel(hDCMask, column, line) & 0xFF;
110  COLORREF Color = GetPixel(hDCLogo, column, line);
111  DWORD r, g, b;
112 
113  r = GetRValue(Color) * alpha / 255;
114  g = GetGValue(Color) * alpha / 255;
115  b = GetBValue(Color) * alpha / 255;
116 
117  *pBits++ = b | (g << 8) | (r << 16) | (alpha << 24);
118  }
119  }
120 
121  pImgInfo->hBitmap = hAlphaLogo;
122  pImgInfo->cxSource = logoBitmap.bmWidth;
123  pImgInfo->cySource = logoBitmap.bmHeight;
124  pImgInfo->iBits = logoBitmap.bmBitsPixel;
125  pImgInfo->iPlanes = logoBitmap.bmPlanes;
126  }
127 
128 Cleanup:
129  if (hMask != NULL) DeleteObject(hMask);
130  if (hLogo != NULL) DeleteObject(hLogo);
131  if (hDCMask != NULL) DeleteDC(hDCMask);
132  if (hDCLogo != NULL) DeleteDC(hDCLogo);
133  if (hDC != NULL) ReleaseDC(hwndDlg, hDC);
134 }
135 
137 {
138  switch (uMsg)
139  {
140  case WM_PAINT:
141  {
142  PAINTSTRUCT PS;
143  HDC hdcMem, hdc;
144  LONG left;
145 
146  hdc = wParam != 0 ? (HDC)wParam : BeginPaint(hwnd, &PS);
147 
148  GetClientRect(hwnd, &PS.rcPaint);
149 
150  /* Position image in center of dialog */
151  left = (PS.rcPaint.right - pImgInfo->cxSource) / 2;
153 
154  if (hdcMem != NULL)
155  {
157  /* FIXME: We should not rely on AlphaBlend and we should not import MSIMG32 solely for that function */
159  DeleteDC(hdcMem);
160  }
161 
162  if (wParam == 0)
163  EndPaint(hwnd,&PS);
164  break;
165  }
166  }
167  return TRUE;
168 }
169 
171 {
172  LPTSTR lpBuf = NULL;
173  DWORD BufSize = 0;
174  DWORD Type;
175 
177  {
178  lpBuf = HeapAlloc(GetProcessHeap(), 0, BufSize);
179 
180  if (!lpBuf)
181  return;
182 
184  SetDlgItemText(hwnd, uID, lpBuf);
185 
186  HeapFree(GetProcessHeap(), 0, lpBuf);
187  }
188 }
189 
191 {
192  LPTSTR lpBuf = NULL;
193  DWORD BufSize = 0;
194  DWORD Type;
195  INT Ret = 0;
196  TCHAR szBuf[31];
197  TCHAR* szLastSpace;
198  INT LastSpace = 0;
199 
201  {
202  lpBuf = HeapAlloc(GetProcessHeap(), 0, BufSize);
203 
204  if (!lpBuf)
205  return 0;
206 
208  {
209  if (BufSize > ((30 + 1) * sizeof(TCHAR)))
210  {
211  /* Wrap the Processor Name String like XP does: *
212  * - Take the first 30 characters and look for the last space. *
213  * Then wrap the string after this space. *
214  * - If no space is found, wrap the string after character 30. *
215  * *
216  * For example the Processor Name String of a Pentium 4 is right-aligned. *
217  * With this wrapping the first line looks centered. */
218 
219  _tcsncpy(szBuf, lpBuf, 30);
220  szBuf[30] = 0;
221  szLastSpace = _tcsrchr(szBuf, ' ');
222 
223  if (szLastSpace == 0)
224  {
225  LastSpace = 30;
226  }
227  else
228  {
229  LastSpace = (szLastSpace - szBuf);
230  szBuf[LastSpace] = 0;
231  }
232 
233  _tcsncpy(szBuf, lpBuf, LastSpace);
234 
235  SetDlgItemText(hwnd, uID1, szBuf);
236  SetDlgItemText(hwnd, uID2, lpBuf+LastSpace+1);
237 
238  /* Return the number of used lines */
239  Ret = 2;
240  }
241  else
242  {
243  SetDlgItemText(hwnd, uID1, lpBuf);
244  Ret = 1;
245  }
246  }
247 
248  HeapFree(GetProcessHeap(), 0, lpBuf);
249  }
250 
251  return Ret;
252 }
253 
254 static VOID MakeFloatValueString(DOUBLE* dFloatValue, LPTSTR szOutput, LPTSTR szAppend)
255 {
256  TCHAR szDecimalSeparator[4];
257 
258  /* Get the decimal separator for the current locale */
259  if (GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, szDecimalSeparator, sizeof(szDecimalSeparator) / sizeof(TCHAR)) > 0)
260  {
261  UCHAR uDecimals;
262  UINT uIntegral;
263 
264  /* Show the value with two decimals */
265  uIntegral = (UINT)*dFloatValue;
266  uDecimals = (UCHAR)((UINT)(*dFloatValue * 100) - uIntegral * 100);
267 
268  wsprintf(szOutput, _T("%u%s%02u %s"), uIntegral, szDecimalSeparator, uDecimals, szAppend);
269  }
270 }
271 
273 {
274  TCHAR szBuf[64], szHz[16];
275  DWORD BufSize = sizeof(DWORD);
276  DWORD Type = REG_SZ;
278 
279  ZeroMemory(&ppi, sizeof(ppi));
280 
282  NULL,
283  0,
284  (PVOID)&ppi,
285  sizeof(ppi)) == STATUS_SUCCESS &&
286  ppi.CurrentMhz != 0) || RegQueryValueEx(hKey, Value, NULL, &Type, (PBYTE)&ppi.CurrentMhz, &BufSize) == ERROR_SUCCESS)
287  {
288  if (ppi.CurrentMhz < 1000)
289  {
290  if (!LoadString(hApplet, IDS_MEGAHERTZ, szHz, _countof(szHz)))
291  {
292  return;
293  }
294  StringCchPrintf(szBuf, _countof(szBuf), _T("%lu %s"), ppi.CurrentMhz, szHz);
295  }
296  else
297  {
298  double flt = ppi.CurrentMhz / 1000.0;
299  if (!LoadString(hApplet, IDS_GIGAHERTZ, szHz, _countof(szHz)))
300  {
301  return;
302  }
303  MakeFloatValueString(&flt, szBuf, szHz);
304  }
305 
306  SetDlgItemText(hwnd, uID, szBuf);
307  }
308 }
309 
311 {
312  HKEY hKey;
313  TCHAR SysKey[] = _T("HARDWARE\\DESCRIPTION\\System");
314  TCHAR ProcKey[] = _T("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0");
315  MEMORYSTATUSEX MemStat;
316  TCHAR Buf[32];
317  WCHAR SMBiosName[96];
318  INT CurMachineLine = IDC_MACHINELINE1;
319 
320  /*
321  * Get hardware device name or motherboard name
322  * using information from raw SMBIOS data
323  */
324  if (GetSystemName(SMBiosName, _countof(SMBiosName)))
325  {
326  SetDlgItemText(hwnd, CurMachineLine, SMBiosName);
327  CurMachineLine++;
328  }
329  else
330  {
331  /* If SMBIOS is not available, use System Identifier */
333  {
334  SetRegTextData(hwnd, hKey, _T("Identifier"), CurMachineLine);
335  CurMachineLine++;
336  RegCloseKey(hKey);
337  }
338  }
339  /*
340  * Get Processor information
341  * although undocumented, this information is being pulled
342  * directly out of the registry instead of via setupapi as it
343  * contains all the info we need, and should remain static
344  */
346  {
347  INT PrevMachineLine;
348 
349  SetRegTextData(hwnd, hKey, _T("VendorIdentifier"), CurMachineLine);
350  CurMachineLine++;
351 
352  PrevMachineLine = CurMachineLine;
353  CurMachineLine += SetProcNameString(hwnd,
354  hKey,
355  _T("ProcessorNameString"),
356  CurMachineLine,
357  CurMachineLine + 1);
358 
359  if (CurMachineLine == PrevMachineLine)
360  {
361  /* TODO: Try obtaining CPU name from WMI (i.e. CIM_Processor) */
362 
363  /* Brand String is not available, use Identifier instead */
364  CurMachineLine += SetProcNameString(hwnd,
365  hKey,
366  _T("Identifier"),
367  CurMachineLine,
368  CurMachineLine + 1);
369  }
370 
371  SetProcSpeed(hwnd, hKey, _T("~MHz"), CurMachineLine);
372  CurMachineLine++;
373  RegCloseKey(hKey);
374  }
375 
376  /* Get total physical RAM */
377  MemStat.dwLength = sizeof(MemStat);
378 
379  if (GlobalMemoryStatusEx(&MemStat))
380  {
381  TCHAR szStr[32];
382  double dTotalPhys;
383 
384  if (MemStat.ullTotalPhys > 1024 * 1024 * 1024)
385  {
386  UINT i = 0;
387  static const UINT uStrId[] = { IDS_GIGABYTE, IDS_TERABYTE, IDS_PETABYTE};
388 
389  // We're dealing with GBs or more
390  MemStat.ullTotalPhys /= 1024 * 1024;
391 
392  if (MemStat.ullTotalPhys > 1024 * 1024)
393  {
394  // We're dealing with TBs or more
395  MemStat.ullTotalPhys /= 1024;
396  i++;
397 
398  if (MemStat.ullTotalPhys > 1024 * 1024)
399  {
400  // We're dealing with PBs or more
401  MemStat.ullTotalPhys /= 1024;
402  i++;
403 
404  dTotalPhys = (double)MemStat.ullTotalPhys / 1024;
405  }
406  else
407  {
408  dTotalPhys = (double)MemStat.ullTotalPhys / 1024;
409  }
410  }
411  else
412  {
413  dTotalPhys = (double)MemStat.ullTotalPhys / 1024;
414  }
415 
416  LoadString(hApplet, uStrId[i], szStr, sizeof(szStr) / sizeof(TCHAR));
417  MakeFloatValueString(&dTotalPhys, Buf, szStr);
418  }
419  else
420  {
421  // We're dealing with MBs, don't show any decimals
422  LoadString(hApplet, IDS_MEGABYTE, szStr, sizeof(szStr) / sizeof(TCHAR));
423  wsprintf(Buf, _T("%u %s"), (UINT)MemStat.ullTotalPhys / 1024 / 1024, szStr);
424  }
425 
426  SetDlgItemText(hwnd, CurMachineLine, Buf);
427  }
428 }
429 
431 {
432  HWND hRosVersion;
433  SIZE_T lenStr, lenVersion;
434  PCWSTR pwszVersion = L" " TEXT(KERNEL_VERSION_RC);
435  PWSTR pwszStr;
436 
437  lenVersion = wcslen(pwszVersion);
438  if (lenVersion == 0)
439  {
440  return;
441  }
442 
443  hRosVersion = GetDlgItem(hwnd, IDC_ROSVERSION);
444  if (!hRosVersion)
445  {
446  return;
447  }
448  lenStr = GetWindowTextLengthW(hRosVersion);
449  lenStr += lenVersion + 1;
450  pwszStr = HeapAlloc(GetProcessHeap(), 0, lenStr * sizeof(WCHAR));
451  if (!pwszStr)
452  {
453  return;
454  }
455  GetWindowText(hRosVersion, pwszStr, lenStr);
456 
457  StringCchCatW(pwszStr, lenStr, pwszVersion);
458  SetWindowText(hRosVersion, pwszStr);
459 
460  HeapFree(GetProcessHeap(), 0, pwszStr);
461 }
462 
464 {
466 
469 
471 }
472 
474 {
475  ULONGLONG (WINAPI * pGetTickCount64)(VOID);
476  ULONGLONG Ticks64;
477  HMODULE hModule = GetModuleHandleW(L"kernel32.dll");
478 
479  pGetTickCount64 = (PVOID)GetProcAddress(hModule, "GetTickCount64");
480  if (pGetTickCount64)
481  {
482  return pGetTickCount64() / 1000;
483  }
484 
485  hModule = LoadLibraryW(L"kernel32_vista.dll");
486 
487  if (!hModule)
488  {
489  return GetSecondsQPC();
490  }
491 
492  pGetTickCount64 = (PVOID)GetProcAddress(hModule, "GetTickCount64");
493 
494  if (pGetTickCount64)
495  {
496  Ticks64 = pGetTickCount64() / 1000;
497  }
498  else
499  {
500  Ticks64 = GetSecondsQPC();
501  }
502 
504  return Ticks64;
505 }
506 
508 {
509  HWND hRosUptime;
510  WCHAR szBuf[64], szStr[64];
511  ULONG cSeconds;
512 
513  hRosUptime = GetDlgItem(hwnd, IDC_UPTIME);
514  if (!hRosUptime)
515  {
516  return;
517  }
518  if (!LoadStringW(hApplet, IDS_UPTIME_FORMAT, szStr, _countof(szStr)))
519  {
520  return;
521  }
522  cSeconds = GetSeconds();
523  StringCchPrintfW(szBuf, _countof(szBuf), szStr,
524  cSeconds / (60*60*24),
525  (cSeconds / (60*60)) % 24,
526  (cSeconds / 60) % 60,
527  cSeconds % 60);
528 
529  SetWindowTextW(hRosUptime, szBuf);
530 }
531 
532 /* Property page dialog callback */
534 {
537 
538  switch (uMsg)
539  {
540  case WM_INITDIALOG:
542  if (pImgInfo == NULL)
543  {
544  EndDialog(hwndDlg, 0);
545  return FALSE;
546  }
547 
548  InitLogo(hwndDlg);
550  GetSystemInformation(hwndDlg);
551  GetSystemVersion(hwndDlg);
552  GetSystemUptime(hwndDlg);
553  break;
554 
555  case WM_DESTROY:
557  break;
558 
559  case WM_COMMAND:
560  if (LOWORD(wParam) == IDC_LICENCE)
561  {
563 
564  return TRUE;
565  }
566  break;
567 
568  case WM_DRAWITEM:
569  {
571 
572  if (lpDrawItem->CtlID == IDC_ROSIMG)
573  {
574  HDC hdcMem;
575  LONG left;
576 
577  /* Position image in centre of dialog */
578  left = (lpDrawItem->rcItem.right - pImgInfo->cxSource) / 2;
579 
580  hdcMem = CreateCompatibleDC(lpDrawItem->hDC);
581  if (hdcMem != NULL)
582  {
584  BitBlt(lpDrawItem->hDC,
585  left,
586  lpDrawItem->rcItem.top,
587  lpDrawItem->rcItem.right - lpDrawItem->rcItem.left,
588  lpDrawItem->rcItem.bottom - lpDrawItem->rcItem.top,
589  hdcMem,
590  0,
591  0,
592  SRCCOPY);
593  DeleteDC(hdcMem);
594  }
595  }
596  return TRUE;
597  }
598 
599  case WM_NOTIFY:
600  {
601  NMHDR *nmhdr = (NMHDR *)lParam;
602 
603  if (nmhdr->idFrom == IDC_ROSHOMEPAGE_LINK && nmhdr->code == NM_CLICK)
604  {
605  PNMLINK nml = (PNMLINK)nmhdr;
606 
607  ShellExecuteW(hwndDlg, L"open", nml->item.szUrl, NULL, NULL, SW_SHOWNORMAL);
608  }
609  break;
610  }
611 
612  }
613 
614  return FALSE;
615 }
#define RegQueryValueEx
Definition: winreg.h:524
#define IDC_ROSVERSION
Definition: resource.h:77
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define MAKEINTRESOURCE
Definition: winuser.h:591
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define IDS_GIGABYTE
Definition: resource.h:20
BITMAPINFOHEADER bmiHeader
Definition: wingdi.h:1475
#define ERROR_SUCCESS
Definition: deptool.c:10
INT iBits
Definition: userinit.h:53
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
HDC WINAPI GetDC(_In_opt_ HWND)
#define KEY_READ
Definition: nt_native.h:1023
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
uint16_t * PWSTR
Definition: typedefs.h:56
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define IDS_MEGAHERTZ
Definition: resource.h:61
struct _IMGINFO * PIMGINFO
#define LOCALE_USER_DEFAULT
VOID ShowLastWin32Error(HWND hWndOwner)
Definition: general.c:34
_TCHAR * _tcsncpy(_TCHAR *dst, const _TCHAR *src, size_t n)
Definition: tcsncpy.h:9
static HDC
Definition: imagelist.c:92
static VOID MakeFloatValueString(DOUBLE *dFloatValue, LPTSTR szOutput, LPTSTR szAppend)
Definition: general.c:254
#define CALLBACK
Definition: compat.h:35
#define IDS_UPTIME_FORMAT
Definition: resource.h:64
#define GetLocaleInfo
Definition: winnls.h:1183
LONG top
Definition: windef.h:307
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1499
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1044
#define GetRValue(quad)
Definition: precomp.h:64
#define ZeroMemory
Definition: winbase.h:1648
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
#define IDS_MEGABYTE
Definition: resource.h:19
HINSTANCE hApplet
Definition: access.c:17
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
UINT_PTR WPARAM
Definition: windef.h:207
LONG left
Definition: windef.h:306
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
int32_t INT_PTR
Definition: typedefs.h:64
#define AC_SRC_ALPHA
Definition: alphablend.c:9
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
Definition: blt.cpp:2
LONG right
Definition: windef.h:308
#define IDB_ROSBMP
Definition: resource.h:13
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define DWORD
Definition: nt_native.h:44
static VOID GetSystemInformation(HWND hwnd)
Definition: general.c:310
int32_t INT
Definition: typedefs.h:58
#define SetWindowLongPtr
Definition: treelist.c:70
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
WPARAM wParam
Definition: combotst.c:138
CHAR * LPTSTR
Definition: xmlstorage.h:192
#define GetWindowText
Definition: winuser.h:5773
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:325
#define IDC_UPTIME
Definition: resource.h:78
#define IDC_LICENCE
Definition: resource.h:74
static VOID GetSystemVersion(HWND hwnd)
Definition: general.c:430
UINT code
Definition: winuser.h:3134
#define DialogBox
Definition: winuser.h:5736
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
#define IDC_ROSIMG
Definition: resource.h:75
#define StringCchPrintf
Definition: strsafe.h:517
#define FALSE
Definition: types.h:117
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
Definition: cursoricon.c:2172
long LONG
Definition: pedump.c:60
NTSTATUS WINAPI CallNtPowerInformation(POWER_INFORMATION_LEVEL InformationLevel, PVOID lpInputBuffer, ULONG nInputBufferSize, PVOID lpOutputBuffer, ULONG nOutputBufferSize)
Definition: powrprof.c:59
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
UINT_PTR idFrom
Definition: winuser.h:3133
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
DWORD biCompression
Definition: amvideo.idl:35
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:400
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
Definition: string.c:80
#define IDC_MACHINELINE1
Definition: resource.h:68
BOOL WINAPI QueryPerformanceFrequency(OUT PLARGE_INTEGER lpFrequency)
Definition: perfcnt.c:45
INT_PTR CALLBACK LicenceDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: licence.c:63
struct _IMGINFO IMGINFO
#define LoadLibraryW(x)
Definition: compat.h:606
struct tagNMLINK * PNMLINK
LONG_PTR LPARAM
Definition: windef.h:208
#define IDC_ROSHOMEPAGE_LINK
Definition: resource.h:76
Definition: parser.c:48
#define GetBValue(quad)
Definition: precomp.h:66
#define LOCALE_SDECIMAL
Definition: winnls.h:42
static const BLENDFUNCTION BlendFunc
Definition: general.c:32
WCHAR szUrl[L_MAX_URL_LENGTH]
Definition: commctrl.h:4753
#define BufSize
Definition: FsRtlTunnel.c:28
void * PVOID
Definition: retypes.h:9
INT_PTR CALLBACK GeneralPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: general.c:173
INT cySource
Definition: userinit.h:51
#define FORMAT_MESSAGE_FROM_SYSTEM
Definition: winbase.h:404
#define GetGValue(quad)
Definition: precomp.h:65
#define b
Definition: ke_i.h:79
#define WM_DESTROY
Definition: winuser.h:1591
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:406
static INT SetProcNameString(HWND hwnd, HKEY hKey, LPTSTR Value, UINT uID1, UINT uID2)
Definition: general.c:190
char TCHAR
Definition: xmlstorage.h:189
GLboolean GLboolean g
Definition: glext.h:6204
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
#define _T(x)
Definition: vfdio.h:22
#define FreeLibrary(x)
Definition: compat.h:607
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define IDS_TERABYTE
Definition: resource.h:21
DWORD COLORREF
Definition: windef.h:300
uint64_t ULONGLONG
Definition: typedefs.h:67
#define _countof(array)
Definition: sndvol32.h:68
int WINAPI GetWindowTextLengthW(_In_ HWND)
#define WINAPI
Definition: msvc.h:6
Type
Definition: Type.h:6
unsigned long DWORD
Definition: ntddk_ex.h:95
INT iPlanes
Definition: userinit.h:52
GLint left
Definition: glext.h:7726
DWORD biSizeImage
Definition: amvideo.idl:36
#define GetObject
Definition: wingdi.h:4467
#define SetDlgItemText
Definition: winuser.h:5824
#define IDB_ROSMASK
Definition: resource.h:7
#define WM_PAINT
Definition: winuser.h:1602
static PIMGINFO pImgInfo
Definition: general.c:31
#define FormatMessage
Definition: winbase.h:3635
BOOL WINAPI QueryPerformanceCounter(OUT PLARGE_INTEGER lpPerformanceCount)
Definition: perfcnt.c:23
unsigned char UCHAR
Definition: xmlstorage.h:181
char line[200]
Definition: main.c:97
static const WCHAR L[]
Definition: oid.c:1250
ULONGLONG GetSecondsQPC(VOID)
Definition: general.c:463
HDC hdc
Definition: main.c:9
#define IDS_GIGAHERTZ
Definition: resource.h:62
#define AC_SRC_OVER
Definition: wingdi.h:1368
#define MB_ICONERROR
Definition: winuser.h:781
#define VOID
Definition: acefi.h:82
#define MessageBox
Definition: winuser.h:5797
#define WM_COMMAND
Definition: winuser.h:1722
static const WCHAR Cleanup[]
Definition: register.c:80
#define NM_CLICK
Definition: commctrl.h:130
#define IDS_PETABYTE
Definition: resource.h:22
static VOID InitLogo(HWND hwndDlg)
Definition: general.c:60
#define GWLP_WNDPROC
Definition: treelist.c:66
INT cxSource
Definition: userinit.h:50
ULONGLONG GetSeconds(VOID)
Definition: general.c:473
#define FORMAT_MESSAGE_IGNORE_INSERTS
Definition: winbase.h:401
static HDC hDC
Definition: 3dtext.c:33
ULONG_PTR SIZE_T
Definition: typedefs.h:80
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define RegOpenKeyEx
Definition: winreg.h:520
#define SW_SHOWNORMAL
Definition: winuser.h:764
#define TEXT(s)
Definition: k32.h:26
BITMAPINFO bmpi
Definition: alphablend.c:68
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
BOOL WINAPI DeleteDC(_In_ HDC)
FxAutoRegKey hKey
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
Definition: bitmap.c:197
Definition: bl.h:1331
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:530
HBITMAP hBitmap
Definition: userinit.h:49
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define SetWindowText
Definition: winuser.h:5832
unsigned int UINT
Definition: ndis.h:50
#define IDD_LICENCE
Definition: resource.h:208
#define NULL
Definition: types.h:112
#define MB_OK
Definition: winuser.h:784
#define IMAGE_BITMAP
Definition: winuser.h:211
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
LRESULT CALLBACK RosImageProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: general.c:136
static LARGE_INTEGER Frequency
Definition: clock.c:41
static LARGE_INTEGER Counter
Definition: clock.c:43
#define WM_DRAWITEM
Definition: winuser.h:1627
#define AlphaBlend
Definition: misc.c:293
_TCHAR * _tcsrchr(const _TCHAR *s, _XINT c)
Definition: tcsrchr.h:4
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
Definition: shlexec.cpp:2274
GLclampf GLclampf GLclampf alpha
Definition: gl.h:1740
unsigned int ULONG
Definition: retypes.h:1
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
double DOUBLE
Definition: typedefs.h:70
LONG bottom
Definition: windef.h:309
#define GetProcAddress(x, y)
Definition: compat.h:612
BOOL GetSystemName(PWSTR pBuf, SIZE_T cchBuf)
Definition: smbios.c:491
BOOL NTAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer)
Definition: heapmem.c:1272
static HBITMAP
Definition: button.c:44
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define STATUS_SUCCESS
Definition: shellext.h:65
GLenum GLenum GLvoid GLvoid * column
Definition: glext.h:5664
static VOID SetRegTextData(HWND hwnd, HKEY hKey, LPTSTR Value, UINT uID)
Definition: general.c:170
LONG_PTR LRESULT
Definition: windef.h:209
#define wsprintf
Definition: winuser.h:5840
#define DIB_RGB_COLORS
Definition: wingdi.h:366
#define LR_DEFAULTCOLOR
Definition: winuser.h:1077
BYTE * PBYTE
Definition: pedump.c:66
#define WM_INITDIALOG
Definition: winuser.h:1721
#define BI_RGB
Definition: precomp.h:47
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define HeapFree(x, y, z)
Definition: compat.h:594
#define SRCCOPY
Definition: wingdi.h:332
#define LoadString
Definition: winuser.h:5794
static VOID SetProcSpeed(HWND hwnd, HKEY hKey, LPTSTR Value, UINT uID)
Definition: general.c:272
HDC hdcMem
Definition: welcome.c:104
#define WM_NOTIFY
Definition: richedit.h:61
static VOID NTAPI BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
Definition: common.c:49
VOID GetSystemUptime(HWND hwnd)
Definition: general.c:507
#define LANG_USER_DEFAULT
Definition: tnerror.cpp:50
LONGLONG QuadPart
Definition: typedefs.h:114
HMODULE hModule
Definition: animate.c:44
struct tagBITMAPINFO BITMAPINFO
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define REG_SZ
Definition: layer.c:22