다음을 통해 공유


WSCWriteProviderOrder32 함수(sporder.h)

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

참고 이 호출은 64비트 플랫폼에서 사용하기 위해 엄격하게 32비 트 버전의 WSCWriteProviderOrder 입니다. 64비트 프로세스가 32비트 카탈로그를 수정할 수 있도록 제공됩니다.
 

구문

int WSCWriteProviderOrder32(
  [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
메모리가 부족했습니다. 이 오류는 새 카탈로그 항목을 할당할 메모리가 부족한 경우 반환됩니다.
(기타)
루틴은 레지스트리 오류 코드를 반환할 수 있습니다.

설명

WSCWriteProviderOrder32 함수는 엄격하게 32비트 버전의 WSCWriteProviderOrder 함수입니다. 64비트 컴퓨터에서 모든 호출은 특별히 32비트(예: "32"로 끝나지 않는 모든 함수)가 아닌 네이티브 64비트 카탈로그에서 작동합니다. 64비트 컴퓨터에서 실행되는 프로세스는 특정 32비트 함수 호출을 사용하여 엄격하게 32비트 카탈로그에서 작동하고 호환성을 유지해야 합니다. 특정 32비트 호출의 정의 및 의미 체계는 네이티브 호출과 동일합니다.

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

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

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

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

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

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

요구 사항

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

추가 정보

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols32