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


IOCTL_MOUNTMGR_CHANGE_NOTIFY IOCTL (mountmgr.h)

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

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

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

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

Клиенту, который только хочет получать информацию об изменениях в определенном томе, рекомендуется зарегистрироваться для уведомления о целевом устройстве 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>.

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

Нет.

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

Н/Д

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

Н/Д

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

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

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

Комментарии

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

Требования

Требование Значение
Заголовок mountmgr.h (включая Mountmgr.h)

См. также раздел

MOUNTMGR_CHANGE_NOTIFY_INFO