IRP_MJ_QUERY_EA (FS e drivers de filtro)

Quando enviado

O Gerenciador de E/S, outros componentes do sistema operacional e outros drivers de modo kernel enviam IRP_MJ_QUERY_EA solicitações quando um aplicativo de modo de usuário solicitou informações sobre os atributos estendidos de um arquivo.

Operação: Drivers do sistema de arquivos

Se o sistema de arquivos der suporte a atributos estendidos, o driver do sistema de arquivos deverá processar a consulta e concluir o IRP. Caso contrário, ele deverá retornar STATUS_EAS_NOT_SUPPORTED.

Operação: Drivers de filtro do sistema de arquivos herdado

O driver de filtro deve passar esse IRP para o driver mais baixo na pilha.

Parâmetros

Um sistema de arquivos ou driver de filtro chama IoGetCurrentIrpStackLocation para o IRP fornecido para obter um ponteiro para seu próprio local de pilha no IRP. Nos parâmetros a seguir, Irp aponta para os pontos IRP e IrpSp para o IO_STACK_LOCATION. O driver pode usar as informações definidas nos seguintes membros do IRP e no local da pilha do IRP para processar uma solicitação de IRP_MJ_QUERY_EA:

  • DeviceObject é um ponteiro para o objeto de dispositivo de destino.

  • Irp->AssociatedIrp.SystemBuffer aponta para um buffer de saída fornecido pelo sistema a ser usado como um buffer de sistema intermediário. Usado para METHOD_BUFFERED E/S.

  • Irp->IoStatus aponta para uma estrutura IO_STATUS_BLOCK que recebe a status de conclusão final e informações sobre a operação solicitada.

  • Irp->MdlAddress é o endereço de uma MDL (lista de descritores de memória) que descreve um buffer de saída que recebe as informações de atributo estendido. Usado para METHOD_DIRECT E/S.

  • Irp->UserBuffer aponta para um buffer de saída estruturado por FILE_FULL_EA_INFORMATION fornecido pelo chamador que recebe as informações de atributo estendido. Usado para METHOD_NEITHER E/S.

  • IrpSp->FileObject aponta para o objeto de arquivo associado a DeviceObject.

    O parâmetro IrpSp-FileObject> contém um ponteiro para o campo RelatedFileObject, que também é uma estrutura FILE_OBJECT. O campo RelatedFileObject da estrutura FILE_OBJECT não é válido durante o processamento de IRP_MJ_QUERY_EA e não deve ser usado.

  • IrpSp->Os sinalizadores podem ser um ou mais dos valores a seguir.

Sinalizador Significado
SL_INDEX_SPECIFIED Inicie a verificação na entrada na lista de atributos estendidos cujo índice é fornecido por IrpSp-Parameters.QueryEa.EaIndex>.
SL_RESTART_SCAN Inicie a verificação na primeira entrada da lista. Se esse sinalizador não estiver definido, retome a verificação de uma solicitação de IRP_MJ_QUERY_EA anterior.
SL_RETURN_SINGLE_ENTRY Retornar somente a primeira entrada encontrada.
  • IrpSp->MajorFunction é definido como IRP_MJ_QUERY_EA.

  • IrpSp->Parameters.QueryEa.EaIndex é o índice da entrada na qual iniciar a verificação da lista de atributos estendidos. Esse parâmetro será ignorado se o sinalizador SL_INDEX_SPECIFIED não estiver definido ou se IrpSp-Parameters.QueryEa.EaList> apontar para uma lista não vazia.

  • IrpSp->Parameters.QueryEa.EaList aponta para um buffer de entrada FILE_GET_EA_INFORMATION estruturado pelo chamador especificando os atributos estendidos a serem consultados.

  • IrpSp->Parameters.QueryEa.EaListLength é o comprimento em bytes do buffer apontado por IrpSp-Parameters.QueryEa.EaList>.

  • IrpSp->Parameters.QueryEa.Length é o comprimento em bytes do buffer de saída.

Comentários

Quando um buffer curto é fornecido e STATUS_BUFFER_OVERFLOW é retornado, o NTFS retorna a última entrada de FILE_FULL_EA_INFORMATION inteira que se ajusta. Quando um buffer curto é fornecido e STATUS_BUFFER_TOO_SMALL é retornado, o NTFS não pôde se ajustar a nenhuma entrada de FILE_FULL_EA_INFORMATION.

No Windows Vista e posterior, o FAT16 não dá mais suporte a atributos estendidos.

Confira também

FILE_FULL_EA_INFORMATION

FILE_GET_EA_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCheckEaBufferValidity

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_EA