Partilhar via


Devolução de valores ao MPR

As funções de rede do Windows retornam WN_SUCCESS quando bem-sucedidas, ou retornam um valor numérico exclusivo diferente de zero se a função encontrar um erro. Além disso, eles retornam informações de erro estendidas usando WNetSetLastError e SetLastError.

Para suportar o comportamento acima, as funções do provedor de rede não devem chamar SetLastError antes de retornar. Isso ocorre porque o MPR chama SetLastError para as funções na Network Provider API depois que elas retornam. Se os provedores de rede chamarem SetLastError diretamente, eles farão chamadas de função redundantes. As funções do provedor de rede devem simplesmente retornar um código de erro. Os códigos de erro são especificados na descrição da função ou Return Values. Além disso, as funções do provedor de rede podem retornar quaisquer códigos de erro do sistema , como memória insuficiente. A única exceção é NPGetCaps, que deve retornar uma máscara indicando as funções suportadas pelo provedor de rede.

Se uma função de provedor de rede precisar retornar informações de erro estendidas, ela deverá chamar WNetSetLastError. Esta função é fornecida pelo sistema operacional Windows para uso por provedores de rede. Quando o provedor chama WNetSetLastError, ele pode definir uma cadeia de caracteres contendo informações adicionais sobre o erro. Essas informações são armazenadas por thread. Isso é análogo ao SetLastError para aplicativos do Windows. O sistema operacional Windows chama WNetSetLastError para verificar se há uma cadeia de caracteres armazenada usando WNetSetLastError e, se encontrado, retorna as informações de erro estendidas para o aplicativo de chamada que iniciou a solicitação de rede.

Observação

O prefixo WNet de WNetSetLastError é enganoso, uma vez que esta API, ao contrário WNetSetLastError, não faz parte do conjunto de APIs de rede do Windows. WNetSetLastError destina-se a ser utilizado apenas por fornecedores de rede. O nome, WNetSetLastError, é mantido para compatibilidade com provedores existentes.