WSAProviderConfigChange 함수(winsock2.h)
WSAProviderConfigChange 함수는 공급자 구성이 변경되면 애플리케이션에 알 수 있습니다.
구문
INT WSAAPI WSAProviderConfigChange(
[in, out] LPHANDLE lpNotificationHandle,
[in] LPWSAOVERLAPPED lpOverlapped,
[in] LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
매개 변수
[in, out] lpNotificationHandle
알림 핸들에 대한 포인터입니다. 알림 핸들이 NULL (포인터 자체가 아닌 핸들 값)으로 설정된 경우 이 함수는 lpNotificationHandle이 가리키는 위치에서 알림 핸들을 반환합니다.
[in] lpOverlapped
WSAOVERLAPPED 구조체에 대한 포인터입니다.
[in] lpCompletionRoutine
형식: _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE
공급자 변경 알림을 받을 때 호출되는 완료 루틴에 대한 포인터입니다.
반환 값
오류가 발생하지 않으면 WSAProviderConfigChange 는 0을 반환합니다. 그렇지 않으면 SOCKET_ERROR 값이 반환되고 WSAGetLastError를 호출하여 특정 오류 코드를 검색할 수 있습니다. WSA_IO_PENDING 오류 코드는 겹치는 작업이 성공적으로 시작되었으며 나중에 완료(및 변경 이벤트)가 표시됨을 나타냅니다.
오류 코드 | 의미 |
---|---|
이 함수를 사용하기 전에 성공적인 WSAStartup 호출이 발생해야 합니다. | |
네트워크 하위 시스템이 실패했습니다. | |
작업을 완료하는 데 사용할 수 있는 사용 가능한 메모리가 부족합니다. | |
lpNotificationHandle 매개 변수가 가리키는 값은 유효한 알림 핸들이 아닙니다. | |
현재 운영 체제 환경은 다시 시작하지 않고 공급자 설치 또는 제거를 지원하지 않습니다. |
설명
WSAProviderConfigChange 함수는 다시 시작하지 않고도 이러한 구성 변경을 지원하는 Windows 운영 환경에서 공급자(전송 및 네임스페이스 모두) 설치 또는 제거의 애플리케이션을 알 수 있습니다. 처음으로 호출될 때(lpNotificationHandle 매개 변수는 NULL 핸들을 가리킵니다) 이 함수는 즉시 완료되고 lpNotificationHandle 이 가리키는 위치에서 알림 핸들을 반환하며, 이 핸들은 후속 호출에서 공급자 설치 및 제거 알림을 수신하는 데 사용할 수 있습니다. 두 번째 및 후속 호출은 호출이 수행된 시간 이후 공급자 정보가 변경된 경우에만 완료됩니다. 애플리케이션이 두 번째 및 WSAProviderConfigChange에 대한 후속 호출에서 겹치는 I/O를 사용하는 것이 예상되고 필요하지는 않습니다. 이 경우 호출은 즉시 반환되고 애플리케이션은 지정된 겹치는 완료 매개 변수를 통해 선택한 완료 메커니즘을 사용하여 공급자 구성 변경에 대한 알림을 받습니다.
WSAProviderConfigChange에서 반환된 알림 핸들은 Windows CloseHandle 호출을 사용하여 (더 이상 필요하지 않은 경우) 닫아야 하는 일반 운영 체제 핸들과 같습니다.
애플리케이션에 항상 현재 프로토콜 구성 정보가 있음을 보장하기 위해 다음 작업 시퀀스를 사용할 수 있습니다.
- WSAProviderConfigChange 호출
- WSAEnumProtocols 및/또는 WSAEnumNameSpaceProviders 호출
- WSAProviderConfigChange가 차단 또는 겹치는 I/O를 통해 공급자 구성 변경의 애플리케이션을 알 수 있을 때마다 전체 작업 시퀀스를 반복해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8.1, Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | winsock2.h |
라이브러리 | Ws2_32.lib |
DLL | Ws2_32.dll |