Compartilhar via


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)

Confira também

MRxAreFilesAliased

MRxCleanupFobx

MRxCloseSrvOpen

MRxCollapseOpen

MRxCreate

MRxDeallocateForFcb

MRxDeallocateForFobx

MRxExtendForCache

MRxExtendForNonCache

MRxFlush

MRxForceClosed

MRxIsLockRealizable

MRxShouldTryToCollapseThisOpen

MRxTruncate

MRxZeroExtend