J'ai un problème étrange avec du code qui appelle WNetGetUniversalName. Lorsque j'appelle la fonction, j'obtiens toujours l'erreur 67 (ERROR_BAD_NET_NAME). Mais la connexion réseau existe vraiment.
Donc, à partir de zéro. J'écris une extension de shell Windows qui doit faire des choses avec des fichiers texte qui sont situés sur un lecteur réseau spécifié. Ainsi, lorsque la méthode IShellExtInit :: Initialize est appelée, je stocke le fichier déplacé et obtient le nom de la connexion en utilisant la méthode WNetGetUniversalName.
Donc, je peux être vraiment sûr que le lecteur réseau existe (car il vient de la méthode DragQueryFile).
Voici quelques code:Problème avec WNetGetUniversalName
char buffer[4096];
REMOTE_NAME_INFO *info = (REMOTE_NAME_INFO*)buffer;
DWORD length = 4096;
info->lpConnectionName = NULL;
info->lpRemainingPath = NULL;
info->lpUniversalName = NULL;
DWORD error = WNetGetUniversalName(file, REMOTE_NAME_INFO_LEVEL, info, &length);
fichier
est un ATL :: CString qui vient de la méthode DragQueryFile et l'erreur est toujours 67.
chose étrange est que cela ne fonctionnait il y a quelques jours, mais pas plus, et je n'a pas changé aucun de ce code affiché.
Avez-vous vérifié le contenu de 'file' est ce que vous pensez qu'il est? (Via le débogage/Log?) – Ruddy
Oui, j'ai aussi essayé de le coder en dur avec: DWORD dwError = WNetGetUniversalName (_T ("Z: \\ test.txt"), REMOTE_NAME_INFO_LEVEL, info, & dwLength); et DWORD dwError = WNetGetUniversalName (_T ("Z:"), REMOTE_NAME_INFO_LEVEL, info, & dwLength); Toujours le même résultat. –