Freigeben über


FsRtlCreateSectionForDataScan-Funktion (ntifs.h)

Die FsRtlCreateSectionForDataScan Routine erstellt ein Abschnittsobjekt. Verwenden Sie diese Routine mit äußerster Vorsicht. (Siehe den folgenden Abschnitt "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 für 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

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

[in] FileObject

File-Objekt für eine geöffnete Datei. Das Abschnittsobjekt wird von der angegebenen Datei unterstützt. Dieser Parameter ist erforderlich und kann nicht NULL-werden.

[in] DesiredAccess

Gibt den gewünschten Zugriff für das Abschnittsobjekt als eine oder mehrere der folgenden ACCESS_MASK Flags an.

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

[in, optional] ObjectAttributes

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

[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 null sein.

Flagge Bedeutung
PAGE_READONLY Ermöglicht schreibgeschützten Zugriff auf den zugesicherten Seitenbereich. Ein Versuch, in die zugesicherte Region zu schreiben, führt zu einer Zugriffsverletzung. Wenn das System zwischen schreibgeschütztem Zugriff und Ausführung des Zugriffs unterscheidet, führt ein Versuch, Code in der zugesicherten Region auszuführen, zu einer Zugriffsverletzung.
PAGE_READWRITE Ermöglicht sowohl Lese- als auch Schreibzugriff auf den zugesicherten Seitenbereich.

[in] AllocationAttributes

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

Flagge Bedeutung
SEC_COMMIT Weist 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 vom 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 geeigneten NTSTATUS-Wert zurück, z. B. einen der folgenden:

Rückgabecode Beschreibung
STATUS_END_OF_FILE
Die Größe der durch den FileObject-Parameter angegebenen Datei ist Null. Dies ist ein Fehlercode.
STATUS_FILE_LOCK_CONFLICT
Die durch den FileObject-Parameter angegebene Datei ist gesperrt. Dies ist ein Fehlercode.
STATUS_INSUFFICIENT_RESOURCES
FsRtlCreateSectionForDataScan hat einen Poolzuordnungsfehler festgestellt. Dies ist ein Fehlercode.
STATUS_INVALID_FILE_FOR_SECTION
Die durch den Parameter FileObject 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 erforderlichen Berechtigungen zum Erstellen eines Abschnittsobjekts mit dem im Parameter DesiredAccess angegebenen Zugriff. Dies ist ein Fehlercode.

Bemerkungen

Wichtig Die FsRtlCreateSectionForDataScan Routine sollte nur in Fällen verwendet werden, in denen ein Handle für das im FileObject Parameter angegebene Handle noch nicht erstellt wurde (in der Regel beim Verarbeiten eines Vorgangs nach dem Erstellen). 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.
 
Nachdem das von dieser Routine erstellte Abschnittsobjekt nicht mehr erforderlich ist, schließen Sie unbedingt das Handle des Abschnittsobjekts (SectionHandle), indem Sie die ZwClose-routine aufrufen und das Abschnittsobjekt selbst ableiten (SectionObject) durch Aufrufen der ObDereferenceObject Routine.

Weitere Informationen zum Erstellen zugeordneter Abschnitte und Ansichten des Arbeitsspeichers finden Sie unter Section Objects and Views. Weitere Informationen finden Sie in der Dokumentation zur CreateFileMapping Routine im Microsoft Windows SDK.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Updaterollup für Windows 2000 Service Pack 4 (SP4); Filter-Manager-Rollup für Windows XP Service Pack 2 (SP2).
mindestens unterstützte Server- Microsoft Windows Server 2003 SP1
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= APC_LEVEL

Siehe auch

ACCESS_MASK

CcPurgeCacheSection-

MmFlushImageSection

mmForceSectionClosed

ZwCreateSection