PNRP и WSANSPIoctl
PNRP использует функцию WSANSPIoctl для получения уведомлений об изменениях следующего:
- Список сетевых облаков
- Доступность результатов запроса разрешения имен
Первый вызов WSALookupServiceBegin определяет тип сведений, о чем уведомляется клиент. Клиент может получать уведомления с помощью сообщения Windows, процедуры завершения, дескриптора объекта WSAEVENT или порта. Дополнительные сведения о параметрах и настройке параметра lpCompletion см. в разделе WSANSPIoctl.
Чтобы продолжить получать уведомления после вызова WSALookupServiceNext, приложение должно снова вызвать WSANSPIoctl .
Функция WSALookupServiceNext блокируется, даже если вызывается WSANSPIoctl . Перед вызовом WSALookupServiceNext приложение должно подождать, пока не получит уведомление, если блокировка является проблемой.
При вызове этой функции параметры должны иметь следующие значения:
-
hLookup
-
Указывает дескриптор, возвращаемого WSALookupServiceBegin .
-
dwControlCode
-
Должен быть SIO_NSP_NOTIFY_CHANGE.
-
lpvInBuffer
-
Должен иметь значение NULL.
-
cbInBuffer
-
Значение должно быть равно нулю (0).
-
lpvOutBuffer
-
Должен иметь значение NULL.
-
cbOutBuffer
-
Значение должно быть равно нулю (0).
-
lpcbBytesReturned
-
Должен иметь значение NULL.
-
lpCompletion
-
Задает значение NULL или указатель на структуру WSACOMPLETION .
После получения уведомления вызовите WSALookupServiceNext один раз, чтобы получить результаты.
Чтобы завершить поиск, вызовите WSALookupServiceEnd.
Уведомления о разрешении
Клиент может быть уведомлен в любое время при добавлении записи разрешения имен. Затем клиент вызывает WSALookupServiceNext , чтобы получить данные разрешения.
Если клиент не использует этот метод, вызов WSALookupServiceNext может быть заблокирован до истечения указанного времени ожидания.
Уведомления об облачных списках
Клиент может получать уведомления в любое время при изменении набора облаков.
Функция WSALookupServiceNext возвращает WSA_E_NO_MORE в качестве разделителя набора. Клиентское приложение должно перечислять существующие облака, пока не будет возвращено это сообщение, а затем использовать схему уведомлений для получения последующих изменений по мере их возникновения. Клиентское приложение также может вызывать WSALookupServiceNext, но вызов блокируется до тех пор, пока не произойдет изменение.
Функция WSALookupServiceNext возвращает облако в структуре WSAQUERYSET . Один из следующих флагов возвращается в члене dwOutputFlags .
Значение | Описание |
---|---|
RESULT_IS_ADDED | Добавляется возвращаемое облако. |
RESULT_IS_CHANGED | Возвращаемое облако изменяется. |
RESULT_IS_DELETED | Возвращаемое облако удаляется и является недопустимым. |
Связанные темы
-
WSALookupServiceBegin
-
WSALookupServiceEnd
-
WSAQUERYSET