270{
275 const WCHAR *lpcszSysType;
279 unsigned int cSeconds,
i,
j;
286
288 {
289 wprintf(
L"Error! GetSystemDirectory failed.\n");
290 return;
291 }
292
294
295
298 wprintf(
L"Error! GetComputerName failed.\n");
299 else
301
302
304 L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
305 0,
308 {
309 wprintf(
L"Error! RegOpenKeyEx failed.\n");
310 return;
311 }
312
313
316
317
321
326 L"%lu.%lu.%lu %s %s %lu",
331 Tmp,
333
334
335
336
337
338
341
342
345
346
349
350
353
354
358
359
361
362
366 swprintf(Buf, Tmp, cSeconds / (60*60*24), (cSeconds / (60*60)) % 24, (cSeconds / 60) % 60, cSeconds % 60);
368
369
371
372
373 swprintf(Tmp,
L"%s\\oeminfo.ini", szSystemDir);
377 Buf,
378 sizeof(Buf)/sizeof(Buf[0]),
379 Tmp);
380 if (
wcslen(Buf) == 0 && SMBiosBuf)
381 {
383 }
385
386
390 Buf,
391 sizeof(Buf)/sizeof(Buf[0]),
392 Tmp);
393 if (
wcslen(Buf) == 0 && SMBiosBuf)
394 {
396 }
398
399
401 {
403 lpcszSysType =
L"X86-based PC";
404 break;
406 lpcszSysType =
L"IA64-based PC";
407 break;
409 lpcszSysType =
L"AMD64-based PC";
410 break;
411 default:
412 lpcszSysType =
L"Unknown";
413 break;
414 }
416
417
423 {
424 swprintf(Tmp,
L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\%u",
i);
426
431
433 }
434
435
436 if (SMBiosBuf)
437 {
440 {
443 }
445 }
446 else
447 {
449 L"HARDWARE\\DESCRIPTION\\System",
450 L"SystemBiosVersion",
451 Buf,
453 }
455
456
457 if (SMBiosBuf)
458 {
460 }
461 else
462 {
464 L"HARDWARE\\DESCRIPTION\\System",
466 Buf,
468 }
470
471
473
474
476 wprintf(
L"Error! GetWindowsDirectory failed.");
477 else
479
480
482
483
487 Buf,
490
491
494 L"MIME\\Database\\Rfc1766",
495 Tmp,
496 Buf,
498 {
499
503
505 }
506
507
509 L"Keyboard Layout\\Preload",
511 Tmp,
514 L"MIME\\Database\\Rfc1766",
515 Tmp + 4,
516 Buf,
518 {
519
523
525 }
526
527
529
530
532 L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones",
533 0,
536 {
538
539
542 {
544
546 {
548
550
551 break;
552 }
553 }
555 }
556
557
561
562
565
566
569
570
573
574
577
578
580 L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management",
582 Buf,
584 {
586
587 for(
i = 0; Buf[
i];
i++)
588 {
590 {
592 break;
593 }
594 }
595
597 }
598
599
601 {
604
606 }
607
608
609
610
611 cbAdapters = 4096;
612 pAdapters =
malloc(cbAdapters);
614 {
615 cbAdapters += 4096;
617 }
618
620 {
622 unsigned cAdapters = 0;
623
624
625 for(
i = 0; pCurrentAdapter; ++
i)
626 {
627 if (pCurrentAdapter->IfType != 24 && pCurrentAdapter->IfType != 131)
628 ++cAdapters;
629 pCurrentAdapter = pCurrentAdapter->Next;
630 }
631
632
633
638
639
640 pCurrentAdapter = pAdapters;
641 for(
i = 0; pCurrentAdapter; ++
i)
642 {
643 if (pCurrentAdapter->IfType != 24 && pCurrentAdapter->IfType != 131)
644 {
645 PIP_ADAPTER_UNICAST_ADDRESS pAddress;
646
647 PrintRow(0,
FALSE,
L"[%02u]: %s",
i + 1, pCurrentAdapter->Description);
649 if (!(pCurrentAdapter->Flags & 0x0004))
650 {
654 }
656 {
660 }
661 else
662 {
666 pAddress = pCurrentAdapter->FirstUnicastAddress;
667 for (
j = 0; pAddress; ++
j)
668 {
672 pAddress = pAddress->Next;
673 }
674 }
675 }
676 pCurrentAdapter = pCurrentAdapter->Next;
677 }
678 }
680}
OSVERSIONINFOW VersionInfo
#define RegCloseKey(hKey)
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
VOID WINAPI GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
BOOL WINAPI GetVersionExW(IN LPOSVERSIONINFOW lpVersionInformation)
INT WINAPI GetPrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR def_val, LPWSTR buffer, UINT len, LPCWSTR filename)
DWORD WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
NET_API_STATUS WINAPI NetApiBufferFree(LPVOID Buffer)
HRESULT WINAPI SHLoadIndirectString(LPCWSTR src, LPWSTR dst, UINT dst_len, void **reserved)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
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
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 GLint GLint j
VOID NTAPI GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
static PIP_ADAPTER_ADDRESSES
enum _NETSETUP_JOIN_STATUS NETSETUP_JOIN_STATUS
#define IDS_VIRT_MEM_INUSE
#define IDS_SYS_MANUFACTURER
#define IDS_CONNECTION_NAME
#define IDS_PROCESSORS_FORMAT
#define IDS_UP_TIME_FORMAT
#define IDS_NETWORK_CARDS
#define IDS_TOTAL_PHYS_MEM
#define IDS_AVAIL_PHISICAL_MEM
#define IDS_MEDIA_DISCONNECTED
#define IDS_OS_BUILD_TYPE
#define IDS_VIRT_MEM_AVAIL
#define IDS_NETWORK_CARDS_FORMAT
static BOOL RegGetDWORD(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPDWORD lpData)
static VOID FormatDateTime(time_t Time, LPWSTR lpBuf)
static VOID PrintRow(UINT nTitleID, BOOL bIndent, LPWSTR lpFormat,...)
static unsigned RegGetSZ(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR lpBuf, DWORD cchBuf)
static VOID FormatBytes(LPWSTR lpBuf, unsigned cBytes)
ULONGLONG GetSeconds(VOID)
#define PROCESSOR_ARCHITECTURE_IA64
#define PROCESSOR_ARCHITECTURE_AMD64
#define PROCESSOR_ARCHITECTURE_INTEL
#define KEY_ENUMERATE_SUB_KEYS
#define LOCALE_SYSTEM_DEFAULT
INT WSAAPI WSAAddressToStringW(IN LPSOCKADDR lpsaAddress, IN DWORD dwAddressLength, IN LPWSAPROTOCOL_INFOW lpProtocolInfo, OUT LPWSTR lpszAddressString, IN OUT LPDWORD lpdwAddressStringLength)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
ULONG dwOSVersionInfoSize
DWORD dwNumberOfProcessors
WORD wProcessorArchitecture
SIZE_T GetSMBiosStringW(_In_ PCSTR DmiString, _Out_ PWSTR pBuf, _In_ DWORD cchBuf, _In_ BOOL bTrim)
PVOID LoadSMBiosData(_Inout_updates_(ID_STRINGS_MAX) PCHAR *Strings)
VOID FreeSMBiosData(_In_ PVOID Buffer)
#define ERROR_BUFFER_OVERFLOW
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define HKEY_CLASSES_ROOT
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
NET_API_STATUS WINAPI NetGetJoinInformation(_In_ LPCWSTR lpServer, _Out_ LPWSTR *lpNameBuffer, _Out_ PNETSETUP_JOIN_STATUS BufferType)