Поделиться через


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 Возвращаемое облако удаляется и является недопустимым.

 

PNRP и WSALookupServiceBegin

PNRP и WSALookupServiceEnd

PNRP и WSAQUERYSET

Коды ошибок NSP PNRP

WSANSPIoctl

WSALookupServiceBegin

WSALookupServiceEnd

WSAQUERYSET