Partilhar via


IOCTL_MOUNTMGR_CHANGE_NOTIFY IOCTL (mountmgr.h)

Os clientes enviam esse IOCTL para o gerenciador de montagem para serem informados sempre que houver uma alteração no banco de dados de nome de link simbólico persistente do gerenciador de montagem.

O gerenciador de montagem mantém um contador chamado EpicNumber que registra quantas alterações ocorreram em seu banco de dados de nome persistente desde a última inicialização. Os clientes enviam um número para o gerenciador de montagem com cada IRP de solicitação de notificação de alterações e o gerenciador de montagem responde da seguinte maneira:

  • Se o número fornecido pelo cliente não for igual a EpicNumber, o gerenciador de montagem retornará STATUS_SUCCESS, indicando que as alterações ocorreram desde a última vez que o cliente comparou seu número com o EpicNumber do gerenciador de montagem.

  • Se o número fornecido pelo cliente for igual a EpicNumber, o gerenciador de montagem interpretará isso como uma solicitação a ser informada da próxima alteração para o banco de dados de nome persistente e ele enfileira o IRP de notificação de alteração e retorna STATUS_PENDING. Sempre que ocorre uma alteração no banco de dados, o gerenciador de montagem conclui todos os IRPs de notificação de alteração pendentes, informando assim aos clientes sobre a alteração.

Um cliente que só deseja ser informado das alterações em um determinado volume é aconselhado a se registrar na notificação de dispositivo de destino Plug and Play e observar GUID_IO_VOLUME_NAME_CHANGE.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

O cliente do gerenciador de montagem inicializa a estrutura de MOUNTMGR_CHANGE_NOTIFY_INFO no início do buffer em Irp-AssociatedIrp.SystemBuffer>.

Comprimento do buffer de entrada

Parameters.DeviceIoControl.InputBufferLength no local da pilha de E/S do IRP indica o tamanho, em bytes, do buffer de entrada, que deve ser maior ou igual a sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO).

Buffer de saída

O gerenciador de montagem retorna o EpicNumber atual na estrutura MOUNTMGR_CHANGE_NOTIFY_INFO no início do buffer em Irp-AssociatedIrp.SystemBuffer>.

Comprimento do buffer de saída

Nenhum.

Buffer de entrada/saída

N/D

Comprimento do buffer de entrada/saída

N/D

Bloco de status

Se a operação for bem-sucedida, o campo Status será definido como STATUS_SUCCESS e o campo Informações será definido como sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO).

Se InputBufferLength for menor que sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO) ou OutputBufferLength for menor que sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO), o campo Status será definido como STATUS_INVALID_PARAMETER.

Comentários

Para obter mais informações, consulte Suporte a solicitações do Mount Manager em um driver de classe de armazenamento.

Requisitos

Requisito Valor
Cabeçalho mountmgr.h (inclua Mountmgr.h)

Confira também

MOUNTMGR_CHANGE_NOTIFY_INFO