Compartilhar via


Função RxFinalizeSrvOpen (fcb.h)

RxFinalizeSrvOpen finaliza a estrutura de SRV_OPEN fornecida. O chamador deve ter um bloqueio exclusivo no FCB associado ao SRV_OPEN e um bloqueio compartilhado ou exclusivo no bloqueio da tabela do NET_ROOT associado ao FCB.

Sintaxe

BOOLEAN RxFinalizeSrvOpen(
  [out] OUT PSRV_OPEN ThisSrvOpen,
  [in]  IN BOOLEAN    RecursiveFinalize,
  [in]  IN BOOLEAN    ForceFinalize
);

Parâmetros

[out] ThisSrvOpen

Um ponteiro para a estrutura SRV_OPEN para finalizar.

[in] RecursiveFinalize

O valor que indica se a finalização deve ser feita recursivamente.

[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 SRV_OPEN apontado pelo ThisSrvOpen deverá ser 0 para que o SRV_OPEN seja finalizado.

Valor de retorno

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

Observações

A rotina de RxFinalizeSrvOpen normalmente não é chamada diretamente por drivers de minidiretor de rede. O RDBSS chama essa rotina internamente quando a contagem de referência no SRV_OPEN é decrementada para 1. O RDBSS também chama RxFinalizeSrvOpen quando a rotina de RxFinalizeNetFcb é chamada com o RecursiveFinalize definido como VERDADEIRO. O RDBSS chama RxFinalizeNetFcb quando um pacote de solicitação de E/S é recebido para IRP_MJ_CLOSE. Esse IRP normalmente é recebido pelo RDBSS em resposta a um aplicativo no modo de usuário solicitando uma operação de fechamento de arquivo. Também é possível que outro driver de kernel emita tal IRP.

Antes de chamar RxFinalizeSrvOpen, o chamador deve ter adquirido um bloqueio exclusivo no FCB associado ao SRV_OPEN e adquirido um bloqueio compartilhado ou exclusivo no bloqueio da tabela do NET_ROOT associado à FCB.

Se o parâmetro RecursiveFinalize for VERDADEIRO, RxFinalizeSrvOpen finalizará todas as estruturas FOBX associadas a esse SRV_OPEN chamando RxFinalizeNetFobx com o parâmetro RecursiveFinalize definido como verdadeiro e o parâmetro ForceFinalize.

Se o fcbState membro da FCB associada não tiver o sinalizador FCB_STATE_ORPHANED definido, RxFinalizeSrvCall chamará a rotina de MRxForceClosed fornecida pelo minidiretório de rede para finalizar o SRV_CALL. Se a estrutura de SRV_CALL não foi originalmente alocada como parte da criação do FCB, a memória da estrutura SRV_CALL também será 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

MRxForceClosed

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeVNetRoot

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

a estrutura SRV_OPEN