WSCSetProviderInfo32 함수(ws2spi.h)

**참고** 계층화된 서비스 공급자는 더 이상 사용되지 않습니다. Windows 8 및 Windows Server 2012 Windows 필터링 플랫폼을 사용합니다.
 
**WSCSetProviderInfo32** 함수는 LSP(계층화된 서비스 공급자)에 대해 지정된 정보 클래스의 데이터 값을 설정합니다.
**참고** 이 호출은 64비트 플랫폼에서 사용하기 위해 엄격하게 32비트 버전의 WSCSetProviderInfo 입니다. 64비트 프로세스가 32비트 카탈로그에 액세스할 수 있도록 제공됩니다.
 

구문

int WSCSetProviderInfo32(
  [in]  LPGUID                 lpProviderId,
  [in]  WSC_PROVIDER_INFO_TYPE InfoType,
  [in]  PBYTE                  Info,
  [in]  size_t                 InfoSize,
  [in]  DWORD                  Flags,
  [out] LPINT                  lpErrno
);

매개 변수

[in] lpProviderId

공급자에 대한 GUID(Globally Unique Identifier)에 대한 포인터입니다.

[in] InfoType

이 LSP 프로토콜 항목에 대해 설정할 정보 클래스입니다.

[in] Info

LSP 프로토콜 항목에 대해 설정할 정보 클래스 데이터를 포함하는 버퍼에 대한 포인터입니다.

[in] InfoSize

Info 매개 변수가 가리키는 버퍼의 크기(바이트)입니다.

[in] Flags

WSCSetProviderInfo32 함수 호출의 동작을 수정하는 데 사용되는 플래그입니다.

[out] lpErrno

함수가 실패하는 경우 오류 코드에 대한 포인터입니다.

반환 값

오류가 발생하지 않으면 WSCSetProviderInfo32ERROR_SUCCESS (0)을 반환합니다. 그렇지 않으면 SOCKET_ERROR 반환되고 lpErrno 매개 변수에 특정 오류 코드가 반환됩니다.

오류 코드 의미
ERROR_CALL_NOT_IMPLEMENTED
호출이 구현되지 않았습니다. 이 오류는 **ProviderInfoAudit**가 InfoType 매개 변수에 지정된 경우 반환됩니다.
WSAEFAULT
하나 이상의 인수가 사용자 주소 공간의 유효한 부분에 있지 않습니다.
WSAEINVAL
하나 이상의 인수가 잘못되었습니다.
WSANO_RECOVERY
복구할 수 없는 오류가 발생했습니다. 이 오류는 다음과 같은 여러 조건에서 반환됩니다. 사용자가 Winsock 레지스트리에 쓰는 데 필요한 관리 권한이 없거나 Winsock 카탈로그 항목을 열 때 오류가 발생했습니다.
WSA_NOT_ENOUGH_MEMORY
메모리가 부족했습니다. 이 오류는 새 카탈로그 항목을 할당할 메모리가 부족한 경우 반환됩니다.

설명

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

WSCSetProviderInfo32 는 32비트 계층화된 서비스 공급자에 대한 정보 클래스 데이터를 설정하는 데 사용됩니다. InfoType 매개 변수가 ProviderInfoLspCategories로 설정된 경우 성공 시 WSCSetProviderInfo32Info 매개 변수에 전달된 값을 기반으로 공급자가 구현한 적절한 LSP 범주 플래그를 설정합니다.

Winsock 2는 계층화된 프로토콜을 수용합니다. 계층화된 프로토콜은 원격 엔드포인트와 데이터의 실제 교환을 위해 기본 전송 스택을 사용하는 동시에 더 높은 수준의 통신 함수만 구현하는 프로토콜입니다. 계층화된 프로토콜 또는 계층화된 서비스 공급자의 예는 인증을 수행하고 상호 합의된 암호화 체계를 설정하기 위해 연결 설정 프로세스에 프로토콜을 추가하는 보안 계층입니다. 이러한 보안 프로토콜에는 일반적으로 TCP 또는 SPX와 같은 기본 신뢰할 수 있는 전송 프로토콜의 서비스가 필요합니다. 기본 프로토콜이라는 용어는 원격 엔드포인트와 데이터 통신을 수행할 수 있는 TCP 또는 SPX와 같은 프로토콜을 나타냅니다. 계층화된 프로토콜이라는 용어는 독립할 수 없는 프로토콜을 설명하는 데 사용됩니다. 그런 다음 프로토콜 체인은 함께 연결되고 기본 프로토콜에 의해 고정되는 하나 이상의 계층화된 프로토콜로 정의됩니다. 기본 프로토콜에는 1로 정의된 BASE_PROTOCOL 설정된 WSAProtocol_Info 구조체의 ChainLen 멤버가 있습니다. 계층화된 프로토콜에는 0으로 정의된 LAYERED_PROTOCOL 설정된 WSAPROTOCOL_INFO 구조체의 ChainLen 멤버가 있습니다. 프로토콜 체인에는 WSAPROTOCOL_INFO 구조체의 ChainLen 멤버가 1보다 큰 것으로 설정됩니다.

LSP를 초기화하는 동안 LSP는 여러 Winsock SPI 함수에 대한 포인터를 제공해야 합니다. 이러한 함수는 LSP(다른 LSP 또는 Ws2_32.dll) 바로 위에 있는 계층에서 정상적으로 처리하는 동안 호출됩니다.

IFS(설치 가능한 파일 시스템)를 구현하는 LSP는 자체적으로 구현되는 함수에 대한 포인터를 선택적으로 제공하거나 LSP 바로 아래에 있는 계층에서 제공하는 포인터를 다시 전달하도록 선택할 수 있습니다. 비 IFS LSP는 자체 핸들을 제공하므로 모든 Winsock SPI 함수를 구현해야 합니다. 이는 각 SPI가 만든 모든 소켓 핸들을 하위 공급자(다른 LSP 또는 기본 프로토콜)의 소켓 핸들에 매핑하기 위해 LSP가 필요하기 때문입니다.

그러나 모든 LSP는 Winsock SPI 함수의 하위 집합에서만 추가 처리를 수행하여 특정 작업을 수행합니다.

LSP가 구현하는 SPI 함수의 하위 집합과 각 함수에 대해 수행되는 추가 처리의 특성에 따라 LSP 범주를 정의할 수 있습니다.

LSP를 분류하고 Winsock 소켓을 사용하는 애플리케이션을 분류하면 런타임에 LSP가 지정된 프로세스에 관여해야 하는지 여부를 선택적으로 결정할 수 있습니다.

Windows Vista 이상에서는 LSP가 Windows 소켓 호출 및 데이터와 상호 작용하는 방식에 따라 분류할 수 있습니다. LSP 범주는 Winsock SPI 함수의 하위 집합에서 식별 가능한 동작 그룹입니다. 예를 들어 HTTP 콘텐츠 필터는 데이터 검사기( LSP_INSPECTOR 범주)로 분류됩니다. LSP_INSPECTOR 범주는 데이터 전송 SPI 함수에 대한 매개 변수를 검사하지만 변경하지는 않습니다. 애플리케이션은 LSP의 범주를 쿼리하고 LSP 범주 및 애플리케이션의 허용된 LSP 범주 집합에 따라 LSP를 로드하지 않도록 선택할 수 있습니다.

다음 표에서는 LSP를 분류할 수 있는 범주를 나열합니다.

LSP 범주 Description
**LSP_CRYPTO_COMPRESS** LSP는 암호화 또는 데이터 압축 공급자입니다.
**LSP_FIREWALL** LSP는 방화벽 공급자입니다.
**LSP_LOCAL_CACHE** LSP는 로컬 캐시 공급자입니다.
**LSP_INBOUND_MODIFY** LSP는 인바운드 데이터를 수정합니다.
**LSP_INSPECTOR** LSP는 데이터를 검사하거나 필터링합니다.
**LSP_OUTBOUND_MODIFY** LSP는 아웃바운드 데이터를 수정합니다.
**LSP_PROXY** LSP는 프록시 역할을 하며 패킷을 리디렉션합니다.
**LSP_REDIRECTOR** LSP는 네트워크 리렉터입니다.
**LSP_SYSTEM** LSP는 서비스 및 시스템 프로세스에서 사용할 수 있습니다.
 

LSP는 둘 이상의 범주에 속할 수 있습니다. 예를 들어 방화벽/보안 LSP는 검사기(LSP_INSPECTOR) 및 방화벽(LSP_FIREWALL) 범주 모두에 속할 수 있습니다.

LSP에 범주 집합이 없는 경우 다른 모든 범주에 있는 것으로 간주됩니다. 이 LSP 범주는 서비스 또는 시스템 프로세스(예: lsass, winlogon 및 많은 svchost 프로세스)에 로드되지 않습니다.

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

요구 사항

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

추가 정보

계층화된 서비스 공급자 및 애플리케이션 분류

WSAProtocol_Info

WSCGetApplicationCategory

WSCGetProviderInfo32

WSCSetApplicationCategory

WSCSetProviderInfo

WSC_PROVIDER_INFO_TYPE