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 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

Confira 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