Freigeben über


Zusätzliche Fehler bei der Behandlung von IRPs

Im Folgenden finden Sie zusätzliche Fehler, die Treiber manchmal bei der Behandlung von IRPs machen.

Verlorene oder doppelt abgeschlossene IRPs

Diese Probleme treten zusammen mit fehlenden Aufrufen von E/A-Managerroutinen wie IoStartNextPacket häufig in Fehlerbehandlungspfaden auf. Schnelle Überprüfungen von Treiberpfaden können solche Probleme finden.

Konvergente öffentliche IOCTL- und private IOCTL-Pfade

In der Regel sollten Treiber separate Ausführungspfade für öffentliche und private IOCTLs (oder FSCTLs) enthalten. Ein Treiber kann nicht ermitteln, ob eine IOCTL- oder FSCTL-Anforderung aus dem Kernelmodus oder Benutzermodus stammt, indem er sich den Steuercode ansieht. Folglich kann die Behandlung von öffentlichem und privatem Code im gleichen Ausführungspfad (oder eine minimale Überprüfung und anschließendes Aufrufen der gleichen Routinen) einen Treiber für Sicherheitsverletzungen öffnen. Wenn eine private IOCTL oder FSCTL privilegiert ist, können nicht privilegierte Benutzer, die die Kontrollcodes kennen, möglicherweise Darauf zugreifen. Wenn Ihr Treiber daher private IOCTL- oder FSCTL-Anforderungen unterstützt, stellen Sie sicher, dass er solche Anforderungen getrennt von öffentlichen IOCTLs oder FSCTLs verarbeitet, die er ebenfalls unterstützen muss.