다음을 통해 공유


WSCWriteProviderOrder 함수(sporder.h)

WSCWriteProviderOrder 함수는 사용 가능한 전송 공급자의 순서를 다시 지정하는 데 사용됩니다. 프로토콜 순서는 열거되거나 사용할 프로토콜을 선택할 때 프로토콜의 우선 순위를 결정합니다.

구문

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

매개 변수

[in] lpwdCatalogEntryId

WSAPROTOCOL_INFO 구조체에 있는 CatalogEntryId 요소의 배열에 대한 포인터입니다. CatalogEntryId 요소의 순서는 프로토콜에 대한 새로운 우선 순위 순서입니다.

[in] dwNumberOfEntries

lpwdCatalogEntryId 배열의 요소 수입니다.

반환 값

함수는 루틴이 성공하면 ERROR_SUCCESS (0)를 반환합니다. 그렇지 않으면 특정 오류 코드를 반환합니다.

오류 코드 의미
WSAEINVAL
하나 이상의 인수가 잘못되었으며 아무 작업도 수행되지 않았습니다.
WSANO_RECOVERY
복구할 수 없는 오류가 발생했습니다. 이 오류는 다음과 같은 여러 조건에서 반환됩니다. 사용자가 Winsock 레지스트리에 쓰는 데 필요한 관리 권한이 없거나 카탈로그 항목을 열거나 작성할 때 오류가 발생했습니다.
WSA_NOT_ENOUGH_MEMORY
메모리가 부족했습니다. 이 오류는 새 카탈로그 항목을 할당할 메모리가 부족한 경우 반환됩니다.
(기타)
루틴은 레지스트리 오류 코드를 반환할 수 있습니다.

설명

전송 서비스 공급자가 처음 설치되는 순서는 서비스 공급자 인터페이스의 WSCEnumProtocols 또는 애플리케이션 인터페이스의 WSAEnumProtocols 를 통해 열거되는 순서를 제어 합니다 . 더 중요한 것은 이 주문은 클라이언트가 주소 패밀리, 형식 및 프로토콜 식별자를 기반으로 소켓 만들기를 요청할 때 프로토콜 및 서비스 공급자가 고려되는 순서를 제어합니다.

Windows Sockets 2에는 설치된 프로토콜 카탈로그를 프로토콜이 이미 설치된 후 대화형으로 다시 정렬할 수 있는 Sporder.exe 라는 애플리케이션이 포함되어 있습니다. Windows Sockets 2에는 프로토콜을 다시 정렬하기 위해 이 절차 인터페이스를 내보내는 Sporder.dll 보조 DLL도 포함되어 있습니다. 이 인터페이스는 Sporder.lib와 연결하여 가져올 수 있습니다.

다음은 WSCWriteProviderOrder 함수가 실패할 수 있는 시나리오입니다.

  • dwNumberOfEntries 매개 변수는 등록된 서비스 공급자 수와 같지 않습니다.
  • lpwdCatalogEntryId에 잘못된 카탈로그 식별자가 포함되어 있습니다.
  • lpwdCatalogEntryId에는 유효한 카탈로그 식별자가 한 번만 포함되어 있지 않습니다.
  • 루틴은 어떤 이유로 레지스트리에 액세스할 수 없습니다(예: 부적절한 사용자 권한).
  • 다른 프로세스(또는 스레드)가 현재 함수를 호출하고 있습니다.

성공하면 WSCWriteProviderOrderWSAProviderConfigChange를 호출하여 변경 알림을 위해 등록된 모든 관심 있는 애플리케이션에 경고를 시도합니다.

WSCWriteProviderOrder 함수는 Administrators 그룹의 구성원으로 로그온한 사용자만 호출할 수 있습니다. Administrators 그룹의 구성원이 아닌 사용자가 WSCWriteProviderOrder 를 호출하면 함수 호출이 실패하고 WSANO_RECOVERY 반환됩니다. Windows Vista 또는 Windows Server 2008에서 실행되는 컴퓨터의 경우 UAC(사용자 계정 제어)로 인해 이 함수가 실패할 수도 있습니다. 이 함수를 포함하는 애플리케이션이 기본 제공 관리자가 아닌 Administrators 그룹의 구성원으로 로그온한 사용자에 의해 실행되는 경우 애플리케이션이 requireAdministrator로 설정된 requestedExecutionLevel이 매니페스트 파일에 표시되지 않는 한 이 호출은 실패합니다. Windows Vista 또는 Windows Server 2008의 애플리케이션에 이 매니페스트 파일이 없는 경우 기본 제공 관리자가 아닌 Administrators 그룹의 구성원으로 로그온한 사용자는 이 함수가 성공하려면 기본 제공 관리자(RunAs 관리자)로 향상된 셸에서 애플리케이션을 실행해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 sporder.h
라이브러리 Sporder.lib
DLL Ws2_32.dll

추가 정보

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols