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 de 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 a ser finalizada.
[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 membro NodeReferenceCount da estrutura SRV_OPEN apontada por ThisSrvOpen deverá ser 0 para que o SRV_OPEN seja finalizado.
Retornar valor
RxFinalizeSrvOpen retornará TRUE em caso de êxito ou FALSO se a finalização não ocorrer:
Comentários
A rotina RxFinalizeSrvOpen 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 SRV_OPEN é decrementada para 1. O RDBSS também chama RxFinalizeSrvOpen quando a rotina RxFinalizeNetFcb é chamada com RecursiveFinalize definido como TRUE. 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 esse 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 de tabela do NET_ROOT associado ao FCB.
Se o parâmetro RecursiveFinalize for TRUE, RxFinalizeSrvOpen finalizará todas as estruturas FOBX associadas a esse SRV_OPEN chamando RxFinalizeNetFobx com o parâmetro RecursiveFinalize definido como TRUE e o parâmetro ForceFinalize .
Se o membro FcbState do FCB associado não tiver o sinalizador FCB_STATE_ORPHANED definido, RxFinalizeSrvCall chamará a rotina 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 de SRV_CALL também será liberada.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | fcb.h (inclua Mrxfcb.h, Fcb.h) |
IRQL | <= APC_LEVEL |