DeletePersistentTcpPortReservation 함수(iphlpapi.h)
DeletePersistentTcpPortReservation 함수는 로컬 컴퓨터에서 연속된 TCP 포트 블록에 대한 영구 TCP 포트 예약을 삭제합니다.
구문
IPHLPAPI_DLL_LINKAGE ULONG DeletePersistentTcpPortReservation(
[in] USHORT StartPort,
[in] USHORT NumberOfPorts
);
매개 변수
[in] StartPort
네트워크 바이트 순서의 시작 TCP 포트 번호입니다.
[in] NumberOfPorts
삭제할 TCP 포트 번호의 수입니다.
반환 값
함수가 성공하면 반환 값이 NO_ERROR.
함수가 실패하면 반환 값은 다음 오류 코드 중 하나입니다.
반환 코드 | 설명 |
---|---|
|
액세스가 거부되었습니다. 이 오류는 사용자가 로컬 컴퓨터에서 필요한 관리 권한이 없거나 애플리케이션이 기본 제공 관리자(RunAs 관리자)로 향상된 셸에서 실행되고 있지 않음을 포함하는 여러 조건에서 반환됩니다. |
|
잘못된 매개 변수가 함수에 전달되었습니다. StartPort 또는 NumberOfPorts 매개 변수에 0 이 전달되면 이 오류가 반환됩니다. |
|
요소를 찾을 수 없습니다. StartPort 및 NumberOfPorts 매개 변수로 지정된 영구 포트 블록을 찾을 수 없는 경우 이 오류가 반환됩니다. |
|
FormatMessage를 사용하여 반환된 오류에 대한 메시지 문자열을 가져옵니다. |
설명
DeletePersistentTcpPortReservation 함수는 Windows Vista 이상에서 정의됩니다.
DeletePersistentTcpPortReservation 함수는 TCP 포트 블록에 대한 영구 예약을 삭제하는 데 사용됩니다.
DeletePersistentTcpPortReservation 함수는 Administrators 그룹의 구성원으로 로그온한 사용자만 호출할 수 있습니다. Administrators 그룹의 구성원이 아닌 사용자가 DeletePersistentTcpPortReservation 을 호출하면 함수 호출이 실패하고 ERROR_ACCESS_DENIED 반환됩니다. Windows Vista 이상에서 UAC(사용자 계정 제어)로 인해 이 함수가 실패할 수도 있습니다. 이 함수를 포함하는 애플리케이션이 기본 제공 관리자가 아닌 Administrators 그룹의 구성원으로 로그온한 사용자에 의해 실행되는 경우 애플리케이션이 requireAdministrator로 설정된 requestedExecutionLevel 이 매니페스트 파일에 표시되지 않는 한 이 호출은 실패합니다. 애플리케이션에 이 매니페스트 파일이 없는 경우 기본 제공 관리자가 아닌 Administrators 그룹의 구성원으로 로그온한 사용자는 이 함수가 성공하려면 기본 제공 관리자(RunAs 관리자)로 향상된 셸에서 애플리케이션을 실행해야 합니다.
예제
다음 예제에서는 영구 TCP 포트 예약을 삭제합니다.
이 예제는 Administrators 그룹의 구성원인 사용자가 실행해야 합니다. 이 예제를 실행하는 가장 간단한 방법은 기본 제공 관리자(RunAs 관리자)로 향상된 셸에 있습니다.
#ifndef UNICODE
#define UNICODE
#endif
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <Windows.h.>
#include <winsock2.h>
#include <ws2ipdef.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <stdlib.h>
// Need to link with iphlpapi.lib
#pragma comment(lib, "iphlpapi.lib")
// Need to link with ws2_32.lib for htons
#pragma comment(lib, "ws2_32.lib")
int wmain(int argc, WCHAR **argv) {
// Declare and initialize variables
int startPort = 0; // host byte order
int numPorts = 0;
USHORT startPortns = 0; // Network byte order
unsigned long status = 0;
// Validate the parameters
if (argc != 3) {
wprintf(L"usage: %s <Starting Port> <Number of Ports>\n", argv[0]);
wprintf(L"Delete a persistent TCP port reservation\n");
wprintf(L"Example usage:\n");
wprintf(L" %s 5000 20\n", argv[0]);
wprintf(L" where StartPort=5000 NumPorts=20");
return 1;
}
startPort = _wtoi(argv[1]);
if ( startPort < 0 || startPort> 65535) {
wprintf(L"Starting point must be either 0 or between 1 and 65,535\n");
return 1;
}
startPortns = htons((u_short) startPort);
numPorts = _wtoi(argv[2]);
if (numPorts < 0) {
wprintf(L"Number of ports must be a positive number\n");
return 1;
}
status = DeletePersistentTcpPortReservation((USHORT) startPortns, (USHORT) numPorts);
if( status != NO_ERROR )
{
wprintf(L"DeletePersistentTcpPortReservation returned error: %ld\n",
status);
return 1;
}
wprintf(L"DeletePersistentTcpPortReservation call succeeded\n");
return 0;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | iphlpapi.h |
라이브러리 | Iphlpapi.lib |
DLL | Iphlpapi.dll |
추가 정보
CreatePersistentTcpPortReservation
CreatePersistentUdpPortReservation
DeletePersistentUdpPortReservation