DeletePersistentTcpPortReservation function (iphlpapi.h)
The DeletePersistentTcpPortReservation function deletes a persistent TCP port reservation for a consecutive block of TCP ports on the local computer.
Syntax
IPHLPAPI_DLL_LINKAGE ULONG DeletePersistentTcpPortReservation(
[in] USHORT StartPort,
[in] USHORT NumberOfPorts
);
Parameters
[in] StartPort
The starting TCP port number in network byte order.
[in] NumberOfPorts
The number of TCP port numbers to delete.
Return value
If the function succeeds, the return value is NO_ERROR.
If the function fails, the return value is one of the following error codes.
Return code | Description |
---|---|
|
Access is denied. This error is returned under several conditions that include the following: the user lacks the required administrative privileges on the local computer or the application is not running in an enhanced shell as the built-in Administrator (RunAs administrator). |
|
An invalid parameter was passed to the function. This error is returned if zero is passed in the StartPort or NumberOfPorts parameters. |
|
The element was not found. This error is returned if persistent port block specified by the StartPort and NumberOfPorts parameters could not be found. |
|
Use FormatMessage to obtain the message string for the returned error. |
Remarks
The DeletePersistentTcpPortReservation function is defined on Windows Vista and later.
The DeletePersistentTcpPortReservation function is used to delete a persistent reservation for a block of TCP ports.
The DeletePersistentTcpPortReservation function can only be called by a user logged on as a member of the Administrators group. If DeletePersistentTcpPortReservation is called by a user that is not a member of the Administrators group, the function call will fail and ERROR_ACCESS_DENIED is returned. This function can also fail because of user account control (UAC) on Windows Vista and later. If an application that contains this function is executed by a user logged on as a member of the Administrators group other than the built-in Administrator, this call will fail unless the application has been marked in the manifest file with a requestedExecutionLevel set to requireAdministrator. If the application lacks this manifest file, a user logged on as a member of the Administrators group other than the built-in Administrator must then be executing the application in an enhanced shell as the built-in Administrator (RunAs administrator) for this function to succeed.
Examples
The following example deletes a persistent TCP port reservation.
This example must be run by a user that is a member of the Administrators group. The simplest way to run this example is in an enhanced shell as the built-in Administrator (RunAs administrator).
#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;
}
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows Vista [desktop apps only] |
Minimum supported server | Windows Server 2008 [desktop apps only] |
Target Platform | Windows |
Header | iphlpapi.h |
Library | Iphlpapi.lib |
DLL | Iphlpapi.dll |
See also
CreatePersistentTcpPortReservation
CreatePersistentUdpPortReservation
DeletePersistentUdpPortReservation