Função DeletePersistentTcpPortReservation (iphlpapi.h)
A função DeletePersistentTcpPortReservation exclui uma reserva de porta TCP persistente para um bloco consecutivo de portas TCP no computador local.
Sintaxe
IPHLPAPI_DLL_LINKAGE ULONG DeletePersistentTcpPortReservation(
[in] USHORT StartPort,
[in] USHORT NumberOfPorts
);
Parâmetros
[in] StartPort
O número da porta TCP inicial na ordem de bytes de rede.
[in] NumberOfPorts
O número de números de porta TCP a serem excluídos.
Retornar valor
Se a função for bem-sucedida, o valor retornado será NO_ERROR.
Se a função falhar, o valor retornado será um dos seguintes códigos de erro.
Código de retorno | Descrição |
---|---|
|
Acesso negado. Esse erro é retornado sob várias condições que incluem o seguinte: o usuário não tem os privilégios administrativos necessários no computador local ou o aplicativo não está em execução em um shell aprimorado como administrador interno (administrador de RunAs). |
|
Um parâmetro inválido foi passado para a função. Esse erro será retornado se zero for passado nos parâmetros StartPort ou NumberOfPorts . |
|
O elemento não foi encontrado. Esse erro será retornado se o bloco de porta persistente especificado pelos parâmetros StartPort e NumberOfPorts não puder ser encontrado. |
|
Use FormatMessage para obter a cadeia de caracteres de mensagem para o erro retornado. |
Comentários
A função DeletePersistentTcpPortReservation é definida no Windows Vista e posterior.
A função DeletePersistentTcpPortReservation é usada para excluir uma reserva persistente para um bloco de portas TCP.
A função DeletePersistentTcpPortReservation só pode ser chamada por um usuário conectado como membro do grupo Administradores. Se DeletePersistentTcpPortReservation for chamado por um usuário que não é membro do grupo Administradores, a chamada de função falhará e ERROR_ACCESS_DENIED será retornado. Essa função também pode falhar devido ao UAC (controle de conta de usuário) no Windows Vista e posterior. Se um aplicativo que contém essa função for executado por um usuário conectado como membro do grupo Administradores diferente do Administrador interno, essa chamada falhará, a menos que o aplicativo tenha sido marcado no arquivo de manifesto com um requestedExecutionLevel definido para exigirAdministrator. Se o aplicativo não tiver esse arquivo de manifesto, um usuário conectado como membro do grupo Administradores diferente do Administrador interno deverá executar o aplicativo em um shell aprimorado como administrador interno (administrador RunAs) para que essa função tenha êxito.
Exemplos
O exemplo a seguir exclui uma reserva de porta TCP persistente.
Este exemplo deve ser executado por um usuário que seja membro do grupo Administradores. A maneira mais simples de executar este exemplo é em um shell aprimorado como administrador interno (administrador de 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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | iphlpapi.h |
Biblioteca | Iphlpapi.lib |
DLL | Iphlpapi.dll |
Confira também
CreatePersistentTcpPortReservation
CreatePersistentUdpPortReservation
DeletePersistentUdpPortReservation