Función de devolución de llamada LPNSPSETSERVICE (ws2spi.h)
La función NSPSetService registra o anula el registro de una instancia de servicio dentro de un espacio de nombres.
Sintaxis
LPNSPSETSERVICE Lpnspsetservice;
INT Lpnspsetservice(
[in] LPGUID lpProviderId,
[in] LPWSASERVICECLASSINFOW lpServiceClassInfo,
[in] LPWSAQUERYSETW lpqsRegInfo,
[in] WSAESETSERVICEOP essOperation,
[in] DWORD dwControlFlags
)
{...}
Parámetros
[in] lpProviderId
Puntero al GUID del proveedor de espacios de nombres específico en el que se registra el servicio.
[in] lpServiceClassInfo
Información del esquema de la clase de servicio.
[in] lpqsRegInfo
Información de la propiedad que se va a actualizar tras el registro.
[in] essOperation
Tipo de operación solicitada.
Este parámetro puede ser uno de los valores del tipo de enumeración WSAESETSERVICEOP definido en el archivo de encabezado Winsock2.h .
Valor | Significado |
---|---|
|
Registre el servicio. Para el espacio de nombres del Protocolo de publicidad de servicios (SAP) usado en un entorno de NetWare, esto significa enviar una difusión periódica. Se trata de un NOP para el espacio de nombres del Sistema de nombres de dominio (DNS). En el caso de los almacenes de datos persistentes, esto significa actualizar la información de dirección. |
|
Anule el registro del servicio. Para el espacio de nombres de SAP, esto significa dejar de enviar la difusión periódica. Se trata de un NOP para el espacio de nombres DNS. En el caso de los almacenes de datos persistentes, esto significa eliminar la información de dirección. |
|
Elimine el servicio del nombre dinámico y los espacios persistentes. En el caso de los servicios representados por varias estructuras de CSADDR_INFO (con la marca SERVICE_MULTIPLE), solo se eliminará la dirección proporcionada y debe coincidir exactamente con la estructura **CSADDR_INFO** correspondiente proporcionada cuando se registró el servicio. |
[in] dwControlFlags
Conjunto de marcas que controla la operación de servicio solicitada.
Los valores posibles para este parámetro se definen en el archivo de encabezado Winsock2.h .
Valor devuelto
La función debe devolver NO_ERROR (cero) si la rutina se realiza correctamente. Debe devolver SOCKET_ERROR (–1) si se produce un error en la rutina y debe establecer el código de error adecuado mediante WSASetLastError.
Código de error | Significado |
---|---|
La rutina de llamada no tiene privilegios suficientes para instalar el servicio. | |
No hay suficiente memoria disponible para realizar esta operación. | |
Uno o varios parámetros no eran válidos o faltaban para este proveedor. | |
La operación no es compatible. Este error se devuelve si el proveedor de espacios de nombres no implementa esta función. | |
El servicio es desconocido. El servicio no se encuentra en el espacio de nombres especificado. |
Comentarios
En la tabla siguiente se enumeran los valores disponibles para essOperation y dwControlFlags.
Operación | Marcas | El servicio ya existe | El servicio no existe |
---|---|---|---|
**RNRSERVICE_REGISTER** | None | Sobrescribe el objeto . Usa solo las direcciones especificadas. El objeto es REGISTERED. | Crea un nuevo objeto. Usa solo las direcciones especificadas. El objeto es REGISTERED. |
**RNRSERVICE_REGISTER** | **SERVICE_MULTIPLE** | Novedades objeto . Agrega nuevas direcciones al conjunto existente. El objeto es REGISTERED. | Crea un nuevo objeto. Usa todas las direcciones especificadas. El objeto es REGISTERED. |
**RNRSERVICE_DEREGISTER** | None | Quita todas las direcciones, pero no quita el objeto del espacio de nombres. El objeto es DEREGISTERED. | WSASERVICE_NOT_FOUND |
**RNRSERVICE_DEREGISTER** | **SERVICE_MULTIPLE** | Novedades objeto . Quita solo las direcciones especificadas. Solo marque el objeto como DEREGISTERED si no hay ninguna dirección presente. No quita del espacio de nombres . | WSASERVICE_NOT_FOUND |
**RNRSERVICE_DELETE** | None | Quita el objeto del espacio de nombres . | WSASERVICE_NOT_FOUND |
**RNRSERVICE_DELETE** | **SERVICE_MULTIPLE** | Quita solo las direcciones especificadas. Solo quita el objeto del espacio de nombres si no quedan direcciones. | WSASERVICE_NOT_FOUND |
Cuando el parámetro dwControlFlags se establece en SERVICE_MULTIPLE, esto permite a una aplicación administrar sus direcciones de forma independiente. Esto resulta útil cuando la aplicación debe administrar sus protocolos individualmente o cuando el servicio reside en más de un equipo. Por ejemplo, cuando un servicio usa más de un protocolo, un socket de escucha puede anularse, pero los demás sockets permanecen operativos. En este ejemplo, el servicio podría anular el registro de la dirección anulada sin afectar a las demás direcciones.
Al usar SERVICE_MULTIPLE, una aplicación no debe permitir que las direcciones antiguas permanezcan en el objeto . Esto puede ocurrir si la aplicación se anula sin emitir una solicitud de RNRSERVICE_DEREGISTER . Cuando se registra un servicio, debe almacenar sus direcciones. En su siguiente llamada, el servicio debe anular explícitamente el registro de estas direcciones antiguas antes de registrar nuevas direcciones.
Propiedades del servicio
En la tabla siguiente se enumeran los nombres de miembros de WSAQUERYSET y se describe cómo se representan los datos de propiedad de servicio. Los miembros etiquetados como (opcional) se pueden proporcionar con un puntero nulo.Nombre del miembro WSAQUERYSET | Descripción de la propiedad de servicio |
---|---|
**dwSize** | Establezca en sizeof(WSAQUERYSET). Se trata de un mecanismo de control de versiones. |
**lpszServiceInstanceName** | La cadena a la que se hace referencia contiene el nombre de la instancia de servicio. |
**lpServiceClassId** | GUID que corresponde a esta clase de servicio. |
**lpVersion** | Opcional. Proporciona el número de versión de la instancia de servicio. |
**lpszComment** | Opcional. Cadena de comentario opcional. |
**dwNameSpace** | Se omite para esta operación. |
**lpNSProviderId** | Se omite para esta operación. El identificador del proveedor se encuentra en el parámetro lpProviderId . |
**lpszContext** | Opcional. Punto de partida de la consulta en un espacio de nombres jerárquico. |
**dwNumberOfProtocols** | Se omite para esta operación. |
**lpafpProtocols** | Se omite para esta operación. |
**pszQueryString** | Se omite para esta operación. |
**dwNumberOfCsAddrs** | Número de elementos de la matriz de estructuras de CSADDR_INFO a los que hace referencia lpcsaBuffer. |
**lpcsaBuffer** | Puntero a una matriz de estructuras de CSADDR_INFO que contienen la dirección o las direcciones en las que escucha el servicio. |
**dwOutputFlags** | Se omite para esta operación. |
**lpBlob** | Opcional. Puntero a una entidad específica del proveedor. |
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | ws2spi.h |