1
« en: Jueves 23 de Septiembre de 2004, 12:50 »
Hola, estoy haciendo un programilla que muestra los adaptadores de red que hay instalados en la máquina. Para ello utilizo la funcion PacketGetAdapterNames que te da un buffer con los nombres y las descripciones de los adaptadores. LA funcion es tal que asi:
void __fastcall CAdaptador::ObtenerListaAdaptadores()
{
DWORD Version,VersionM;
char NombreAdaptador[1024];
WCHAR NombreAdaptadorNT[1024];
ULONG LongAdaptador=1024;
WCHAR *temp, *temp1;
char *tempa, *temp1a;
WCHAR ListaAdaptadoresNT[MaxNumAdaptadores][1024];
Version=GetVersion();
VersionM = (DWORD)(LOBYTE(LOWORD(Version)));
if (!(Version >= 0x80000000 && VersionM >= 4)) { // Windows NT/2000/XP
PacketGetAdapterNames((PTSTR) NombreAdaptadorNT,&LongAdaptador);
temp=NombreAdaptadorNT;
temp1=NombreAdaptadorNT;
while ((*temp!='\0')||(*(temp-1)!='\0')) {
if (*temp=='\0') {
memcpy(ListaAdaptadoresNT[NumAdaptadores],temp1,(temp-temp1)*2);
WideToAsc((WCHAR *)ListaAdaptadoresNT[NumAdaptadores], ListaAdaptadores[NumAdaptadores]); // Convierte a ASCII string
temp1=temp+1;
NumAdaptadores++;
}
temp++;
}
SistemaNT = true;
} else { // Windows 95/98/ME
PacketGetAdapterNames((PTSTR)NombreAdaptador,&LongAdaptador);
tempa=NombreAdaptador;
temp1a=NombreAdaptador;
while ((*tempa!='\0')||(*(tempa-1)!='\0')) {
if (*tempa=='\0') {
memcpy(ListaAdaptadores[NumAdaptadores],temp1a,tempa-temp1a);
temp1a=tempa+1;
NumAdaptadores++;
}
tempa++;
}
SistemaNT = false;
}
}
lo que pasa es que al listarlos me sale "\\Device\\..." en un formato que no es muy
comprensible y quiero la descripcion (que saldria algo asi como "Etherlink model..."
) que sé que está en el buffer. ¿Cómo podría sacarlo?
Saludos.