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