FCB Resource Synchronization

The synchronization resources of interest to mini-redirector drivers are primarily associated with the FCB. There is a paging I/O resource and a regular resource. The paging I/O resource is managed internally by RDBSS. The only resource accessible to mini-redirector drivers is the regular resource, which should be accessed using the following supplied routines:

Routine Description

RxAcquireExclusiveFcbResourceInMRx

This routine acquires the FCB resource in the exclusive mode. This routine will wait for the FCB resource to be free if it was previously acquired; this routine does not return control until the exclusive resource has been acquired. This routine acquires the FCB resource even if the RX_CONTEXT structure associated with this FCB has been canceled.

RxAcquireSharedFcbResourceInMRx

This routine acquires the FCB resource in shared mode. This routine will wait for the FCB resource to be free if it was previously acquired exclusively; this routine does not return control until the shared resource has been acquired. This routine acquires the FCB resource even if the RX_CONTEXT structure associated with this FCB has been canceled.

RxAcquireSharedFcbResourceInMRxEx

This routine acquires the FCB resource in shared mode. This routine will wait for the FCB resource to be free if it was previously acquired exclusively; this routine does not return control until the shared resource has been acquired. This routine acquires the FCB resource even if the RX_CONTEXT structure associated with this FCB has been canceled.

This routine is only available on Windows Server 2003 Service Pack 1 (SP1) and later.

RxReleaseFcbResourceForThreadInMRx

This routine frees the FCB resource previously acquired using RxAcquireSharedFcbResourceInMRxEx.

This routine is only available on Windows Server 2003 Service Pack 1 and later.

RxReleaseFcbResourceInMRx

This routine frees the FCB resource previously acquired using RxAcquireExclusiveFcbResourceInMRx or RxAcquireSharedFcbResourceInMRx.

The following macros are defined in the rxprocs.h header file to determine whether the current thread has access to the FCB regular resource.

Macro Description

RxFcbAcquiredShared (RXCONTEXT, FCB)

This macro checks if the current thread has access to the regular resource in shared mode. This macro calls the ExIsResourceAcquiredSharedLite routine.

RxIsFcbAcquiredShared (FCB)

This macro checks if the current thread has access to the regular resource in shared mode. This macro calls the ExIsResourceAcquiredSharedLite routine.

RxIsFcbAcquiredExclusive (FCB)

This macro checks if the current thread has access to the regular resource in exclusive mode. This macro calls the ExIsResourceAcquiredExclusiveLite routine.

RxIsFcbAcquired (FCB)

This macro checks if the current thread has access to the regular resource in either shared or exclusive mode. This macro calls the ExIsResourceAcquiredSharedLite and ExIsResourceAcquiredExclusiveLite routine.