FCB-Ressourcensynchronisierung
Die Synchronisierungsressourcen, die für Mini-Redirectortreiber von Interesse sind, sind in erster Linie dem FCB zugeordnet. Es gibt eine E/A-Ressource für Paging und eine reguläre Ressource. Die E/A-Pagingressource wird intern von RDBSS verwaltet. Die einzige Ressource, auf die Miniumleitungstreiber zugreifen können, ist die reguläre Ressource, auf die mithilfe der folgenden bereitgestellten Routinen zugegriffen werden sollte:
-Routine zurückgegebener Wert | BESCHREIBUNG |
---|---|
Diese Routine ruft die FCB-Ressource im exklusiven Modus ab. Diese Routine wartet, bis die FCB-Ressource frei ist, wenn sie zuvor erworben wurde; Diese Routine gibt erst dann die Kontrolle zurück, wenn die exklusive Ressource abgerufen wurde. Diese Routine ruft die FCB-Ressource ab, auch wenn die RX_CONTEXT Struktur, die diesem FCB zugeordnet ist, abgebrochen wurde. |
|
Diese Routine ruft die FCB-Ressource im freigegebenen Modus ab. Diese Routine wartet darauf, dass die FCB-Ressource kostenlos ist, wenn sie zuvor ausschließlich erworben wurde; Diese Routine gibt erst dann die Kontrolle zurück, wenn die freigegebene Ressource abgerufen wurde. Diese Routine ruft die FCB-Ressource ab, auch wenn die RX_CONTEXT Struktur, die diesem FCB zugeordnet ist, abgebrochen wurde. |
|
RxAcquireSharedFcbResourceInMRxEx | Diese Routine ruft die FCB-Ressource im freigegebenen Modus ab. Diese Routine wartet darauf, dass die FCB-Ressource kostenlos ist, wenn sie zuvor ausschließlich erworben wurde; Diese Routine gibt erst dann die Kontrolle zurück, wenn die freigegebene Ressource abgerufen wurde. Diese Routine ruft die FCB-Ressource ab, auch wenn die RX_CONTEXT Struktur, die diesem FCB zugeordnet ist, abgebrochen wurde. Diese Routine ist nur unter Windows Server 2003 Service Pack 1 (SP1) und höher verfügbar. |
RxReleaseFcbResourceForThreadInMRx | Diese Routine gibt die FCB-Ressource frei, die zuvor mit RxAcquireSharedFcbResourceInMRxEx abgerufen wurde. Diese Routine ist nur unter Windows Server 2003 Service Pack 1 und höher verfügbar. |
Diese Routine gibt die FCB-Ressource frei, die zuvor mit RxAcquireExclusiveFcbResourceInMRx oder RxAcquireSharedFcbResourceInMRx abgerufen wurde. |
Die folgenden Makros werden in der Headerdatei rxprocs.h definiert, um zu bestimmen, ob der aktuelle Thread Zugriff auf die reguläre FCB-Ressource hat.
Makro | Beschreibung |
---|---|
RxFcbAcquiredShared (RXCONTEXT, FCB) |
Dieses Makro überprüft, ob der aktuelle Thread Zugriff auf die reguläre Ressource im freigegebenen Modus hat. Dieses Makro ruft die ExIsResourceAcquiredSharedLite-Routine auf. |
RxIsFcbAcquiredShared (FCB) |
Dieses Makro überprüft, ob der aktuelle Thread Zugriff auf die reguläre Ressource im freigegebenen Modus hat. Dieses Makro ruft die ExIsResourceAcquiredSharedLite-Routine auf. |
RxIsFcbAcquiredExclusive (FCB) |
Dieses Makro überprüft, ob der aktuelle Thread Zugriff auf die reguläre Ressource im exklusiven Modus hat. Dieses Makro ruft die ExIsResourceAcquiredExclusiveLite-Routine auf. |
RxIsFcbAcquired (FCB) |
Mit diesem Makro wird überprüft, ob der aktuelle Thread im freigegebenen oder exklusiven Modus Zugriff auf die reguläre Ressource hat. Dieses Makro ruft die Routinen ExIsResourceAcquiredSharedLite und ExIsResourceAcquiredExclusiveLite auf. |