Compartilhar via


Função RxFinalizeVNetRoot (fcb.h)

RxFinalizeVNetRoot finaliza a estrutura de V_NET_ROOT fornecida. O chamador deve ter um bloqueio exclusivo na tabela netname associada ao objeto do dispositivo.

Sintaxe

BOOLEAN RxFinalizeVNetRoot(
  [out] OUT PV_NET_ROOT ThisVNetRoot,
  [in]  IN BOOLEAN      RecursiveFinalize,
  [in]  IN BOOLEAN      ForceFinalize
);

Parâmetros

[out] ThisVNetRoot

Um ponteiro para a estrutura V_NET_ROOT para finalizar.

[in] RecursiveFinalize

O valor que indica se a finalização deve ser feita recursivamente. Esse parâmetro não é usado no momento.

[in] ForceFinalize

O valor que indica se a finalização deve ser forçada, independentemente da contagem de referência.

Se ForceFinalize for FALSE, o NodeReferenceCount membro da estrutura V_NET_ROOT apontado pelo ThisVNetRoot deverá ser 1 para que o V_NET_ROOT seja finalizado.

Valor de retorno

RxFinalizeVNetRoot retornará TRUE no êxito ou FALSE se a finalização não ocorrer:

Observações

A rotina de RxFinalizeVNetRoot normalmente não é chamada por drivers de minidiretório de rede diretamente. O RDBSS chama essa rotina internamente quando a contagem de referência no V_NET_ROOT é decrementada para 1.

RxFinalizeVNetRoot também é chamado pela rotina de RxFinalizeConnection se o parâmetro Level para RxFinalizeConnection estiver definido como TRUE. RxFinalizeConnection normalmente é chamado por um driver de minidiretório de rede em resposta ao recebimento de uma solicitação IOCTL personalizada do modo de usuário. Por exemplo, um usuário pode executar na linha de comando um "NET USE x: /d" para excluir um compartilhamento. Essa solicitação seria mapeada por meio da DLL do provedor de rede fornecida pelo minidiretório de rede para uma solicitação IOCTL personalizada enviada ao driver de kernel do minidiretório de rede que chamaria a rotina de RxFinalizeConnection para excluir a conexão e quaisquer estruturas de V_NET_ROOT associadas.

RxFinalizeVNetRoot também é chamado pela rotina RxForceFinalizeAllVNetRoots para finalizar cada V_NET_ROOT associado a uma estrutura NET_ROOT.

Antes de chamar RxFinalizeVNetRoot, um bloqueio na tabela netname associada ao objeto do dispositivo deve ser adquirido no modo exclusivo.

Se o membro upperfinalization do V_NET_ROOT for 0, RxFinalizeVNetRoot iterará por meio de todas as FCBs que pertencem à NET_ROOT associada a essa V_NET_ROOT e órfã todas as estruturas SRV_OPEN associadas ao V_NET_ROOT.

RxFinalizeVNetRoot chamará a rotina de MRxFinalizeVNetRoot fornecida pelo minidiretório de rede para finalizar o V_NET_ROOT antes que a memória da estrutura V_NET_ROOT seja liberada.

Requisitos

Requisito Valor
da Plataforma de Destino Área de trabalho
cabeçalho fcb.h (inclua Mrxfcb.h, Fcb.h)
IRQL <= APC_LEVEL

Consulte também

MRxFinalizeVNetRoot

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeSrvOpen

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

a estrutura V_NET_ROOT