Retour de valeurs au MPR
Les fonctions de mise en réseau Windows retournent WN_SUCCESS en cas de réussite, ou retournent une valeur différente de zéro si la fonction rencontre une erreur. En outre, ils retournent des informations d’erreur étendues à l’aide de WNetSetLastError et SetLastError.
Pour prendre en charge le comportement ci-dessus, les fonctions du fournisseur de réseau ne doivent pas appeler SetLastError avant de retourner. Cela est dû au fait que le MPR appelle SetLastError pour les fonctions dans l’API du fournisseur de réseau après leur retour. Si les fournisseurs réseau appellent SetLastError directement, ils effectuent des appels de fonction redondants. Les fonctions du fournisseur de réseau doivent simplement retourner un code d’erreur. Les codes d’erreur sont spécifiés dans la description de la fonction ou les valeurs de retour. En outre, les fonctions du fournisseur de réseau peuvent retourner tous les codes d’erreur système, tels que la mémoire insuffisante. La seule exception est NPGetCaps, qui doit retourner un masque indiquant les fonctions prises en charge par le fournisseur de réseau.
Si une fonction de fournisseur de réseau doit retourner des informations d’erreur étendues, elle doit appeler WNetSetLastError. Cette fonction est fournie par le système d’exploitation Windows pour une utilisation par les fournisseurs de réseau. Lorsque le fournisseur appelle WNetSetLastError, il peut définir une chaîne contenant des informations supplémentaires sur l’erreur. Ces informations sont stockées par thread. Cela est analogue à SetLastError pour les applications Windows. Le système d’exploitation Windows appelle WNetSetLastError pour case activée pour une chaîne stockée à l’aide de WNetSetLastError et, le cas échéant, retourne les informations d’erreur étendues à l’application appelante qui a lancé la demande réseau.
Notes
Le préfixe WNet De WNetSetLastError est trompeur, car cette API, contrairement à WNetSetLastError, ne fait pas partie de l’ensemble d’API de mise en réseau Windows. WNetSetLastError est destiné à être utilisé uniquement par les fournisseurs de réseau. Le nom , WNetSetLastError, est conservé à des fins de compatibilité avec les fournisseurs existants.