Função WSASetServiceA (winsock2.h)
A função WSASetService registra ou remove do registro uma instância de serviço em um ou mais namespaces.
Sintaxe
INT WSAAPI WSASetServiceA(
[in] LPWSAQUERYSETA lpqsRegInfo,
[in] WSAESETSERVICEOP essoperation,
[in] DWORD dwControlFlags
);
Parâmetros
[in] lpqsRegInfo
Um ponteiro para as informações de serviço para registro ou desregistração.
[in] essoperation
Um valor que determina essa operação solicitada. Esse parâmetro pode ser um dos valores do tipo de enumeração WSAESETSERVICEOP definido no arquivo de cabeçalho
Valor | Significado |
---|---|
|
Registre o serviço. Para SAP, isso significa enviar uma transmissão periódica. Este é um NOP para o namespace DNS. Para armazenamentos de dados persistentes, isso significa atualizar as informações de endereço. |
|
Remova o serviço do Registro. Para SAP, isso significa parar de enviar a transmissão periódica. Este é um NOP para o namespace DNS. Para armazenamentos de dados persistentes, isso significa excluir informações de endereço. |
|
Exclua o serviço do nome dinâmico e dos espaços persistentes. Para serviços representados por várias estruturas de CSADDR_INFO (usando o sinalizador SERVICE_MULTIPLE), somente o endereço especificado será excluído e isso deve corresponder exatamente à estrutura de CSADDR_INFO correspondente especificada quando o serviço foi registrado. |
[in] dwControlFlags
Valor de sinalizadores de instalação de serviço que controla ainda mais a operação executada da função WSASetService
Valor de retorno
O valor retornado para WSASetService será zero se a operação tiver sido bem-sucedida. Caso contrário, o valor SOCKET_ERROR será retornado e um número de erro específico poderá ser recuperado chamando WSAGetLastError.
Observações
A função WSASetService pode ser usada para afetar um provedor de namespace específico, todos os provedores associados a um namespace específico ou todos os provedores em todos os namespaces.
Os valores disponíveis para
Operação | Sinalizadores | O serviço já existe | O serviço não existe |
---|---|---|---|
RNRSERVICE_REGISTER | Nenhum | Substitui o objeto. Usa apenas os endereços especificados. O objeto é REGISTERED. | Cria um novo objeto. Usa apenas os endereços especificados. O objeto é REGISTERED. |
RNRSERVICE_REGISTER | SERVICE_MULTIPLE | Atualiza o objeto. Adiciona novos endereços ao conjunto existente. O objeto é REGISTERED. | Cria um novo objeto. Usa todos os endereços especificados. O objeto é REGISTERED. |
RNRSERVICE_DEREGISTER | Nenhum | Remove todos os endereços, mas não remove o objeto do namespace. O objeto é removido do registro. | WSASERVICE_NOT_FOUND |
RNRSERVICE_DEREGISTER | SERVICE_MULTIPLE | Atualiza o objeto. Remove somente os endereços especificados. Só marcará o objeto como DESREGISTERED se nenhum endereço estiver presente. Não remove o objeto do namespace. | WSASERVICE_NOT_FOUND |
RNRSERVICE_DELETE | Nenhum | Remove o objeto do namespace. | WSASERVICE_NOT_FOUND |
RNRSERVICE_DELETE | SERVICE_MULTIPLE | Remove somente os endereços especificados. Só removerá o objeto do namespace se nenhum endereço permanecer. | WSASERVICE_NOT_FOUND |
A publicação de serviços em diretórios, como os Serviços do Active Directory, é restrita com base em ACLs (listas de controle de acesso). Para obter mais informações, consulte problemas de segurança parade publicação de serviço.
Quando o parâmetro dwControlFlags é definido como SERVICE_MULTIPLE, um aplicativo pode gerenciar seus endereços de forma independente. Isso é útil quando o aplicativo deseja gerenciar seus protocolos individualmente ou quando o serviço reside em mais de um computador. Por exemplo, quando um serviço usa mais de um protocolo, pode achar que um soquete de escuta anula, mas os outros soquetes permanecem operacionais. Nesse caso, o serviço pode remover o endereço anulado do registro sem afetar os outros endereços.
Quando o parâmetro dwControlFlags é definido como SERVICE_MULTIPLE, um aplicativo não deve permitir que endereços obsoletos permaneçam no objeto. Isso pode acontecer se o aplicativo anular sem emitir uma solicitação DEREGISTER. Quando um serviço é registrado, ele deve armazenar seus endereços. Em sua próxima invocação, o serviço deve remover explicitamente esses endereços antigos obsoletos do registro antes de registrar novos endereços.
Propriedades do serviço
A tabela a seguir descreve como os dados da propriedade de serviço são representados em uma estrutura de WSAQUERYSETMembro WSAQUERYSET | Descrição da propriedade de serviço |
---|---|
dwSize | Deve ser definido como sizeof (WSAQUERYSET). Esse é um mecanismo de controle de versão. |
dwOutputFlags | Não aplicável e ignorado. |
lpszServiceInstanceName | A cadeia de caracteres referenciada contém o nome da instância de serviço. |
lpServiceClassId | O GUID correspondente a essa classe de serviço. |
lpVersion | (Opcional) Fornece o número de versão da instância de serviço. |
lpszComment | (Opcional) Uma cadeia de caracteres de comentário opcional. |
dwNameSpace |
Veja a tabela a seguir. |
lpNSProviderId | Veja a tabela a seguir. |
lpszContext | (Opcional) Especifica o ponto inicial da consulta em um namespace hierárquico. |
dwNumberOfProtocols | Ignorado. |
lpafpProtocols | Ignorado. |
lpszQueryString | Ignorado. |
dwNumberOfCsAddrs | O número de elementos na matriz de estruturas de CSADDR_INFO referenciadas por lpcsaBuffer. |
lpcsaBuffer | Um ponteiro para uma matriz de estruturas de CSADDR_INFO que contêm o endereço(es) em que o serviço está escutando. |
lpBlob | (Opcional) Esse é um ponteiro para uma entidade específica do provedor. |
Conforme ilustrado a seguir, a combinação dos membros dwNameSpace e lpNSProviderId determinam que os provedores de namespace são afetados por essa função.
dwNameSpace |
lpNSProviderId | Escopo do impacto |
---|---|---|
Ignorado | Não nulo | O provedor de espaço de nome especificado. |
Um identificador de espaço de nome válido | Zero | Todos os provedores de espaço de nome que dão suporte ao namespace indicado. |
NS_ALL | Zero | Todos os provedores de espaço de nome. |
Nota
O cabeçalho winsock2.h define WSASetService como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 8.1, Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
servidor com suporte mínimo | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
da Plataforma de Destino |
Windows |
cabeçalho | winsock2.h |
biblioteca | Ws2_32.lib |
de DLL |
Ws2_32.dll |
Consulte também
do Winsock Functions
referência Winsock