Delen via


Het kernelnetwerkstuurprogramma Mini-Redirector

Een mini-redirector stuurprogramma van het kernelnetwerk implementeert een aantal callbackroutines die worden gebruikt door het Omgeleid Station Buffersubsysteem (RDBSS) om te communiceren met het stuurprogramma. In de rest van dit document wordt een mini-omleidingsstuurprogramma voor het kernelnetwerk aangeduid als een mini-omleidingsstuurprogramma voor het netwerk.

Wanneer een mini-omleidingsstuurprogramma voor het eerst wordt gestart (in de DriverEntry routine), roept het stuurprogramma de RDBSS-RxRegisterMinirdr- routine aan om het stuurprogramma voor de mini-omleidingsnetwerk te registreren bij RDBSS. Het mini-omleidingsstuurprogramma van het netwerk geeft een MINIRDR_DISPATCH structuur door, inclusief configuratiegegevens, samen met aanwijzers naar de routines die het mini-omleidingsstuurprogramma van het netwerk implementeert (een verzendtabel).

Een mini-omleidingsapparaat voor netwerken kan ervoor kiezen om slechts enkele van deze routines te implementeren. Elke routine die niet wordt geïmplementeerd door de mini-omleidingsfunctie van het netwerk, moet worden ingesteld op een NULL- aanwijzer in de MINIRDR_DISPATCH structuur die wordt doorgegeven aan RxRegisterMinirdr-. RDBSS roept alleen routines aan die zijn geïmplementeerd door de mini-redirector van het netwerk.

Een speciale categorie routines die zijn geïmplementeerd door een mini-redirector van het netwerk zijn de lage I/O-bewerkingen die de traditionele I/O-aanroepen voor lezen, schrijven en andere bestandsbewerkingen vertegenwoordigen. Alle lage I/O-routines kunnen asynchroon worden aangeroepen door RDBSS. Een kernelstuurprogramma voor een netwerk mini-redirector moet ervoor zorgen dat alle lage I/O-routines die worden geïmplementeerd, veilig asynchroon kunnen worden aangeroepen. De lage I/O-routines worden doorgegeven als een matrix van routineaanwijzers als onderdeel van de MINIRDR_DISPATCH structuur van de DriverEntry routine. De waarde van het matrixelement is de minimale I/O-bewerking die moet worden uitgevoerd. Alle lage I/O-routines verwachten een aanwijzer naar een RX_CONTEXT structuur die als parameter moet worden doorgegeven. De RX_CONTEXT gegevensstructuur heeft een LowIoContext.Operation lid dat ook de lage I/O-bewerking aangeeft die moet worden uitgevoerd. Het is mogelijk dat verschillende van de lage I/O-routines verwijzen naar dezelfde routine in een mini-omleidingsstuurprogramma van het netwerk, omdat dit LowIoContext.Operation lid kan worden gebruikt om de aangevraagde lage I/O-bewerking op te geven. Alle lage I/O-aanroepen met betrekking tot bestandsvergrendelingen kunnen bijvoorbeeld dezelfde lage I/O-routine aanroepen in de mini-omleidingsfunctie van het netwerk en deze routine kan de LowIoContext.Operation lid gebruiken om de aangevraagde vergrendelings- of ontgrendelingsbewerking op te geven.

RDBSS gaat ook uit van asynchrone bewerking voor enkele andere routines die zijn geïmplementeerd door een mini-redirector van het netwerk. Deze routines worden gebruikt voor het tot stand brengen van een verbinding met een externe resource. Aangezien verbindingsbewerkingen veel tijd in beslag kunnen nemen, gaat RDBSS ervan uit dat deze routines worden geïmplementeerd als asynchrone bewerkingen.

RDBSS gaat ervan uit dat alle routines die zijn geïmplementeerd door een andere netwerk-mini-omleidingsroutine dan de lage I/O en verbindingsgerelateerde routines zijn gebaseerd op synchrone aanroepen. Dit is echter onderhevig aan wijzigingen in toekomstige versies van het Windows-besturingssysteem.

Alle routines die door een mini-omleidingsfunctie voor het netwerk zijn geïmplementeerd, retourneren een NTSTATUS-waarde bij voltooiing. De meeste routines retourneren STATUS_SUCCESS bij succes of een geschikte NTSTATUS-waarde. Naast het retourneren van waarden die specifiek zijn voor een bepaalde routine, zijn er twee algemene foutencategorieën die kunnen worden geretourneerd voor de meeste routines:

  • Netwerkfouten

  • Authenticatiefouten

Mogelijke netwerkfouten zijn onder andere:

STATUS_IO_TIMEOUT
Er is een time-out opgetreden bij de I/O-aanvraag naar de externe server.

STATUS_BAD_NETWORK_PATH
De I/O-aanvraag was gericht op een netwerkpad dat niet bestaat. Deze fout kan optreden als de naam van een map is gewijzigd of verwijderd.

STATUS_NETWERK_ONBEREIKBAAR
Het netwerk is niet bereikbaar vanaf de client.

STATUS_REMOTE_NOT_LISTENING
De externe server luistert niet naar verbindingen.

STATUS_GEBRUIKER_SESSIE_VERWIJDERD
De gebruikerssessie op de server is verwijderd. Er is mogelijk een time-out opgetreden voor de sessie, de server is mogelijk opnieuw opgestart, waardoor alle bestaande gebruikerssessies worden verwijderd of dat een beheerder op de server de gebruikerssessie heeft gedwongen te verwijderen.

STATUS_VERBINDING_VERBROKEN
De verbinding met de externe server is verbroken.

STATUS_NETWERKNAAM_VERWIJDERD
De I/O-aanvraag is voor een netwerknaam die is verwijderd.

Mogelijke verificatiefouten zijn onder andere:

STATUS_LOGON_FAILURE
De aanmeldingsaanvraag voor de externe server is mislukt.

STATUS_NETWORK_CREDENTIAL_CONFLICT
Er is een conflict opgetreden met de netwerkgegevens die verstrekt zijn.

STATUS_DEGRADATIE_GEDTECTEERD
Een wijziging van het netwerkprotocol dat door de client wordt gebruikt om met de server te communiceren, is gedetecteerd door de server en de wijziging was in een oudere versie van het protocol.

STATUS_LOGIN_WKSTA_RESTRICTION
Er is een beperking voor werkstationaanmelding bij de server.

In de volgende secties worden de routines besproken die kunnen worden geïmplementeerd door een mini-omleidingsfunctie voor netwerken:

Routines geïmplementeerd door de Mini-Redirector van kernelnetwerk

Routines die niet worden gebruikt door RDBSS

De routines die door een mini-omleidingsfunctie van een netwerk zijn geïmplementeerd, kunnen worden ingedeeld in de volgende categorieën op basis van hun functie:

verbindings- en naamomzettings-

stuurprogramma starten, stoppen en apparaatbeheer

bestandssysteemobject maken en verwijderen

I/O-routines voor bestandssysteemobjecten

Bestandssysteemobjectquery en routines instellen

Diverse Netwerk Mini-Redirector Routines