Freigeben über


Fehler beim Überprüfen von Geräteobjekten

Viele Treiber erstellen mehr als eine Art von Geräteobjekt, indem sie IoCreateDevice aufrufen. Einige Treiber erstellen Steuerungsgeräteobjekte in ihren DriverEntry-Routinen , damit Anwendungen mit dem Treiber kommunizieren können, noch bevor der Treiber eine FDO erstellt. Beispielsweise erstellen Dateisystemtreiber Geräteobjekte, um Dateisystembenachrichtigungen zu verarbeiten, wenn sie sich bei IoRegisterFileSystem als Dateisysteme registrieren.

Ein Treiber sollte für IRP_MJ_CREATE Anforderungen für jedes von er erstellte Geräteobjekt bereit sein. Nach abschluss der Anforderung mit einer erfolgreichen status sollte der Treiber erwarten, dass alle vom Benutzer zugänglichen E/A-Anforderungen für das erstellte Dateiobjekt empfangen werden. Folglich muss jeder Treiber, der mehr als ein Geräteobjekt erstellt, überprüfen, welches Geräteobjekt jede E/A-Anforderung angibt.

Angenommen, ein Treiber erstellt allgemeine Steuerungsgeräteobjekte in DriverEntry und erstellt dann einen weiteren Satz von Geräteobjekten in seiner AddDevice-Routine . Angenommen, die AddDevice-Routine initialisiert die Geräteerweiterung mit Informationen zu Treibern niedrigerer Ebene, aber die Geräteobjekte des Steuerelements enthalten diese Informationen nicht. In diesem Fall müssen alle Dispatchroutinen darauf achten, jedes empfangene Geräteobjekt zu überprüfen. Andernfalls stürzt der Treiber möglicherweise ab, wenn Versucht wird, Geräteerweiterungsinformationen zu verwenden.