Click here to Skip to main content
15,923,789 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionHandling messages on an automation server? Pin
frankwer4-May-03 22:34
frankwer4-May-03 22:34 
QuestionHow to make setup in visual c++ 6.0 !!!plz reply soon Pin
summo4-May-03 21:47
summo4-May-03 21:47 
AnswerRe: How to make setup in visual c++ 6.0 !!!plz reply soon Pin
Larry Antram4-May-03 22:00
Larry Antram4-May-03 22:00 
AnswerRe: How to make setup in visual c++ 6.0 !!!plz reply soon Pin
Vikram A Punathambekar5-May-03 0:23
Vikram A Punathambekar5-May-03 0:23 
GeneralGet MAC-address easy Pin
JensB4-May-03 21:02
JensB4-May-03 21:02 
GeneralRe: Get MAC-address easy Pin
Toni784-May-03 21:18
Toni784-May-03 21:18 
GeneralRe: Get MAC-address easy Pin
JensB4-May-03 21:32
JensB4-May-03 21:32 
GeneralRe: Get MAC-address easy - NT, W2K, WXP Pin
geo_m4-May-03 21:39
geo_m4-May-03 21:39 
I have some source code, using the QueryDosDevice, but it is quite long to send it through this forum I guess. And it is solution only for NT I guess, this will not work on win9x Frown | :( But anyway I can try it:

first usage and then the whole code

<br />
// list all adapters in a system<br />
char adapterNames[4096];<br />
LPSTR buffer = adapterNames;<br />
<br />
if( GetAdapterNames(buffer) )<br />
{<br />
	while(*buffer)<br />
	{<br />
	        BYTE a[6];<br />
		if(GetMacAddr(a, buffer))<br />
		{<br />
			printf(" %02.2X-%02.2X-%02.2X-%02.2X-%02.2X-%02.2X\n", a[0], a[1], a[2], a[3], a[4], a[5]);<br />
		}<br />
		buffer = strchr(buffer, 0) + 1;<br />
	}<br />
}<br />
<br />
<br />
//////////////<br />
// the code<br />
<br />
<br />
	BOOL GetAdapterNames( LPSTR buffer )<br />
	{<br />
		HKEY   hRoot = NULL;<br />
		LPCSTR rootName = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards";<br />
<br />
		DWORD  ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE, rootName, 0, KEY_READ, &hRoot );<br />
		if( ret )<br />
			return FALSE; // regopenkey error<br />
<br />
		char   keyName[50];<br />
		DWORD  keyNum = 0;<br />
		LPCSTR valName = "ServiceName";<br />
		__try<br />
		{<br />
			for( ; ; )<br />
			{<br />
				// enumerate all cards in a system<br />
				ret = RegEnumKey( hRoot, keyNum, keyName, 19 );<br />
				if(ret)<br />
				{<br />
					if( ret == ERROR_NO_MORE_ITEMS )<br />
					{<br />
						*buffer = 0;<br />
						return TRUE;<br />
					}<br />
					else<br />
					{<br />
						return FALSE;<br />
					}<br />
				}<br />
<br />
				HKEY hKey = NULL;<br />
				ret = RegOpenKey( hRoot, keyName, &hKey );<br />
				if(ret)<br />
					return FALSE;<br />
<br />
				DWORD buflen = 50;<br />
				// query for serviceName to get UID of the card adapter<br />
				ret = RegQueryValueEx( hKey, valName, NULL, NULL, (LPBYTE)buffer, &buflen );<br />
				RegCloseKey( hKey );<br />
				if( ret )<br />
					return FALSE;<br />
<br />
				buffer += buflen;<br />
				keyNum++;<br />
			}<br />
		}<br />
		__finally<br />
		{<br />
			RegCloseKey( hRoot );<br />
		}<br />
		<br />
		return FALSE;<br />
	};<br />
<br />
<br />
<br />
	BOOL GetMacAddr(LPBYTE buffer, LPCSTR devName)<br />
	{<br />
		BOOL bSuccess = FALSE;<br />
		// Check to see if the DOS name for the MAC driver already exists.<br />
		char linkName[512];<br />
		char deviceName[64];<br />
		BOOL bCreatedDevice = FALSE;<br />
<br />
		if( QueryDosDevice(devName, linkName, sizeof(linkName)) == 0 )<br />
		{<br />
			if( GetLastError() == ERROR_FILE_NOT_FOUND )<br />
			{<br />
				strcat( strcpy(deviceName, "\\Device\\"), devName );<br />
<br />
				// It doesn't exist so create it.<br />
				if( !DefineDosDevice(DDD_RAW_TARGET_PATH, devName, deviceName) )<br />
					return FALSE;<br />
<br />
				bCreatedDevice = TRUE;<br />
			}<br />
			else<br />
				return FALSE;<br />
		}<br />
		<br />
		// Construct a device name to pass to CreateFile<br />
		char macFileName[64];<br />
		strcat( strcpy(macFileName, "\\\\.\\"), devName );<br />
		<br />
		HANDLE hMAC = CreateFile( macFileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL );<br />
		if( hMAC != INVALID_HANDLE_VALUE )<br />
		{<br />
			// We successfully opened the driver, format the IOCTL to pass to the driver.<br />
			BYTE oidData[256];<br />
			NDIS_OID oidCode = OID_802_3_CURRENT_ADDRESS;<br />
			DWORD retCount;<br />
			if( DeviceIoControl(hMAC, IOCTL_NDIS_QUERY_GLOBAL_STATS, &oidCode, sizeof(oidCode), oidData, sizeof(oidData), &retCount, NULL) )<br />
			{<br />
				bSuccess = (retCount == 6);<br />
				if( bSuccess )<br />
					memcpy(buffer, oidData, 6);<br />
			}<br />
		}<br />
		<br />
		if(bCreatedDevice)<br />
		{<br />
			// The MAC driver wasn't visible in the Win32 name space so we created<br />
			// a link.  Now we should delete it.<br />
			if( !DefineDosDevice(DDD_RAW_TARGET_PATH | DDD_REMOVE_DEFINITION | DDD_EXACT_MATCH_ON_REMOVE, devName, deviceName) )<br />
			{<br />
				if( hMAC != INVALID_HANDLE_VALUE )<br />
					CloseHandle( hMAC );<br />
<br />
				return FALSE;<br />
			}<br />
		}<br />
<br />
		if( hMAC != INVALID_HANDLE_VALUE )<br />
			CloseHandle( hMAC );<br />
<br />
		return bSuccess;<br />
	}<br />

GeneralRe: Get MAC-address easy Pin
JensB4-May-03 21:43
JensB4-May-03 21:43 
GeneralRe: Get MAC-address easy Pin
geo_m4-May-03 22:01
geo_m4-May-03 22:01 
GeneralRe: Get MAC-address easy Pin
Toni784-May-03 21:52
Toni784-May-03 21:52 
GeneralRe: Get MAC-address easy Pin
JensB4-May-03 22:19
JensB4-May-03 22:19 
GeneralRe: Get MAC-address easy Pin
Dudi Avramov4-May-03 23:14
Dudi Avramov4-May-03 23:14 
GeneralProblem with CreateProcess and SW_HIDE Pin
Thomas Andersen4-May-03 20:58
Thomas Andersen4-May-03 20:58 
GeneralRe: Problem with CreateProcess and SW_HIDE Pin
Michael Dunn4-May-03 21:32
sitebuilderMichael Dunn4-May-03 21:32 
GeneralRe: Problem with CreateProcess and SW_HIDE Pin
Thomas Andersen4-May-03 21:44
Thomas Andersen4-May-03 21:44 
GeneralRe: Problem with CreateProcess and SW_HIDE Pin
jmkhael4-May-03 22:02
jmkhael4-May-03 22:02 
GeneralRe: Problem with CreateProcess and SW_HIDE Pin
Thomas Andersen4-May-03 22:07
Thomas Andersen4-May-03 22:07 
GeneralRe: Problem with CreateProcess and SW_HIDE Pin
jmkhael4-May-03 22:44
jmkhael4-May-03 22:44 
GeneralRe: Problem with CreateProcess and SW_HIDE Pin
Thomas Andersen4-May-03 23:28
Thomas Andersen4-May-03 23:28 
GeneralRe: Problem with CreateProcess and SW_HIDE Pin
Chen Venkataraman5-May-03 10:14
Chen Venkataraman5-May-03 10:14 
GeneralRe: Problem with CreateProcess and SW_HIDE Pin
Thomas Andersen5-May-03 18:48
Thomas Andersen5-May-03 18:48 
GeneralRe: Problem with CreateProcess and SW_HIDE Pin
Joseph Dempsey5-May-03 6:16
Joseph Dempsey5-May-03 6:16 
GeneralRe: Problem with CreateProcess and SW_HIDE Pin
Thomas Andersen5-May-03 18:54
Thomas Andersen5-May-03 18:54 
GeneralNeed Help Auto-Locking NT4.0 Workstation Pin
crasheightball4-May-03 19:54
crasheightball4-May-03 19:54 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.