WSAImpersonateSocketPeer 함수(ws2tcpip.h)
WSAImpersonateSocketPeer 함수는 애플리케이션 수준 권한 부여를 수행하기 위해 소켓 피어에 해당하는 보안 주체를 가장하는 데 사용됩니다.
구문
INT WSAAPI WSAImpersonateSocketPeer(
[in] SOCKET Socket,
[in, optional] const sockaddr *PeerAddr,
[in] ULONG PeerAddrLen
);
매개 변수
[in] Socket
애플리케이션 소켓을 식별합니다.
[in, optional] PeerAddr
가장할 피어의 IP 주소입니다. 연결 지향 소켓의 경우 연결된 소켓은 피어를 고유하게 식별합니다. 이 경우 이 매개 변수는 무시됩니다.
[in] PeerAddrLen
PeerAddress 매개 변수의 크기(바이트)입니다.
반환 값
함수가 성공하면 반환 값은 0입니다. 그렇지 않으면 SOCKET_ERROR 값이 반환되고 WSAGetLastError를 호출하여 특정 오류 코드를 검색할 수 있습니다.
몇 가지 가능한 오류 코드가 아래에 나열되어 있습니다.
오류 코드 | 의미 |
---|---|
시스템에서 호출의 포인터 인수를 사용하려고 할 때 잘못된 주소 포인터를 검색했습니다. PeerAddr 매개 변수가 NULL 포인터인 경우 이 오류가 반환됩니다. | |
지정된 주소 패밀리는 지원되지 않습니다. | |
전달된 버퍼가 너무 작습니다. | |
Socket 매개 변수에 전달된 설명자가 유효한 소켓이 아닙니다. |
설명
WSAImpersonateSocketPeer 함수는 애플리케이션 수준 권한 부여를 수행하기 위해 소켓 피어에 해당하는 보안 주체를 가장하는 기능을 애플리케이션에 제공합니다. 피어 사용자(가장) 토큰을 사용할 수 있는 경우 가장에 사용되며, 그렇지 않으면 피어 컴퓨터 토큰이 사용됩니다. WSAImpersonateSocketPeer 함수는 겹치지 않는 차단 소켓에 대해서만 호출할 수 있습니다. 권한 부여 검사를 수행한 후 애플리케이션은 WSARevertImpersonation 함수를 호출하여 가장을 종료해야 합니다.
연결 지향 소켓의 경우 연결이 설정된 후 WSAImpersonateSocketPeer 함수를 호출해야 합니다. 연결 지향 소켓을 사용하는 서버 애플리케이션의 경우 accept, AcceptEx 또는 WSAAccept 함수가 반환된 후 WSAImpersonateSocketPeer를 호출해야 합니다.
연결이 없는 소켓의 경우 애플리케이션은 새 피어 주소에 대해 recv, recvfrom, WSARecv, WSARecvEx, WSARecvFrom 또는 LPFN_WSARECVMSG(WSARecvMsg) 함수 반환 직후 WSAImpersonateSocketPeer 함수를 호출해야 합니다.
WSAImpersonateSocketPeer 함수는 단일 소켓에 대해 여러 번 호출할 수 있습니다.
다음 조건이 충족되지 않으면 오류가 반환됩니다.
- Socket 매개 변수의 주소 패밀리는 AF_INET 또는 AF_INET6 합니다.
- 소켓 유형은 SOCK_STREAM 또는 SOCK_DGRAM.
가장을 종료하려면 WSARevertImpersonation 함수를 호출해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | ws2tcpip.h |
라이브러리 | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |