IOCTL_MOUNTMGR_CHANGE_NOTIFY IOCTL (mountmgr.h)
Клиенты отправляют этот IOCTL диспетчеру подключений, чтобы получать информацию при каждом изменении в базе данных постоянного имени символьных ссылок диспетчера подключений.
Диспетчер подключений поддерживает счетчик с именем EpicNumber , который записывает количество изменений, внесенных в ее базу данных постоянных имен с момента последнего запуска. Клиенты отправляют диспетчеру подключений номер с IRP каждого запроса на уведомление об изменении, и диспетчер подключения отвечает следующим образом:
- Если номер, предоставленный клиентом, не равен EpicNumber, диспетчер подключений возвращает STATUS_SUCCESS, указывая на то, что с тех пор, как клиент в последний раз сравнил свой номер с EpicNumber диспетчера подключений.
- Если номер, предоставленный клиентом, равен EpicNumber, диспетчер подключения интерпретирует это как запрос на получение информации о следующем изменении в базе данных постоянных имен и помещает уведомление об изменении в очередь и возвращает STATUS_PENDING. Всякий раз, когда происходит изменение в базе данных, диспетчер подключения завершает все ожидающие уведомления об изменениях IRP, тем самым информируя клиентов об изменении.
Основной код
Входной буфер
Клиент диспетчера подключений инициализирует структуру MOUNTMGR_CHANGE_NOTIFY_INFO, определенную в Mountmgr.h, в начале буфера в Irp-AssociatedIrp.SystemBuffer>.
Длина входного буфера
Parameters.DeviceIoControl.InputBufferLength в расположении стека ввода-вывода IRP указывает размер входного буфера в байтах, который должен быть больше или равен sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO).
Выходной буфер
Диспетчер подключения возвращает текущий элемент EpicNumber в структуре MOUNTMGR_CHANGE_NOTIFY_INFO, определенной в Mountmgr.h, в начале буфера в 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) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по