RxPurgeAllFobxs function (rxprocs.h)
RxPurgeAllFobxs purges all of the FOBX structures associated with a network mini-redirector.
Syntax
void RxPurgeAllFobxs(
PRDBSS_DEVICE_OBJECT RxDeviceObject
);
Parameters
RxDeviceObject
A pointer to the mini-redirector device object for which the purge should be done.
Return value
None
Remarks
At cleanup, there are no more user handles associated with the file object. In such cases, the time window between close and cleanup is dictated by the additional references maintained by memory manager and cache manager. RDBSS uses a scavenger process running on a separate thread to scavenge and purge unneeded FOBX and other structures.
A network mini-redirector might call RxPurgeAllFobxs and RxScavengeAllFobsx in response to a PnP power change event.
The RxPurgeAllFobxs routine acquires the scavenger mutex, traverses the ClosePendingFobxsList member on the scavenger object removing list entries, and then releases the mutex. If the FOBX structure is not NULL, RxPurgeAllFobxs will purge the FOBX structure and try to acquire an exclusive lock on the associated FCB structure. If successful, RxPurgeAllFobxs will then try to dereference the NET_FOBX structure and dereference, finalize, and release the FCB structure.
On checked builds, RxPurgeAllFobxs causes the system to ASSERT for a number of conditions including the following:
- The Flink member of RxScavenger->ClosePendingFobxsList structure on the RxDeviceObject is NULL.
- Fobx->NodeTypeCode is not RDBSS_NTC_FOBX.
- The Flink and Blink members for a list entry are NULL.
Requirements
Requirement | Value |
---|---|
Target Platform | Desktop |
Header | rxprocs.h (include Rxprocs.h) |
IRQL | <= APC_LEVEL |