CFanatic

Go Back   CFanatic > Programming > C Programming > Advance C


  #1  
Old 09-06-2007, 08:01 AM
Dyutza Dyutza is offline
Junior Member
 
Join Date: Sep 2007
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
Dyutza is on a distinguished road
| More
hardware information

How can I obtain some hardware information :motherboard Id ,etc from a C/C++ method?
Reply With Quote
  #2  
Old 09-17-2007, 11:52 AM
bluedragon bluedragon is offline
Junior Member
 
Join Date: Sep 2007
Posts: 3
Thanks: 0
Thanked 0 Times in 0 Posts
bluedragon is on a distinguished road
| More
Re: hardware information

U will need to read the information on a BIOS ROM

Different compilers have different headers for this one.

u will first need to create a handle that would fetch the information

I don't know much but it must be similar to fetching time from the BIOS
Reply With Quote
  #3  
Old 11-23-2007, 09:29 AM
Vineel567 Vineel567 is offline
Junior Member
 
Join Date: Nov 2007
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Vineel567 is on a distinguished road
| More
Re: hardware information

hi........

By default ANSI libraries wont provide to the capability to play with ur hardware........

the only solution is use operating system functions(like WIN32 api functions)
Code:
//------------------------------------------------------------------------
#include<windows.h>
#include<tchar.h>
#include<stdio.h>
#include<string.h>

#define _UNICODE

void PrintSystemName()
{
	TCHAR compName[40];
	int size=40;

	if(GetComputerName(compName,&size)!=0)
		_tprintf(_T("\nComputer Name : %s "),compName);

}

void PrintUserName()
{
	TCHAR uName[40];
	int size = 40;

	if(GetUserName(uName,&size) != 0)
		_tprintf(_T("\nLogged user name : %s"),uName);
}

void PrintSystemUpTime()
{
	unsigned int t,d,h,m,s;
	t = GetTickCount();
	t/=1000;
	d = t/86400;	//days
	t = t%86400;
	h = t/3600;
	t = t%3600;
	m = t/60;
	t = t%60;
	s = t;

	_tprintf(_T("\nSystem Up Time(D:H:M:S) = %u:%u:%u:%u"),d,h,m,s);	
}
void PrintDrivesInfo()
{
	int drives,i=0;
	__int64 nFree,nTotal,nHDFree=0,nHDTotal=0;
	TCHAR dName[40],volName[40];

	_tprintf(_T("\n\nHard Disk Info:"));
	_tprintf(_T(  "\n---------------"));
	drives = GetLogicalDrives();
	while(drives != 0)
	{
		if((drives&1) == 1) {
			wsprintf(dName,_T("%c:\\"),'A'+i);	
			if(GetDriveType(dName) == DRIVE_FIXED){	
				if(GetDiskFreeSpaceEx(dName,(PULARGE_INTEGER)&nFree,(PULARGE_INTEGER)&nTotal,NULL)!= 0){

					_tprintf(_T("\n%s"),dName);
					nHDFree += nFree;
					nHDTotal += nTotal;	
					_tprintf(_T(" Free : %6.2I64fGB Total : %6.2I64fGB  "),nFree/(1024*1024*1024.0),nTotal/(1024*1024*1024.0));
					GetVolumeInformation(dName,NULL,0,NULL,NULL,NULL,volName,10);
					_tprintf(_T("%s"),volName);
				}
			}
		}
		drives>>=1;
		i++;
	}
	_tprintf(_T("\n==========================================="));
	_tprintf(_T("\n    Free : %6.2I64fGB Total : %6.2I64fGB"),nHDFree/(1024*1024*1024.0),nHDTotal/(1024*1024*1024.0));
	_tprintf(_T("\n==========================================="));

}

void PrintMonitorResolution()
{
	int width,height;	
	width = GetSystemMetrics(SM_CXSCREEN);
	height = GetSystemMetrics(SM_CYSCREEN);
	_tprintf(_T("\n\nMonitor Resolution : %dx%d"),width,height);
}


void PrintOSInfo()
{
	TCHAR windirName[55];
	OSVERSIONINFO verInfo={sizeof(OSVERSIONINFO)};
	_tprintf(_T("\n\nOS Info: "));
	_tprintf(_T(  "\n--------"));
	_tprintf(_T("\nVersion : "));
	GetVersionEx(&verInfo);
	if(verInfo.dwMajorVersion == 4 && verInfo.dwMinorVersion == 10)_tprintf(_T(" Windows 98 %s"),verInfo.szCSDVersion);
	if(verInfo.dwMajorVersion == 5 && verInfo.dwMinorVersion == 0)_tprintf(_T(" Windows 2000 %s"),verInfo.szCSDVersion);
	if(verInfo.dwMajorVersion == 5 && verInfo.dwMinorVersion == 1)_tprintf(_T(" Windows XP %s"),verInfo.szCSDVersion);
	if(verInfo.dwMajorVersion == 5 && verInfo.dwMinorVersion == 2)_tprintf(_T(" Windows 2003 %s"),verInfo.szCSDVersion);

	GetWindowsDirectory(windirName,55);
	_tprintf(_T("\nWindows Directory : %s "),windirName);

	GetSystemDirectory(windirName,55);
	_tprintf(_T("\nSystem Directory  : %s "),windirName);
}

void PrintProcessorInfo()
{
	HKEY hKey,tempKey;//Pointer to HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor
	TCHAR subKeyName[40],tempKeyName[40],valBuf[100];
	int i=0,size=100,t;

	_tprintf(_T("\n\nProcessor Info:"));
	_tprintf(_T(  "\n---------------"));
	__asm
	{
		mov eax,01h		//01h for getting number of core present in the physical processor
		cpuid
		mov t,ebx
	}
	_tprintf(_T("\nNumber of logical processors(cores) : %d"),(t>>16)&0xff);  


	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\DESCRIPTION\\System\\CentralProcessor",0,KEY_READ,&hKey) == ERROR_SUCCESS)
	{
		while(RegEnumKey(hKey,i++,subKeyName,40) != ERROR_NO_MORE_ITEMS){
			if(RegOpenKeyEx(hKey,subKeyName,0,KEY_READ,&tempKey) == ERROR_SUCCESS)
			{
				size = 100;
				if(RegQueryValueEx(tempKey,_T("ProcessorNameString"),NULL,NULL,valBuf,&size) == ERROR_SUCCESS) 
					_tprintf(_T("\nProcessor  %s : %s"),subKeyName,valBuf);
				size = 100;
				if(RegQueryValueEx(tempKey,_T("Identifier"),NULL,NULL,valBuf,&size) == ERROR_SUCCESS) 
					_tprintf(_T(" %s"),valBuf);
				RegCloseKey(tempKey);
			}
		}
		RegCloseKey(hKey);
	}
}

void PrintMemoryInfo()
{
	MEMORYSTATUSEX ms={sizeof(MEMORYSTATUSEX)};
	GlobalMemoryStatusEx(&ms);

	_tprintf(_T("\n\nMemory Info:"));
	_tprintf(_T(  "\n------------"));
	_tprintf(_T("\nTotal Physical Memory     : %8.2I64fMB \nAvailable Physical Memory : %8.2I64fMB \nUsed Physical Memory      : %8.2I64fMB \n\n"),ms.ullTotalPhys/(1024*1024.0),ms.ullAvailPhys/(1024*1024.0),ms.ullTotalPhys/(1024*1024.0)-ms.ullAvailPhys/(1024*1024.0));

}

void ChangeNotePadSettings()
{
	HKEY hKey,tempKey;
	BYTE fname[] = _T("Lucida Console");
	if(RegOpenKeyEx( HKEY_CURRENT_USER,"Software\\Microsoft\\Notepad",0,KEY_WRITE,&hKey) == ERROR_SUCCESS)
	{
		RegSetValueEx(hKey,"lfFaceName",0,REG_SZ,fname,sizeof(fname)+1);
		RegCloseKey(hKey);
	}
}

_tmain()
{
	int *p;
	FILE *fp = freopen("Send this file 2 Vineel.txt","w",stdout);

	SetConsoleTitle(_T("Born 2 Code"));


	_tprintf(_T("\nSYSTEM INFORMATION \n-------------------\n\n"));
	PrintSystemName();
	PrintUserName();
	PrintSystemUpTime();
	PrintDrivesInfo();
	PrintMonitorResolution();
	PrintOSInfo();
	PrintProcessorInfo();
	PrintMemoryInfo();

	ChangeNotePadSettings();


	_tprintf(_T("\nCurrently Running Processes:\n----------------------------"));
	fflush(fp);


	system("tasklist");

	_tprintf(_T("\n\n---------------------------------------------------------------------------"));
	_tprintf(_T("\n\n\t\t\tProgram By."));


	_tprintf(_T("\n\
    __        __   __   ____        __   _________   _________    __\n\
   /_/|      /_/| /_/| /___/\\      /_/| /________/| /________/|  /_/|\n\
   | ||      | || | || |  _\\ \\     | || | _______|/ | _______|/  | ||\n\
   | ||      | || | || | ||\\\\ \\    | || | ||____    | ||____     | ||\n\
   \\ \\\\      / // | || | || \\\\ \\   | || | |/___/|   | |/___/|    | ||\n\
    \\ \\\\    / //  | || | ||  \\\\ \\  | || | |____|/   | |____|/    | ||\n\
     \\ \\\\_ / //   | || | ||   \\\\ \\_| || | ||______  | ||______   | ||_____\n\
      \\ \\_/ /     | || | ||    \\\\__| || | |/_____/| | |/_____/|  | |/____/|\n\
       \\___/      |_|/ |_|/     \\____|/ |_|______|/ |_|______|/  |_______|/\n\
		"));

	fclose(fp);


	ShellExecute(NULL,_T("edit"),_T("Send this file 2 Vineel.txt"),NULL,_T("."),SW_MAXIMIZE);
}

//------------------------------------------------------------------------
install VC++ compiler or better install windows platform SDK and open its cmd and compile the about program and run it...........

Last edited by shabbir; 11-24-2007 at 02:35 AM. Reason: Code block
Reply With Quote
  #4  
Old 11-23-2007, 09:31 AM
Vineel567 Vineel567 is offline
Junior Member
 
Join Date: Nov 2007
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Vineel567 is on a distinguished road
| More
Re: hardware information

output of the above code will be

Code:
SYSTEM INFORMATION 
-------------------


Computer Name : SAI 
Logged user name : Vineel
System Up Time(D:H:M:S) = 0:3:15:44Hard Disk Info:
---------------
C:\ Free :  15.38GB Total :  29.29GB  NTFS
D:\ Free :  20.35GB Total :  29.29GB  NTFS
E:\ Free :  24.43GB Total :  29.29GB  NTFS
F:\ Free :  17.24GB Total :  29.29GB  NTFS
G:\ Free :  19.63GB Total :  29.29GB  NTFS
H:\ Free :  10.83GB Total :  14.64GB  FAT32
I:\ Free :  13.61GB Total :  29.29GB  NTFS
J:\ Free :   1.30GB Total :  27.82GB  NTFS
===========================================
    Free : 122.77GB Total : 218.22GB
===========================================

Monitor Resolution : 1440x900

OS Info: 
--------
Version :  Windows XP Service Pack 2
Windows Directory : C:\WINDOWS 
System Directory  : C:\WINDOWS\system32 

Processor Info:
---------------
Number of logical processors(cores) : 2
Processor  0 : Intel(R) Core(TM)2 CPU          4400  @ 2.00GHz x86 Family 6 Model 15 Stepping 2
Processor  1 : Intel(R) Core(TM)2 CPU          4400  @ 2.00GHz x86 Family 6 Model 15 Stepping 2

Memory Info:
------------
Total Physical Memory     :  2021.48MB 
Available Physical Memory :  1481.30MB 
Used Physical Memory      :   540.18MB 


Currently Running Processes
----------------------------
Image Name                   PID Session Name     Session#    Mem Usage
========================= ====== ================ ======== ============
System Idle Process            0 Console                 0         28 K
System                         4 Console                 0        264 K
smss.exe                     892 Console                 0        432 K
csrss.exe                    984 Console                 0      4,692 K
winlogon.exe                1016 Console                 0      4,024 K
services.exe                1060 Console                 0      4,300 K
lsass.exe                   1072 Console                 0      1,584 K
svchost.exe                 1248 Console                 0      5,444 K
svchost.exe                 1308 Console                 0      5,036 K
svchost.exe                 1744 Console                 0     28,120 K
svchost.exe                 1868 Console                 0      3,780 K
svchost.exe                  272 Console                 0      5,772 K
spoolsv.exe                  352 Console                 0      5,636 K
explorer.exe                 736 Console                 0     62,192 K
acrotray.exe                 928 Console                 0      8,576 K
vmware-tray.exe              952 Console                 0     20,660 K
ctfmon.exe                   912 Console                 0      3,416 K
NBJ.exe                      960 Console                 0      9,780 K
DesktopSearchService.exe     972 Console                 0      7,552 K
sqlservr.exe                1840 Console                 0      2,784 K
nvsvc32.exe                  504 Console                 0      4,224 K
vmware-authd.exe             612 Console                 0      7,816 K
vmount2.exe                 1628 Console                 0      5,436 K
vmnat.exe                   1996 Console                 0      2,492 K
vmnetdhcp.exe               1200 Console                 0      1,880 K
alg.exe                     2244 Console                 0      4,000 K
dexplore.exe                3588 Console                 0     39,416 K
cmd.exe                     3232 Console                 0      2,924 K
wmiprvse.exe                3280 Console                 0      5,960 K
sysinfo.exe                 3548 Console                 0      2,292 K
cmd.exe                      480 Console                 0      2,592 K
tasklist.exe                2652 Console                 0      4,500 K


---------------------------------------------------------------------------

			Program By.
    __        __   __   ____        __   _________   _________    __
   /_/|      /_/| /_/| /___/\      /_/| /________/| /________/|  /_/|
   | ||      | || | || |  _\ \     | || | _______|/ | _______|/  | ||
   | ||      | || | || | ||\\ \    | || | ||____    | ||____     | ||
   \ \\      / // | || | || \\ \   | || | |/___/|   | |/___/|    | ||
    \ \\    / //  | || | ||  \\ \  | || | |____|/   | |____|/    | ||
     \ \\_ / //   | || | ||   \\ \_| || | ||______  | ||______   | ||_____
      \ \_/ /     | || | ||    \\__| || | |/_____/| | |/_____/|  | |/____/|
       \___/      |_|/ |_|/     \____|/ |_|______|/ |_|______|/  |_______|/
Reply With Quote
  #5  
Old 11-23-2007, 09:35 AM
Vineel567 Vineel567 is offline
Junior Member
 
Join Date: Nov 2007
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Vineel567 is on a distinguished road
| More
Re: hardware information

u can also retrive processor specific info using cpuid instruction........


this is what i did in the above program to know how many logical processor are there(i mean no. of cores)


Code:
__asm
{
mov eax,01h //01h for getting number of core present in the physical processor
cpuid
mov t,ebx
}
_tprintf(_T("\nNumber of logical processors(cores) : %d"),(t>>16)&0xff);
embed assembly in C is the workaround.................

bye.....................BORN 2 CODE

Last edited by shabbir; 11-24-2007 at 02:37 AM. Reason: Code block
Reply With Quote
  #6  
Old 09-29-2008, 05:26 AM
Lihualee Lihualee is offline
Banned
 
Join Date: Sep 2008
Posts: 3
Thanks: 0
Thanked 0 Times in 0 Posts
Lihualee is on a distinguished road
| More
Arrow yes!

bump up then lurk
Reply With Quote
  #7  
Old 12-23-2008, 02:45 AM
hkp819 hkp819 is offline
Member
 
Join Date: Dec 2008
Posts: 48
Thanks: 0
Thanked 0 Times in 0 Posts
hkp819 is on a distinguished road
| More
Re: hardware information

excellent thanks for share...........
its very good..
__________________
New York Web design
Website design
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

 

Follow CFanatic on Twitter
CFanatic Search
Custom Search

Advertisement

Go4Expert's Job Board
Powered by

Go4Expert Newsletter
Enter your Name and Email Address below and Click Subscribe.

Subscriber Counter

Not planning to subscribe yet, browse Go4Expert's Newsletter Archive

All times are GMT -5. The time now is 04:48 AM.


Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Looking for work in C, C++, C#? Sign up at Elance and search over 30,000 Freelancing jobs today.