Je fais appelle a NetServerEnum pour récupérer toutes les stations (et leur noms) d'un domaine. Il me renvoie bien le nombre exact de poste dans l'arguments entriesread mais pour une machine sur deux au lieu d'avoir le nom de la machine j'ai un <EOT>. Pour contourner le probleme, je suis obligé de declarer mon tableau avec entries * 2 entier et transferer et lire deux fois plus de ligne. Quelqu'un a-t-il déja eu le cas et comment le résoudre sans effectuer cette bidouille ?
Voilà mon code :
SV_TYPE_WORKSTATION est un réel = 1 SV_TYPE_ALL est un réel = 0xffffffff MAX_PREFERRED_LENGTH est un entier = -1 RetourFonction est un boolean servername est un entier = 0 // Type C :LPCWSTR, c'est l'adresse d'une chaîne, il est aussi possible de spécifier directement une chaîne level est un entier = 100 // Type C :DWORD bufptr est un entier // Pointeur sur type LPBYTE prefmaxlen est un entier = MAX_PREFERRED_LENGTH // Type C :DWORD entriesread est un entier // Type C :LPDWORD totalentries est un entier // Type C :LPDWORD servertype est un entier = SV_TYPE_ALL // Type C :DWORD domain est un entier = 0 // Type C :LPCWSTR, c'est l'adresse d'une chaîne, il est aussi possible de spécifier directement une chaîne resume_handle est un entier // Type C :LPDWORD i est un entier TableGroupe est un tableau dynamique RetourFonction=AppelDLL32("netapi32.DLL","NetServerEnum",servername,level,&bufptr,prefmaxlen,&entriesread,&totalentries,servertype,domain,resume_handle) TableGroupe = allouer un tableau dynamique entriesread entier Transfert(&TableGroupe,bufptr,entriesread * 4) //4=nb octets pour un entier ChNomPc est une chaîne POUR i = 1 A entriesread ChNomPc = ChaîneRécupère(TableGroupe[i],crAdresseUNICODE) SI ChNomPc <> EOT ALORS TableAjoute(TableSource,"" + TAB + ChNomPc + TAB + "" + TAB + "") FIN FIN AppelDLL32("netapi32.dll","NetApiBufferFree",&bufptr) |