次の方法で共有


MPR に値を返す

Windows ネットワーク関数は、成功するとWN_SUCCESSを返すか、関数でエラーが発生した場合は一意の 0 以外の値を返します。 さらに、WNetSetLastError と SetLastErrorを使用して、拡張エラー情報を返します。

上記の動作をサポートするために、ネットワーク プロバイダー関数は、戻る前 SetLastError を呼び出さないでください。 これは、MPR が戻った後、ネットワーク プロバイダー API の関数 SetLastError を呼び出すからです。 ネットワーク プロバイダーが SetLastError 直接呼び出すと、冗長な関数呼び出しが行われます。 ネットワーク プロバイダー関数は、単にエラー コードを返す必要があります。 エラー コードは、関数の説明または戻り値 で指定します。 また、ネットワーク プロバイダー関数は、メモリ不足など、システム エラー コード を返す場合があります。 唯一の例外は NPGetCapsです。ネットワーク プロバイダーでサポートされている関数を示すマスクを返す必要があります。

ネットワーク プロバイダー関数が拡張エラー情報を返す必要がある場合は、WNetSetLastError呼び出す必要があります。 この関数は、ネットワーク プロバイダーで使用するために Windows オペレーティング システムによって提供されます。 プロバイダーが WNetSetLastError 呼び出すと、エラーに関する追加情報を含む文字列を設定できます。 この情報はスレッドごとに格納されます。 これは、Windows アプリケーション SetLastError に似ています。 Windows オペレーティング システムは WNetSetLastError 呼び出して、WNetSetLastError を使用して格納されている文字列を確認し、見つかった場合は、ネットワーク要求を開始した呼び出し元アプリケーションに拡張エラー情報を返します。

手記

WNetSetLastErrorの WNet プレフィックスは、WNetSetLastError とは異なり、この API は Windows ネットワーク API セットの一部ではないため、誤解を招きます。 WNetSetLastError は、ネットワーク プロバイダーでのみ使用することを目的としています。 WNetSetLastError 名前は、既存のプロバイダーとの互換性のために保持されます。