WSASetService (Windows Sockets)
9/8/2008
Essa função registra ou remove a partir de Registro uma instância serviço em um ou mais espaços Nome. Esta função pode ser usada para afetar um provedor espaço nome específicos, todos os provedores associado com um espaço nome específico, ou todos os provedores entre todos os espaços Nome.
Observação
WSASetService não é com suporte pela usar como padrão sistema de nome de domínio (DNS)/WINS Namespace provedor (Nspm.dll) em Windows Embedded CE.No entanto, terceiros pode implementar suas possui provedor e ter suporte para esta função se eles escolher.
Observação
Essa função é com suporte pelo provedor de Peer Name Resolution Protocol (PNRP) em Windows Embedded CE.
Syntax
INT WSASetService(
LPWSAQUERYSET lpqsRegInfo,
WSAESETSERVICEOP essOperation,
DWORD dwControlFlags
);
Parameters
- lpqsRegInfo
[no] Ponteiro para informações de serviço de registro ou cancelamento.
essOperation
[no] Enumeração. A seguinte tabela mostra os valores possíveis.Valor Descrição RNRSERVICE_REGISTER
Registra o serviço. Para Service Access Protocol (SAP), isso significa enviando um transmitir periódico. Este não é uma nenhuma operação instrução (NOP) para o espaço nome sistema de nome de domínio (DNS) (sistema de nome de domínio (DNS)). Armazena dados persistentes, isso significa atualizar informações de endereço.
RNRSERVICE_DEREGISTER
Remove o serviço de Registro. Para SAP, isso significa parar envio sem a transmitir periódico. Este é um NOP para o espaço nome DNS. Armazena dados persistentes, isso significa excluindo informações endereço.
RNRSERVICE_DELETE
Exclui o serviço dinâmico nome e espaços persistentes. Para serviços representados por múltiplo CSADDR_INFO Estruturas (usando o sinalizador SERVICE_MULTIPLE), somente o endereço fornecido será excluído e este deve corresponder exatamente o correspondente CSADDR_INFO estrutura que foi fornecida quando o serviço foi registrado.
dwControlFlags
[no] Descrição de dwControlFlags é dependente em um valor específico. A seguinte tabela mostra esse valor.Sinalizador Descrição SERVICE Multiple
Controla o escopo da operação. Quando Clear, serviço endereços são gerenciado como um GRUPO. Um registro ou remoção a partir de Registro invalida todos endereços existentes antes de adicionar o conjunto endereço determinado. Quando definida, a ação é executada somente no conjunto de endereço determinado. Um registro não invalida endereços existentes e uma remoção a partir de Registro somente invalida o conjunto especificado de endereços.
A seguinte tabela mostra o significado dos valores combinados essOperation e dwControlFlag.
A operação Sinalizadores O serviço já existe O serviço não existe Registro RNRSERVICE_
Nenhum
Substitui o objeto e usa somente endereços especificados. O objeto é REGISTERED.
Cria um novo objeto. Usa somente endereços especificados. Objeto é REGISTERED.
Registro RNRSERVICE_
MULTIPLE SERVICE_
Atualiza objeto e adiciona novos endereços ao conjunto existente. O objeto é REGISTERED.
Cria um novo objeto. Usa todos os endereços especificados. Objeto é REGISTERED.
RNRSERVICE_ DEREGISTER
Nenhum
Remove todos os endereços, mas ele não remover o objeto do espaço de nome. O objeto será removido do Registro.
NOT_FOUND WSASERVICE_
RNRSERVICE_ DEREGISTER
MULTIPLE SERVICE_
Atualiza o objeto e remove somente endereços que são especificados. Somente ele marca o objeto como DEREGISTERED se há endereços estiverem presentes. Ele não remover o objeto do espaço de nome.
NOT_FOUND WSASERVICE_
RNRSERVICE_ DELETE
Nenhum
Remove o objeto do espaço de nome.
NOT_FOUND WSASERVICE_
RNRSERVICE_ DELETE
MULTIPLE SERVICE_
Remove somente endereços que são especificados. Ele apenas remove o objeto do espaço de nome se há endereços permanecem.
NOT_FOUND WSASERVICE_
Return Value
O valor de retorno será zero se a operação foi bem-sucedido. Se um erro ocorrer, o valor retornado SOCKET_ERROR, e um número de erro específicas pode ser recuperado por chamado WSAGetLastError.
A seguinte tabela mostra uma lista dos códigos de erro possível.
Código de erro | Descrição |
---|---|
WSAEACCES |
A rotina chamado não tem privilégios suficientes para instalar o serviço. |
WSAEINVAL |
Exigido um ou mais parâmetros foram inválido ou ausente. |
WSANOTINITIALIZED |
WiS2_32.dll não foi inicializada. O aplicativo deve primeiro chamar WSAStartup Antes chamado quaisquer funções Soquetes do Windows. |
WSA não ENOUGH memória |
Não havia memória suficiente para executar a operação. |
WSASERVICE não encontrado |
Este serviço não é conhecido. O serviço não pode ser encontrado no espaço para nome especificado. |
Remarks
SERVICE_MULTIPLE permite que um aplicativo gerenciar seus endereços de forma independente. Isso é útil quando o aplicativo deseja gerenciar seus protocolos individualmente ou quando o serviço reside em More than um computador. PARA instância, quando um serviço usa mais de um protocolo, ele pode localizar anula que um Soquete de escuta, mas as outras permanecem operacionais. Neste maiúsculas e minúsculas, o serviço pode remover o endereço a partir de Registro sem afetar os outros endereços anulado.
Ao usar SERVICE_MULTIPLE, um aplicativo não deve permitir que obsoleto endereços permanecem no objeto. Isso pode acontecer se o aplicativo anula sem emitir um DEREGISTER solicitação. Quando um serviço registra, ele deve armazenar seus endereços. Em seu próximo chamada, o serviço deve remover explicitamente esses obsoleto antigo endereços a partir de Registro antes de registrar novos endereços.
Propriedades de Serviço
A seguinte tabela descreve como os dados propriedade serviço são representados em um WSAQUERYSET estrutura. Campos rotulado como (opcional) pode ser fornecido com um NULL ponteiro.
Nome membro WSAQUERYSET | Propriedade descrição do serviço |
---|---|
dwSize |
Deve ser definido como sizeof (WSAQUERYSET). Este é um mecanismo versionamento. |
dwOutputFlags |
Não aplicável e ignoradas. |
LpszServiceInstanceName |
O relacionado seqüência de caracteres contém o nome instância serviço. |
LpServiceClassId |
O identificador exclusivo (GUID) correspondente a essa classe serviço. |
LpVersion |
(Opcional) Fornece o número versão instância serviço. |
LpszComment |
(Opcional) Um opcional seqüência de caracteres comentar. |
DwNameSpace |
Consulte a seguinte tabela. |
LpNSProviderId |
Consulte a seguinte tabela. |
LpszContext |
(Opcional) Especifica a raiz da consulta em um hierárquico Nome espaço. |
DwNumberOfProtocols |
Ignorado. |
LpafpProtocols |
Ignorado. |
LpszQueryString |
Ignorado. |
DwNumberOfCsAddrs |
O número de elementos de matriz de CSADDR_INFO Estruturas relacionado por lpcsaBuffer. |
LpcsaBuffer |
Um ponteiro para uma matriz de CSADDR_INFO estruturas que contêm os endereços na qual o serviço está escutando. |
LpBlob |
(Opcional) Este é um ponteiro para uma entidade Provider-specific. |
A seguinte tabela mostra como a combinação da dwNameSpace e lpNSProviderId Parâmetros determina que Nome espaço provedores são afetados por essa função.
DwNameSpace | lpNSProviderId | Impacto |
---|---|---|
Ignorado |
Não-NULL |
O provedor espaço nome especificado. |
Um válido identificador espaço nome |
NULL |
Todos os nomes provedores espaço que suporte o espaço nome indicado. |
NS_ALL |
NULL |
Todos os provedores espaço Nome. |
Observações para Bluetooth
Chamar servidores RFCOMM WSASetService Para fazer qualquer um do seguinte tarefas:
- Registrar informações serviço com sockets do Windows (Winsock) e o driver de SDP.
- Atualize um registro de SDP.
- Exclua um registro de SDP.
Requirements
Header | winsock2.h |
Library | Ws2.lib |
Windows Embedded CE | Windows CE .NET 4.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |