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 |