Rotina MRxCreate
A rotinaMRxCreate é chamada pelo RDBSS para solicitar que o minidiretório de rede crie um objeto do sistema de arquivos.
Sintaxe
PMRX_CALLDOWN MRxCreate;
NTSTATUS MRxCreate(
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
Parâmetros
RxContext [in, out]
Um ponteiro para a estrutura RX_CONTEXT. Esse parâmetro contém o IRP que está solicitando a operação.
Retornar valor
MRxCreate retorna STATUS_SUCCESS com êxito ou um valor NTSTATUS apropriado, como um dos seguintes:
Código de retorno | Descrição |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Não havia recursos suficientes para concluir a operação. |
STATUS_NETWORK_ACCESS_DENIED | O acesso à rede foi negado. Esse erro poderá ser retornado se o minidiretório de rede for solicitado a abrir um novo arquivo em um compartilhamento somente leitura. |
STATUS_NOT_IMPLEMENTED | Um recurso solicitado, como inicialização remota ou um arquivo de página remota, não é implementado. |
STATUS_NOT_SUPPORTED | Não há suporte para um recurso solicitado, como atributos estendidos. |
STATUS_OBJECT_NAME_COLLISION | O minidiretório de rede foi solicitado a criar um arquivo que já existe. |
STATUS_OBJECT_NAME_NOT_FOUND | O nome do objeto não foi encontrado. Esse erro poderá ser retornado se o minidiretório de rede for solicitado a abrir um arquivo que não existe. |
STATUS_OBJECT_PATH_NOT_FOUND | O caminho do objeto não foi encontrado. Esse erro poderá ser retornado se um objeto de fluxo NTFS tiver sido solicitado e o sistema de arquivos remoto não oferecer suporte a fluxos. |
STATUS_REPARSE | Uma nova análise é necessária para lidar com um link simbólico. |
STATUS_RETRY | A operação deve ser repetida. Esse erro poderá ser retornado se o minidiretório de rede tiver encontrado uma violação de compartilhamento ou um erro de acesso negado. |
Comentários
MRxCreate é chamado pelo RDBSS para solicitar que o minidiretório de rede abra um objeto do sistema de arquivos em toda a rede. Essa chamada é emitida pelo RDBSS em resposta ao recebimento de uma solicitação de IRP_MJ_CREATE .
Antes de chamar MRxCreate, o RDBSS modifica os seguintes membros na estrutura RX_CONTEXT apontada pelo parâmetro RxContext :
pRelevantSrvOpen é definido como a estrutura SRV_OPEN.
Create.pSrvCall é definido como a estrutura SRV_CALL.
Create.NtCreateParameters é definido como o NT_CREATE_PARAMETERS solicitado.
No contexto de um minidiretório de rede, um objeto de arquivo refere-se às estruturas FCB (bloco de controle de arquivo) e FOBX (extensão de objeto de arquivo) associadas. Há uma correspondência de um para um entre objetos de arquivo e FOBXs. Muitos objetos de arquivo se referirão ao mesmo FCB, que representa um único arquivo em um servidor remoto. Um cliente pode ter várias solicitações abertas diferentes (solicitações NtCreateFile) no mesmo FCB e cada uma delas criará um novo objeto de arquivo. O RDBSS e os minidiretórios de rede podem optar por enviar menos solicitações MRxCreate do que as solicitações NtCreateFile recebidas, compartilhando de fato uma estrutura de SRV_OPEN entre vários FOBXs.
Se a solicitação MRxCreate for para uma substituição de arquivo e MRxCreate retornar STATUS_SUCCESS, o RDBSS adquirirá o recurso de E/S de paginação e truncará o arquivo. Se o arquivo estiver sendo armazenado em cache pelo gerenciador de cache, o RDBSS atualizará os tamanhos que o gerenciador de cache tem com os que acabaram de receber do servidor.
Antes de retornar, MRxCreate deve definir o membro CurrentIrp-IoStatus.Information> da estrutura RX_CONTEXT apontada pelo parâmetro RxContext.
Requisitos
Plataforma de destino |
Área de Trabalho |
parâmetro |
Mrx.h (inclua Mrx.h) |