Função de retorno de chamada LPNSPSETSERVICE (ws2spi.h)
A função NSPSetService registra ou desregistra uma instância de serviço em um namespace.
Sintaxe
LPNSPSETSERVICE Lpnspsetservice;
INT Lpnspsetservice(
[in] LPGUID lpProviderId,
[in] LPWSASERVICECLASSINFOW lpServiceClassInfo,
[in] LPWSAQUERYSETW lpqsRegInfo,
[in] WSAESETSERVICEOP essOperation,
[in] DWORD dwControlFlags
)
{...}
Parâmetros
[in] lpProviderId
Um ponteiro para o GUID do provedor de namespace específico no qual o serviço está registrado.
[in] lpServiceClassInfo
As informações de esquema da classe de serviço.
[in] lpqsRegInfo
As informações de propriedade a serem atualizadas após o registro.
[in] essOperation
O tipo de operação solicitada.
Esse parâmetro pode ser um dos valores do tipo de enumeração WSAESETSERVICEOP definido no arquivo de cabeçalho Winsock2.h .
Valor | Significado |
---|---|
|
Registre o serviço. Para o namespace sap (Service Advertising Protocol) usado em um ambiente NetWare, isso significa enviar uma difusão periódica. Este é um NOP para o namespace DNS (Sistema de Nomes de Domínio). Para armazenamentos de dados persistentes, isso significa atualizar as informações de endereço. |
|
Desregistrar o serviço. Para o namespace sap, isso significa parar de enviar a difusã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 fornecido será excluído e isso deve corresponder exatamente à estrutura **CSADDR_INFO** correspondente fornecida quando o serviço foi registrado. |
[in] dwControlFlags
Um conjunto de sinalizadores que controla a operação de serviço solicitada.
Os valores possíveis para esse parâmetro são definidos no arquivo de cabeçalho Winsock2.h .
Retornar valor
A função deverá retornar NO_ERROR (zero) se a rotina for bem-sucedida. Ele deverá retornar SOCKET_ERROR (–1) se a rotina falhar e precisar definir o código de erro apropriado usando WSASetLastError.
Código do erro | Significado |
---|---|
A rotina de chamada não tem privilégios suficientes para instalar o serviço. | |
Não há memória suficiente disponível para executar essa operação. | |
Um ou mais parâmetros eram inválidos ou ausentes para esse provedor. | |
A operação não tem suporte. Esse erro será retornado se o provedor de namespace não implementar essa função. | |
O serviço é desconhecido. O serviço não pode ser encontrado no namespace especificado. |
Comentários
A tabela a seguir lista os valores disponíveis para essOperation e dwControlFlags.
Operação | Flags | O serviço já existe | O serviço não existe |
---|---|---|---|
**RNRSERVICE_REGISTER** | Nenhum | Substitui o objeto . Usa apenas endereços especificados. O objeto é REGISTERED. | Cria um novo objeto. Usa apenas endereços especificados. O objeto é REGISTERED. |
**RNRSERVICE_REGISTER** | **SERVICE_MULTIPLE** | Atualizações 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 é DEREGISTERED. | WSASERVICE_NOT_FOUND |
**RNRSERVICE_DEREGISTER** | **SERVICE_MULTIPLE** | Atualizações objeto . Remove somente os endereços especificados. Marque apenas o objeto como DEREGISTERED se nenhum endereço estiver presente. Não remove 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 |
Quando o parâmetro dwControlFlags é definido como SERVICE_MULTIPLE, isso permite que um aplicativo gerencie seus endereços de forma independente. Isso é útil quando o aplicativo deve 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, um soquete de escuta pode ser anulado, mas os outros soquetes permanecem operacionais. Neste exemplo, o serviço pode cancelar o registro do endereço anulado sem afetar os outros endereços.
Ao usar SERVICE_MULTIPLE, um aplicativo não deve permitir que endereços antigos permaneçam no objeto . Isso pode acontecer se o aplicativo for anulado sem emitir uma solicitação de RNRSERVICE_DEREGISTER . Quando um serviço é registrado, ele deve armazenar seus endereços. Em sua próxima chamada, o serviço deve cancelar explicitamente esses endereços antigos antes de registrar novos endereços.
Propriedades do Serviço
A tabela a seguir lista os nomes de membro WSAQUERYSET e descreve como os dados de propriedade de serviço são representados. Os membros rotulados como (Opcional) podem ser fornecidos com um ponteiro nulo.Nome do membro WSAQUERYSET | Descrição da propriedade de serviço |
---|---|
**Dwsize** | Defina como o sizeof(WSAQUERYSET). Esse é um mecanismo de controle de versão. |
**Lpszserviceinstancename** | A cadeia de caracteres referenciada contém o nome da instância de serviço. |
**lpServiceClassId** | O GUID que corresponde 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** | Ignorado para esta operação. |
**lpNSProviderId** | Ignorado para esta operação. O identificador do provedor está contido no parâmetro lpProviderId . |
**lpszContext** | Opcional. O ponto de partida da consulta em um namespace hierárquico. |
**dwNumberOfProtocols** | Ignorado para esta operação. |
**lpafpProtocols** | Ignorado para esta operação. |
**pszQueryString** | Ignorado para esta operação. |
**dwNumberOfCsAddrs** | O número de elementos na matriz de CSADDR_INFO estruturas referenciadas por lpcsaBuffer. |
**Lpcsabuffer** | Um ponteiro para uma matriz de estruturas CSADDR_INFO que contêm o endereço ou endereços em que o serviço está escutando. |
**dwOutputFlags** | Ignorado para esta operação. |
**Lpblob** | Opcional. Ponteiro para uma entidade específica do provedor. |
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | ws2spi.h |