次の方法で共有


WSCWriteProviderOrder 関数 (sporder.h)

WSCWriteProviderOrder 関数は、使用可能なトランスポート プロバイダーの順序を変更するために使用されます。 プロトコルの順序によって、使用するプロトコルの列挙または選択時のプロトコルの優先順位が決まります。

構文

int WSCWriteProviderOrder(
  [in] LPDWORD lpwdCatalogEntryId,
  [in] DWORD   dwNumberOfEntries
);

パラメーター

[in] lpwdCatalogEntryId

WSAPROTOCOL_INFO構造体にある CatalogEntryId 要素の配列へのポインター。 CatalogEntryId 要素の順序は、プロトコルの新しい優先順位です。

[in] dwNumberOfEntries

lpwdCatalogEntryId 配列内の要素の数。

戻り値

ルーチンが成功した場合、関数は ERROR_SUCCESS (ゼロ) を返します。 それ以外の場合は、特定のエラー コードを返します。

エラー コード 意味
WSAEINVAL
1 つ以上の引数が無効です。アクションは実行されませんでした。
WSANO_RECOVERY
回復不可能なエラーが発生しました。 このエラーは、ユーザーが Winsock レジストリに書き込むのに必要な管理特権がない、またはカタログ エントリを開いたり書き込んだりするときにエラーが発生したなど、いくつかの条件で返されます。
WSA_NOT_ENOUGH_MEMORY
メモリが不足していました。 このエラーは、新しいカタログ エントリを割り当てるメモリが不足している場合に返されます。
(その他)
ルーチンは、レジストリ エラー コードを返す場合があります。

注釈

トランスポート サービス プロバイダーが最初にインストールされる順序は、サービス プロバイダー インターフェイスの WSCEnumProtocols またはアプリケーション インターフェイスの WSAEnumProtocols を介して列挙される順序を制御します。 さらに重要なのは、この順序は、クライアントがアドレス ファミリ、型、プロトコル識別子に基づいてソケットの作成を要求したときにプロトコルとサービス プロバイダーが考慮される順序も制御することです。

Windows Sockets 2 には、Sporder.exe と呼ばれるアプリケーションが含まれています。これにより、インストールされているプロトコルのカタログを、プロトコルが既にインストールされた後に対話形式で並べ替えることができます。 Windows Sockets 2 には、プロトコルの並べ替えのためにこの手続き型インターフェイスをエクスポートする補助 DLL Sporder.dll も含まれています。 このインターフェイスは、 Sporder.lib とリンクすることでインポートできます。

WSCWriteProviderOrder 関数が失敗する可能性があるシナリオを次に示します。

  • dwNumberOfEntries パラメーターは、登録済みサービス プロバイダーの数と等しくありません。
  • lpwdCatalogEntryId に無効なカタログ識別子が含まれています。
  • lpwdCatalogEntryId には、有効なすべてのカタログ識別子が 1 回のみ含まれているわけではありません。
  • ルーチンは何らかの理由でレジストリにアクセスできません (たとえば、ユーザーのアクセス許可が不十分です)。
  • 別のプロセス (またはスレッド) が現在関数を呼び出しています。

成功すると、 WSCWriteProviderOrder、WSAProviderConfigChange を呼び出して、変更の通知を登録したすべての関心のあるアプリケーションにアラートを送信しようとします。

WSCWriteProviderOrder 関数は、Administrators グループのメンバーとしてログオンしているユーザーのみが呼び出すことができます。 Administrators グループのメンバーではないユーザーが WSCWriteProviderOrder を呼び出すと、関数呼び出しは失敗し、 WSANO_RECOVERY が返されます。 Windows Vista または Windows Server 2008 で実行されているコンピューターの場合、この関数はユーザー アカウント制御 (UAC) のために失敗する可能性もあります。 この関数を含むアプリケーションが、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーによって実行された場合、 requestedExecutionLevelrequireAdministrator に設定されたマニフェスト ファイルでアプリケーションがマークされていない限り、この呼び出しは失敗します。 Windows Vista または Windows Server 2008 上のアプリケーションにこのマニフェスト ファイルがない場合、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしたユーザーは、この関数を成功させるために、拡張シェルで組み込みの Administrator (RunAs 管理者) としてアプリケーションを実行する必要があります。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー sporder.h
Library Sporder.lib
[DLL] Ws2_32.dll

こちらもご覧ください

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols