PNRP y WSANSPIoctl
PNRP usa la función WSANSPIoctl para recibir notificaciones sobre los cambios en lo siguiente:
- Una lista de la nube de red
- Disponibilidad de los resultados de una solicitud de resolución de nombres
La primera llamada a WSALookupServiceBegin define el tipo de información sobre la que se notifica a un cliente. Un cliente puede recibir notificaciones con un mensaje de Windows, una rutina de finalización, un identificador de un objeto WSAEVENT o un puerto. Para obtener más información sobre las opciones y establecer el parámetro lpCompletion , vea WSANSPIoctl.
Para seguir recibiendo notificaciones después de una llamada a WSALookupServiceNext, una aplicación debe llamar a WSANSPIoctl de nuevo.
La función WSALookupServiceNext se bloquea incluso si se llama a WSANSPIoctl . Antes de llamar a WSALookupServiceNext, una aplicación debe esperar hasta que reciba una notificación, si el bloqueo es un problema.
Al llamar a esta función, los parámetros deben tener los valores siguientes:
-
hLookup
-
Especifica el identificador que WSALookupServiceBegin devuelve.
-
dwControlCode
-
Debe ser SIO_NSP_NOTIFY_CHANGE.
-
lpvInBuffer
-
Debe ser NULL.
-
cbInBuffer
-
Debe ser cero (0).
-
lpvOutBuffer
-
Debe ser NULL.
-
cbOutBuffer
-
Debe ser cero (0).
-
lpcbBytesReturned
-
Debe ser NULL.
-
lpCompletion
-
Especifica NULL o un puntero a una estructura WSACOMPLETION .
Una vez recibida una notificación, llame a WSALookupServiceNext una vez para obtener los resultados.
Para finalizar una búsqueda, llame a WSALookupServiceEnd.
Notificaciones de resolución
Se puede notificar a un cliente cada vez que se agrega una entrada de resolución de nombres. A continuación, el cliente llama a WSALookupServiceNext para obtener los datos de resolución.
Si el cliente no usa esta técnica, se puede bloquear una llamada a WSALookupServiceNext hasta que se produzca el tiempo de espera especificado.
Notificaciones de lista en la nube
Se puede notificar a un cliente cada vez que haya un cambio en un conjunto de nubes.
La función WSALookupServiceNext devuelve WSA_E_NO_MORE como delimitador establecido. La aplicación cliente debe enumerar las nubes existentes hasta que se devuelva este mensaje y, a continuación, usar un esquema de notificación para recuperar los cambios posteriores a medida que se produzcan. Una aplicación cliente también puede llamar a WSALookupServiceNext, pero la llamada se bloquea hasta que se produzca un cambio.
La función WSALookupServiceNext devuelve una nube en una estructura WSAQUERYSET . Se devuelve una de las marcas siguientes en el miembro dwOutputFlags .
Value | Descripción |
---|---|
RESULT_IS_ADDED | Se agrega la nube que se devuelve. |
RESULT_IS_CHANGED | Se cambia la nube que se devuelve. |
RESULT_IS_DELETED | La nube que se devuelve se elimina y no es válida. |
Temas relacionados
-
WSALookupServiceBegin
-
WSALookupServiceEnd
-
WSAQUERYSET