258{
259 DWORD dwCharCount, dwTimestamp, dwResult;
274
276 {
278 return;
279 }
280
282
283
287 else
289
290
292 L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
293 0,
296 {
298 return;
299 }
300
301
304
305
309
314 L"%lu.%lu.%lu %s %s %lu",
319 Tmp,
321
322
323
324
325
326
329
330
333
334
337
338
341
342
346
347
349
350
354 swprintf(Buf, Tmp, cSeconds / (60*60*24), (cSeconds / (60*60)) % 24, (cSeconds / 60) % 60, cSeconds % 60);
356
357
359
360
361
362
363 swprintf(Tmp,
L"%s\\oeminfo.ini", szSystemDir);
367 Buf,
369 Tmp);
370 if (
wcslen(Buf) == 0 && SMBiosBuf)
371 {
373 }
375
376
377
378
382 Buf,
384 Tmp);
385 if (
wcslen(Buf) == 0 && SMBiosBuf)
386 {
388 }
390
391
393 {
395 lpcszSysType =
L"X86-based PC";
396 break;
398 lpcszSysType =
L"IA64-based PC";
399 break;
401 lpcszSysType =
L"AMD64-based PC";
402 break;
403 default:
404 lpcszSysType =
L"Unknown";
405 break;
406 }
408
409
415 {
416 swprintf(Tmp,
L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\%u",
i);
418
423
425 }
426
427
428 if (SMBiosBuf)
429 {
432 {
435 }
437 }
438 else
439 {
441 L"HARDWARE\\DESCRIPTION\\System",
442 L"SystemBiosVersion",
443 Buf,
445 }
447
448
449 if (SMBiosBuf)
450 {
452 }
453 else
454 {
456 L"HARDWARE\\DESCRIPTION\\System",
458 Buf,
460 }
462
463
465
466
469 else
471
472
474
475
479 Buf,
482
483
485 {
487 L"MIME\\Database\\Rfc1766",
488 Tmp,
489 Buf,
491 {
492
496
498 }
499 }
500
501
503 L"Keyboard Layout\\Preload",
505 Tmp,
507 {
509 L"MIME\\Database\\Rfc1766",
510 Tmp + 4,
511 Buf,
513 {
514
518
520 }
521 }
522
523
525
526
528 L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones",
529 0,
532 {
533
537 {
539
541 {
543
545
546 break;
547 }
548 }
550 }
551
552
556
557
560
561
564
565
568
569
572
573
575 L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management",
577 Buf,
579 {
581 for (
i = 0; Buf[
i];
i++)
582 {
584 {
586 break;
587 }
588 }
589
591 }
592
593
595 {
598
600 }
601
602
603
604
605 cbAdapters = 4096;
606 pAdapters =
malloc(cbAdapters);
608 {
609 cbAdapters += 4096;
611 }
612
614 {
617
618
619 for (
i = 0; pCurrentAdapter; ++
i)
620 {
622 ++cAdapters;
623 pCurrentAdapter = pCurrentAdapter->Next;
624 }
625
626
631
632
633 pCurrentAdapter = pAdapters;
634 for (
i = 0; pCurrentAdapter; ++
i)
635 {
637 {
638 PIP_ADAPTER_UNICAST_ADDRESS pAddress;
639
640 PrintRow(0,
FALSE,
L"[%02u]: %s",
i + 1, pCurrentAdapter->Description);
642 if (!(pCurrentAdapter->Flags & IP_ADAPTER_DHCP_ENABLED))
643 {
647 }
649 {
653 }
654 else
655 {
659 pAddress = pCurrentAdapter->FirstUnicastAddress;
660 for (
j = 0; pAddress; ++
j)
661 {
665 pAddress = pAddress->Next;
666 }
667 }
668 }
669 pCurrentAdapter = pCurrentAdapter->Next;
670 }
671 }
673}
void ConPrintf(FILE *fp, LPCWSTR psz,...)
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)
INT WINAPI DECLSPEC_HOTPATCH LoadStringW(HINSTANCE instance, UINT resource_id, LPWSTR buffer, INT buflen)
HRESULT WINAPI SHLoadIndirectString(const WCHAR *src, WCHAR *dst, UINT dst_len, void **reserved)
NET_API_STATUS WINAPI NetApiBufferFree(LPVOID Buffer)
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
#define IF_TYPE_SOFTWARE_LOOPBACK
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 VOID FormatBytes(LPWSTR lpBuf, UINT cBytes)
static BOOL RegGetDWORD(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPDWORD lpData)
static VOID FormatDateTime(time_t Time, LPWSTR lpBuf)
static UINT RegGetSZ(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR lpBuf, DWORD cchBuf)
static VOID PrintRow(UINT nTitleID, BOOL bIndent, LPWSTR lpFormat,...)
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
NET_API_STATUS WINAPI NetGetJoinInformation(_In_ LPCWSTR lpServer, _Out_ LPWSTR *lpNameBuffer, _Out_ PNETSETUP_JOIN_STATUS BufferType)