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


IOCTL_MOUNTMGR_CHANGE_NOTIFY IOCTL (mountmgr.h)

Клиенты отправляют этот IOCTL диспетчеру подключений, чтобы получать сведения, когда в базе данных имени постоянного символьного канала диспетчера подключения изменяется.

Диспетчер подключений поддерживает счетчик с именем EpicNumber, который записывает количество изменений в базе данных постоянных имен с момента последнего запуска. Клиенты отправляют номер диспетчеру подключений с каждым запросом на уведомление об изменении IRP, а диспетчер подключений отвечает следующим образом:

  • Если номер, предоставленный клиентом, не равен EpicNumber, диспетчер подключений возвращает STATUS_SUCCESS, указывая, что изменения произошли с момента последнего сравнения его числа с EpicNumber диспетчера подключений.

  • Если номер, предоставленный клиентом, равен EpicNumber, диспетчер подключений интерпретирует это как запрос на следующее изменение в базу данных постоянных имен, и он очередирует IRP уведомления об изменении и возвращает STATUS_PENDING. Всякий раз, когда изменения происходят в базе данных, диспетчер подключения завершает все ожидающие уведомления об изменениях, тем самым информируя клиентов об изменении.

Клиент, который хочет получать сведения об изменениях в определенном томе, рекомендуется зарегистрировать уведомление о целевом устройстве Plug and Play и просмотреть GUID_IO_VOLUME_NAME_CHANGE.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Клиент диспетчера подключений инициализирует структуру MOUNTMGR_CHANGE_NOTIFY_INFO в начале буфера в Irp->AssociatedIrp.SystemBuffer.

Длина входного буфера

Parameters.DeviceIoControl.InputBufferLength в расположении стека ввода-вывода iRP указывает размер входного буфера в байтах, который должен быть больше или равен sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO).

Выходной буфер

Диспетчер подключения возвращает текущую EpicNumber в структуре MOUNTMGR_CHANGE_NOTIFY_INFO в начале буфера в Irp->AssociatedIrp.SystemBuffer.

Длина выходного буфера

Никакой.

Буфер входных и выходных данных

N/A

Длина буфера ввода и вывода

N/A

Блок состояния

Если операция выполнена успешно, для поля состояния задано значение STATUS_SUCCESS, а для поля Information задано значение sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO).

Если InputBufferLength меньше sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO) или OutputBufferLength меньше sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO), поле состояние имеет значение STATUS_INVALID_PARAMETER.

Замечания

Дополнительные сведения см. в поддержке запросов диспетчера подключений вдрайвера класса хранилища.

Требования

Требование Ценность
заголовка mountmgr.h (include Mountmgr.h)

См. также

MOUNTMGR_CHANGE_NOTIFY_INFO