BUG : WnetUseConnection renvoie le message d'erreur ERROR_ALREADY_ASSIGNED dans Windows 2000

Traductions disponibles Traductions disponibles
Numéro d'article: 257298 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F257298
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Sous Windows 2000, un appel vers WNetUseConnection() avec le membre lpLocalName de la structure NETRESOURCE défini sur " NULL " et dwFlags défini sur " CONNECT_REDIRECT " renvoie l'erreur 85 " ERROR_ALREADY_ASSIGNED ". Ce problème affecte également ShellExecuteEx() lors d'une utilisation en conjonction avec l'indicateur SEE_MASK_CONNECTNETDRV.

Cause

La fonction ne choisit pas le périphérique local correct pour la redirection.

Résolution

Pour résoudre ce problème, procurez-vous le dernier service pack Windows 2000. Pour plus d'informations, consultez l'article suivant dans la Base de connaissances Microsoft :
260910 Procédure pour obtenir le dernier service pack Windows 2000

Statut

Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft répertoriés dans la section "Liste des produits concernés par cet article".

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section "Liste des produits concernés par cet article".

Ce problème a été corrigé dans le Service Pack 1 pour Windows 2000.

Plus d'informations

D'après la documentation de WNetUseConnection() disponible sur MSDN, si la valeur CONNECT_REDIRECT est définie dans le paramètre dwFlags et si lpLocalName est configuré sur " NULL ", la fonction devrait choisir un périphérique local pour la redirection et renvoyer le nom du périphérique dans le paramètre lpAccessName. Sous Windows 2000, la fonction WNetUseConnection() échoue cependant et entraîne l'erreur " ERROR_ALREADY_ASSIGNED ".

Étapes à suivre pour reproduire ce comportement

Utilisez l'extrait de code suivant pour reproduire le problème :
 #include <Windows.h>
 #include <stdio.h>
 #include <winnetwk.h>

int main(void)

{

   DWORD       nRet; 
   NETRESOURCE nr;
   LPTSTR      buff;
   DWORD       buffsize = 256;

   nr.lpLocalName  = NULL;
   nr.lpRemoteName = (LPSTR) GlobalAlloc(GPTR, 256);
   buff	           = (LPSTR) GlobalAlloc(GPTR, 256);

	
   nr.dwType = RESOURCETYPE_DISK;
   lstrcpy(nr.lpRemoteName, "\\\\mycomputer\\testshare");
   nr.lpProvider = NULL;


   nRet = WNetUseConnection(  NULL,
                              &nr,  //connection details 
                              NULL,
                              NULL, 
                              CONNECT_REDIRECT,  
                              buff,
                              &buffsize,
                              0
                               );

  if (nRet != 0)
      printf("La fonction a renvoyé l'erreur %d \n", nRet);
  else
 {
     printf("Renvoi de la fonction réussi \n");
     printf("AccessName %s \n", buff);
 }
  return 0;
 
};

Propriétés

Numéro d'article: 257298 - Dernière mise à jour: lundi 10 février 2014 - Version: 5.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Professionel
Mots-clés : 
kbnosurvey kbarchive kbbug kbfix kboswin2000 kbsdkplatform kbwin2000sp1fix kbapi kbnetwork kbwin2000presp1fix kbwnet kbgrpnet kbsdkwin32 KB257298
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com