IRP_MJ_SET_EA (FS e drivers de filtro)
Quando enviado
O Gerenciador de E/S envia a solicitação IRP_MJ_SET_EA para definir 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 solicitação e concluir o IRP. Caso contrário, o driver do sistema de arquivos 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 IRP para processar uma solicitação de atributos estendidos definida:
DeviceObject é um ponteiro para o objeto de dispositivo de destino.
Irp->AssociatedIrp.SystemBuffer aponta para um buffer de entrada fornecido pelo sistema que contém as informações de atributo estendido a serem definidas. 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 entrada que recebe as informações de atributo estendido. Usado para METHOD_DIRECT E/S.
Irp->UserBuffer aponta para um buffer de entrada estruturado 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_SET_EA e não deve ser usado.
IrpSp->MajorFunction está definido como IRP_MJ_SET_EA.
IrpSp->Parameters.SetEa.Length é o comprimento em bytes do buffer de entrada.