Öffnen eines Handle für eine Datei
Führen Sie die folgenden Schritte aus, um ein Handle für eine Datei zu öffnen:
Erstellen Sie eine OBJECT_ATTRIBUTES-Struktur , und rufen Sie das Makro InitializeObjectAttributes auf, um die Struktur zu initialisieren. Sie geben den Objektnamen der Datei als ObjectName-Parameter für InitializeObjectAttributes an.
Öffnen Sie ein Handle für die Datei, indem Sie die OBJECT_ATTRIBUTES-Struktur an IoCreateFile, ZwCreateFile oder ZwOpenFile übergeben.
Wenn die Datei nicht vorhanden ist, erstellen IoCreateFile und ZwCreateFile sie, während ZwOpenFile STATUS_OBJECT_NAME_NOT_FOUND zurückgibt.
Beachten Sie, dass Treiber fast immer ZwCreateFile oder ZwOpenFile anstelle von IoCreateFile verwenden.
Wenn Sie IoCreateFile, ZwCreateFile oder ZwOpenFile aufrufen, erstellt die Windows-Führungskraft ein neues Dateiobjekt, um die Datei darzustellen, und stellt ein geöffnetes Handle für das Objekt bereit. Dieses Dateiobjekt bleibt so lange erhalten, bis Sie alle geöffneten Handles schließen.
Unabhängig davon, welche Routine Sie aufrufen, müssen Sie die erforderlichen Zugriffsrechte als DesiredAccess-Parameter übergeben. Diese Rechte müssen alle Vorgänge abdecken, die Ihr Treiber ausführt. In der folgenden Tabelle sind diese Vorgänge und das entsprechende Zugriffsrecht für die Anforderung aufgeführt.
Vorgang | Erforderliches Zugriffsrecht |
---|---|
Aus der Datei lesen. |
FILE_READ_DATA oder GENERIC_READ |
Schreiben Sie in die Datei. |
FILE_WRITE_DATA oder GENERIC_WRITE |
Schreiben Sie nur an das Ende der Datei. |
FILE_APPEND_DATA |
Lesen Sie die Metadaten der Datei, z. B. die Erstellungszeit der Datei. |
FILE_READ_ATTRIBUTES oder GENERIC_READ |
Schreiben Sie die Metadaten der Datei, z. B. die Erstellungszeit der Datei. |
FILE_WRITE_ATTRIBUTES oder GENERIC_WRITE |
Weitere Informationen zu den für DesiredAccess verfügbaren Werten finden Sie unter ZwCreateFile.