Здравствуйте, вфкл, Вы писали:
В>имя адаптера узнаю по GetAdaptersInfo. Получаю что-то вроде В>{F0A48EF2-3D17-4B1C-A6F1-2247824DF353} В>Как сопоставить это имя с именем активного удаленного соединения? В>Например, в ipconfig выдается в виде В>Adapter <имя удаленного соединения> В>Не подскажите?
Кидаю кусок кода, который юзаю сам для получения информации об адаптерах. Работает по идее только на Вин2К. Если ты пользуешь Юникод проект, то
соответственно все мои преобразования можешь выкинуть
//////////CUT//////////////////
char* HostName;
unsigned long Size=1000;
HostName = new char[Size];
if(!GetComputerName(HostName, &Size))
{
m_Error->PutError(0, __FILE__, __LINE__,
"Computer name is too long", 1);
goto ret;
}
Adress = new IP_ADAPTER_INFO[100];
AdressSize=sizeof(IP_ADAPTER_INFO)*100;
if(GetAdaptersInfo(Adress, &AdressSize)!=ERROR_SUCCESS)
{
m_Error->PutError(0, __FILE__, __LINE__, "Error enumerating network "\
"adapters. Is there any?", 1);
goto ret;
}
AdrInfo=Adress;
while(AdrInfo!=NULL)
{
char Buffer[1000];
unsigned short AdapterName[1000];
unsigned short FriendlyBuffer[1000];
if(!MultiByteToWideChar(CP_ACP, 0, AdrInfo->AdapterName,
-1, AdapterName, 1000))
{
m_Error->PutError(0, __FILE__, __LINE__,
"Error converting to Unicode", 1);
AdrInfo=AdrInfo->Next;
continue;
}
///Собственно функция ниже и выполняет преобразование GUID адаптера в читаемую форму (но в Юникоде)
if(MprConfigGetFriendlyName(hMprConfig, AdapterName, FriendlyBuffer,
1000)!=NO_ERROR)
{
m_Error->PutError(0, __FILE__, __LINE__, "Error converting adapter "\
"name to a readable form", 1);
// goto ret;
AdrInfo=AdrInfo->Next;
continue;
}
//После вызоыва этой функции Buffer содержит то что тебе нужно
if(!WideCharToMultiByte(CP_ACP, 0, FriendlyBuffer,
-1, Buffer, 1000, NULL, NULL))
{
m_Error->PutError(0, __FILE__, __LINE__,
"Error converting from Unicode", 1);
AdrInfo=AdrInfo->Next;
continue;
}
///Этот кусок не нужен, я запаковываю все в один буфер здесь
int Len=strlen(Buffer)+1;
memcpy(Pointer, &Len, sizeof(int));
Pointer+=sizeof(int);
memcpy(Pointer, Buffer, Len);
Pointer+=Len;