Isis
11.04.2007, 23:30
Недавно был спор о том как получить MAC адрес ...
На С++ , с помощью библиотеки iphlpapi.dll
#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>
int main()
{
// Указатель на функцию GetAdaptersInfo
typedef DWORD(CALLBACK* PTR_GETADAPTERSINFO)(PIP_ADAPTER_INFO,PULONG);
// Обращение iphlpapi.dll
HINSTANCE iphlpapi;
iphlpapi=LoadLibrary("iphlpapi.dll");
if(!iphlpapi)
{
printf ("iphlpapi.dll not found\n");
return (1);
}
PTR_GETADAPTERSINFO GetAdaptersInfo;
GetAdaptersInfo = (PTR_GETADAPTERSINFO)GetProcAddress(iphlpapi, "GetAdaptersInfo");
ULONG adapter_info_size = 0;
PIP_ADAPTER_INFO ptr_adapter_info = NULL;
PIP_ADAPTER_INFO ptr_adapter_info_first = NULL;
GetAdaptersInfo( ptr_adapter_info, &adapter_info_size );
ptr_adapter_info_first = ptr_adapter_info = (PIP_ADAPTER_INFO) new(
char[adapter_info_size] );
if ( GetAdaptersInfo( ptr_adapter_info, &adapter_info_size ) != ERROR_SUCCESS)
{
printf( "Error while GetAdaptersInfo\n" );
delete( ptr_adapter_info );
return( 1 );
}
while( ptr_adapter_info )
{
printf ( "ID of adapter: %s\n", ptr_adapter_info->AdapterName );
printf ( "Description: %s\n", ptr_adapter_info->Description );
printf ( "MAC address: " );
for( char i=0; i < (int)ptr_adapter_info->AddressLength; i++)
{
printf ("%02x ", (unsigned char)ptr_adapter_info->Address[i]);
}
printf ("\n");
printf ("Adapter type: %u\n\n", ptr_adapter_info->Type );
ptr_adapter_info = ptr_adapter_info->Next;
}
delete( ptr_adapter_info_first );
char a = getchar();
return 0;
}
На С++ , с помощью библиотеки iphlpapi.dll
#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>
int main()
{
// Указатель на функцию GetAdaptersInfo
typedef DWORD(CALLBACK* PTR_GETADAPTERSINFO)(PIP_ADAPTER_INFO,PULONG);
// Обращение iphlpapi.dll
HINSTANCE iphlpapi;
iphlpapi=LoadLibrary("iphlpapi.dll");
if(!iphlpapi)
{
printf ("iphlpapi.dll not found\n");
return (1);
}
PTR_GETADAPTERSINFO GetAdaptersInfo;
GetAdaptersInfo = (PTR_GETADAPTERSINFO)GetProcAddress(iphlpapi, "GetAdaptersInfo");
ULONG adapter_info_size = 0;
PIP_ADAPTER_INFO ptr_adapter_info = NULL;
PIP_ADAPTER_INFO ptr_adapter_info_first = NULL;
GetAdaptersInfo( ptr_adapter_info, &adapter_info_size );
ptr_adapter_info_first = ptr_adapter_info = (PIP_ADAPTER_INFO) new(
char[adapter_info_size] );
if ( GetAdaptersInfo( ptr_adapter_info, &adapter_info_size ) != ERROR_SUCCESS)
{
printf( "Error while GetAdaptersInfo\n" );
delete( ptr_adapter_info );
return( 1 );
}
while( ptr_adapter_info )
{
printf ( "ID of adapter: %s\n", ptr_adapter_info->AdapterName );
printf ( "Description: %s\n", ptr_adapter_info->Description );
printf ( "MAC address: " );
for( char i=0; i < (int)ptr_adapter_info->AddressLength; i++)
{
printf ("%02x ", (unsigned char)ptr_adapter_info->Address[i]);
}
printf ("\n");
printf ("Adapter type: %u\n\n", ptr_adapter_info->Type );
ptr_adapter_info = ptr_adapter_info->Next;
}
delete( ptr_adapter_info_first );
char a = getchar();
return 0;
}