Newsgroup: it.comp.programmare.win32
Titolo: IPHLPAPI.DLL su Windows NT

Salve a tutti gli amici del Gruppo.
Ho un problemino con Windows NT e ho bisogno di aiuto.
Sto scrivendo un'applicazione che deve rilevare se nel PC in cui gira
esiste almeno una scheda di rete Ethernet connessa.
L'applicazione dovrà girare sia su 2000/XP che NT che Win98, per cui
ho pensato di usare le api IPHLPAPI.DLL che esiste in tutti questi
sistemi.
Con una chiamata a GetIfTable(...) ottengo una struttura  MIB_IFTABLE,
che a sua volta è un array di strutture MIB_IFTABLE, scorro l'array e
in ogni struttura esamino il campo'dwType' che mi dice il tipo di
scheda.
Se è Ethernet (MIB_IF_TYPE_ETHERNET - valore 6) esamino il campo
'dwOperStatus' per vedere se è MIB_IF_OPER_STATUS_OPERATIONAL - valore
5.
Alla fine dovrei avere il totale delle schede Ethernet attive
connesse.
Bene, tutto funziona bene su Windows 2000 e su XP Pro.
Su NT invece, tutte le schede mi restituiscono il valore
MIB_IF_OPER_STATUS_UNREACHABLE, che vorrebbe dire "Adapter WAN non
connesso". Balle. Intatnto non è WAN, e poi è connessa. Posso
tranquillamente andare in rete, usare FTP e tutti i protocolli che
voglio, Proxy Internet etc. NT continua a dire
MIB_IF_OPER_STATUS_UNREACHABLE.
Inoltre, ha anche altre anomalie.
Infatti, sulla macchina Win2000 ho 2 schede Ethernet su bus PCI, 1
connessione remota definita su un modem analogico.
L'elenco mi dà le 2 schede Ethernet e una scheda "virtuale" di tipo 24
= MIB_IF_TYPE_LOOPBACK. Non compare la connessione remota sul modem, a
meno che non sia connessa e attiva, e questo mi sembra normale.
Sulla macchina NT ho invece 1 scheda Ethernet su bus PCI e 1
connessione remota definita su un modem analogico.
L'elenco mi dà la 2 schede Ethernet, la connessione remota CHE VEDE
COME ETHERNET, di nuovo la scheda "virtuale" di tipo 24 =
MIB_IF_TYPE_LOOPBACK.
Le due schede "Ethernet" (quella fisica e la connessione remota) sone
sempre però in stato MIB_IF_OPER_STATUS_UNREACHABLE, anche sono
connesse e operanti.
Mistero...
Qualcuno conosce il problema ed eventualmente mi dà un suggerimento ?
Il programma + in VC++ 6.0, e la documentazione che ho usato è MSDN di
Aprile 2004, l'ultimissima, ma anche MSDN di Visual Studio 6 dice le
stesse cose.
Potrebbe essere un problema di "anzianità" della DLL ? Mi pare di
ricordare che con il SP 5 di NT, Microsoft abbia cambiato tutto lo
strato software di rete...
Il mio sistema NT è fermo al SP 4, in quanto non sono riuscito ad
installare il SP 5, nè il 6 nè il 6a perche hanno la crittografia a 40
bit, mentre io stupidamente ho fatto l'upgrade a IE 5.5 che mi ha
installato la crittografia a 128... Infatti quando Microsoft ha
rilasciato IE 5.5, il SP 5 e 6 erano già usciti, e poi non li ha
upgradati alla crittografia 128, almeno io non sono riuscito a
trovarli da nessuna parte.
Vorrei provare ad estrarre dal SP6 la libreria Iphlpapi.dll e
schiantarla di brutto su NT SP4, purtroppo il sistema non è mio ma di
un cliente e devo uscirein fretta da questo cul-de-sac.
Grazie anticipate a chi mi aiuta.

 Qualcuno conosce il problema ed eventualmente mi dà un suggerimento ?
è un bug di NT 4. L'unico valore che metterà mai in quel campo è 1, che 
solo per puro caso è interpretato nel contesto di un certo attributo di 
una certa riga di una certa tabella MIB come "interfaccia punto-a-punto 
disconnessa". In realtà, dubito che NT 4 possa ottenere lo stato di una 
qualsiasi interfaccia, a parte presente/non presente. Il solo fatto che 
venga elencata significa che l'interfaccia è attiva: qualsiasi problema 
e l'interfaccia non esisterebbe neanche. Rileva la versione del sistema 
e agisci di conseguenza se rilevi un NT con versione inferiore o uguale 
a 4
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.2.1. C, C++ and ASM developers
                               and beta testers are welcome!

 nonostante quello che potrebbe dire il mio nick, sono Juliet. Ah, quasi... 
Grazie del consiglio. Comunque ho trovato il trucco per installare SP6
italiano tenendo la crittografia a 128 di IE 5.5, voglio provare se
con sp6 funziona diversamente.