FsRtlCreateSectionForDataScan-Funktion (ntifs.h)

Die FsRtlCreateSectionForDataScan-Routine erstellt ein Abschnittsobjekt. Verwenden Sie diese Routine mit äußerster Vorsicht. (Weitere Informationen finden Sie im folgenden Abschnitt mit den Anmerkungen .)

Syntax

NTSTATUS FsRtlCreateSectionForDataScan(
  [out]           PHANDLE            SectionHandle,
  [out]           PVOID              *SectionObject,
  [out, optional] PLARGE_INTEGER     SectionFileSize,
  [in]            PFILE_OBJECT       FileObject,
  [in]            ACCESS_MASK        DesiredAccess,
  [in, optional]  POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional]  PLARGE_INTEGER     MaximumSize,
  [in]            ULONG              SectionPageProtection,
  [in]            ULONG              AllocationAttributes,
  [in]            ULONG              Flags
);

Parameter

[out] SectionHandle

Zeiger auf eine vom Aufrufer zugewiesene Variable, die ein undurchsichtiges Handle auf das Abschnittsobjekt empfängt.

[out] SectionObject

Zeiger auf eine vom Aufrufer zugewiesene Variable, die einen undurchsichtigen Zeiger auf das Abschnittsobjekt empfängt.

[out, optional] SectionFileSize

Zeiger auf eine vom Aufrufer zugewiesene Variable, die die Größe der Datei in Bytes zum Zeitpunkt der Erstellung des Abschnittsobjekts empfängt. Dieser Parameter ist optional und kann NULL sein.

[in] FileObject

Dateiobjekt für eine geöffnete Datei. Das Abschnittsobjekt wird von der angegebenen Datei unterstützt. Dieser Parameter ist erforderlich und darf nicht NULL sein.

[in] DesiredAccess

Gibt den gewünschten Zugriff für das Abschnittsobjekt als mindestens eines der folgenden ACCESS_MASK-Flags an.

DesiredAccess-Flag Ermöglicht dem Anrufer,
SECTION_MAP_READ Leseansichten des Abschnitts.
SECTION_MAP_WRITE Schreiben Sie Ansichten des Abschnitts.
SECTION_QUERY Fragen Sie das Abschnittsobjekt nach Informationen zum Abschnitt ab. Treiber sollten dieses Flag festlegen.
SECTION_ALL_ACCESS Alle Aktionen, die durch die vorherigen Flags definiert wurden, sowie die aktionen, die durch STANDARD_RIGHTS_REQUIRED definiert wurden. (Weitere Informationen zu STANDARD_RIGHTS_REQUIRED finden Sie unter ACCESS_MASK.)

[in, optional] ObjectAttributes

Zeiger auf eine OBJECT_ATTRIBUTES-Struktur , die den Objektnamen und andere Attribute angibt. Verwenden Sie das Makro InitializeObjectAttributes , um diese Struktur zu initialisieren. Da FsRtlCreateSectionForDataScan dieses Objekt in die Prozesshandle-Tabelle einfügt, muss der Aufrufer beim Aufrufen von InitializeObjectAttributes das attribut OBJ_KERNEL_HANDLE angeben.

[in, optional] MaximumSize

Dieser Parameter ist für die zukünftige Verwendung reserviert.

[in] SectionPageProtection

Gibt den Schutz an, der auf jeder Seite im Abschnitt platziert werden soll. Geben Sie einen der folgenden Werte an. Dieser Parameter ist erforderlich und darf nicht 0 sein.

Flag Bedeutung
PAGE_READONLY Ermöglicht schreibgeschützten Zugriff auf den zugesicherten Seitenbereich. Ein Versuch, in die region zu schreiben, führt zu einer Zugriffsverletzung. Wenn das System zwischen schreibgeschütztem Zugriff und Ausführungszugriff unterscheidet, führt ein Versuch, Code in der committeten Region auszuführen, zu einer Zugriffsverletzung.
PAGE_READWRITE Ermöglicht Lese- und Schreibzugriff auf den zugesicherten Seitenbereich.

[in] AllocationAttributes

Bitmasken der SEC_XXX-Flags bestimmen die Zuordnungsattribute des Abschnitts. Geben Sie mindestens einen der folgenden Werte an. Dieser Parameter ist erforderlich und darf nicht 0 sein.

Flag Bedeutung
SEC_COMMIT Ordnet physischen Speicher im Arbeitsspeicher oder in der Auslagerungsdatei auf dem Datenträger für alle Seiten eines Abschnitts zu. Dies ist die Standardeinstellung. Beachten Sie, dass dieses Flag erforderlich ist und nicht weggelassen werden kann.
SEC_FILE Die durch den FileObject-Parameter angegebene Datei ist eine zugeordnete Datei.

[in] Flags

Dieser Parameter ist für die zukünftige Verwendung reserviert.

Rückgabewert

FsRtlCreateSectionForDataScan gibt STATUS_SUCCESS oder einen entsprechenden NTSTATUS-Wert zurück, z. B. einen der folgenden:

Rückgabecode Beschreibung
STATUS_END_OF_FILE
Die Größe der Datei, die durch den FileObject-Parameter angegeben wird, ist 0. Dies ist ein Fehlercode.
STATUS_FILE_LOCK_CONFLICT
Die durch den FileObject-Parameter angegebene Datei ist gesperrt. Dies ist ein Fehlercode.
STATUS_INSUFFICIENT_RESOURCES
Bei FsRtlCreateSectionForDataScan ist ein Poolzuordnungsfehler aufgetreten. Dies ist ein Fehlercode.
STATUS_INVALID_FILE_FOR_SECTION
Die vom FileObject-Parameter angegebene Datei unterstützt keine Abschnitte. Dies ist ein Fehlercode.
STATUS_INVALID_PARAMETER_8
Der für den SectionPageProtection-Parameter angegebene Wert ist ungültig. Dies ist ein Fehlercode.
STATUS_INVALID_PARAMETER_9
Der Aufrufer hat einen ungültigen Wert für den AllocationAttributes-Parameter angegeben. Dies ist ein Fehlercode.
STATUS_PRIVILEGE_NOT_HELD

Der Aufrufer verfügte nicht über die erforderliche Berechtigung zum Erstellen eines Abschnittsobjekts mit dem im DesiredAccess-Parameter angegebenen Zugriff. Dies ist ein Fehlercode.

Hinweise

Wichtig Die FsRtlCreateSectionForDataScan-Routine sollte nur in Fällen verwendet werden, in denen ein Handle für das im FileObject-Parameter angegebene Dateiobjekt noch nicht erstellt wurde (in der Regel während der Verarbeitung eines Vorgangs nach der Erstellung). Wenn der Treiber über ein Handle für das Dateiobjekt verfügt oder ein Handle für das Dateiobjekt abrufen kann, sollte der Treiber stattdessen die ZwCreateSection-Routine verwenden.
 
Sobald das von dieser Routine erstellte Abschnittsobjekt nicht mehr erforderlich ist, schließen Sie das Handle des Abschnittsobjekts (SectionHandle), indem Sie die ZwClose-Routine aufrufen und das Abschnittsobjekt selbst (SectionObject) durch Aufrufen der ObDereferenceObject-Routine dereferenceObject deleiten.

Weitere Informationen zum Erstellen zugeordneter Abschnitte und Ansichten des Arbeitsspeichers finden Sie unter Abschnittsobjekte und Ansichten. Lesen Sie auch die Dokumentation zur CreateFileMapping-Routine im Microsoft Windows SDK.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Updaterollup für Windows 2000 Service Pack 4 (SP4); Filter-Managerrollup für Windows XP Service Pack 2 (SP2).
Unterstützte Mindestversion (Server) Microsoft Windows Server 2003 SP1
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Weitere Informationen

ACCESS_MASK

CcPurgeCacheSection

MmFlushImageSection

MmForceSectionClosed

ZwCreateSection