Funzione ZwCreateSection (wdm.h)

La routine ZwCreateSection crea un oggetto sezione.

Sintassi

NTSYSAPI NTSTATUS ZwCreateSection(
  [out]          PHANDLE            SectionHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional] PLARGE_INTEGER     MaximumSize,
  [in]           ULONG              SectionPageProtection,
  [in]           ULONG              AllocationAttributes,
  [in, optional] HANDLE             FileHandle
);

Parametri

[out] SectionHandle

Puntatore a una variabile HANDLE che riceve un handle all'oggetto sezione.

[in] DesiredAccess

Specifica un valore ACCESS_MASK che determina l'accesso richiesto all'oggetto. Oltre ai diritti di accesso definiti per tutti i tipi di oggetti (vedere ACCESS_MASK), il chiamante può specificare uno dei diritti di accesso seguenti, specifici per gli oggetti sezione:

Flag DesiredAccess Consente al chiamante di eseguire questa operazione
SECTION_EXTEND_SIZE Estendere dinamicamente le dimensioni della sezione.
SECTION_MAP_EXECUTE Eseguire visualizzazioni della sezione.
SECTION_MAP_READ Leggere le visualizzazioni della sezione.
SECTION_MAP_WRITE Scrivere visualizzazioni della sezione.
SECTION_QUERY Eseguire una query sull'oggetto sezione per informazioni sulla sezione. I driver devono impostare questo flag.
SECTION_ALL_ACCESS Tutti i flag precedenti combinati con STANDARD_RIGHTS_REQUIRED.

[in, optional] ObjectAttributes

Puntatore a una struttura OBJECT_ATTRIBUTES che specifica il nome dell'oggetto e altri attributi. Usare InitializeObjectAttributes per inizializzare questa struttura. Se il chiamante non è in esecuzione in un contesto di thread di sistema, deve impostare l'attributo OBJ_KERNEL_HANDLE quando chiama InitializeObjectAttributes.

[in, optional] MaximumSize

Specifica le dimensioni massime, in byte, della sezione. ZwCreateSection arrotonda questo valore fino al multiplo più vicino di PAGE_SIZE. Se la sezione è supportata dal file di paging, MaximumSize specifica le dimensioni effettive della sezione. Se la sezione è supportata da un file normale, MaximumSize specifica le dimensioni massime a cui è possibile estendere o eseguire il mapping del file.

[in] SectionPageProtection

Specifica la protezione da inserire in ogni pagina della sezione. Usare uno dei quattro valori seguenti: PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE o PAGE_WRITECOPY. Per una descrizione di questi valori, vedere CreateFileMapping.

[in] AllocationAttributes

Specifica una maschera bit di flag SEC_XXX che determina gli attributi di allocazione della sezione. Per una descrizione di questi flag, vedere CreateFileMapping.

[in, optional] FileHandle

Facoltativamente specifica un handle per un oggetto file aperto. Se il valore di FileHandle è NULL, la sezione è supportata dal file di paging. In caso contrario, la sezione è supportata dal file specificato.

Valore restituito

ZwCreateSection restituisce STATUS_SUCCESS sull'esito positivo o sul codice di errore NTSTATUS appropriato in caso di errore. I codici di stato degli errori possibili includono quanto segue:

Codice restituito Descrizione
STATUS_FILE_LOCK_CONFLICT Il file specificato dal parametro FileHandle è bloccato.
STATUS_INVALID_FILE_FOR_SECTION Il file specificato da FileHandle non supporta le sezioni.
STATUS_INVALID_PAGE_PROTECTION Il valore specificato per il parametro SectionPageProtection non è valido.
STATUS_MAPPED_FILE_SIZE_ZERO Le dimensioni del file specificato da FileHandle sono zero e MaximumSize è zero.
STATUS_SECTION_TOO_BIG Il valore di MaximumSize è troppo grande. Ciò si verifica quando MaximumSize è maggiore del valore massimo definito dal sistema per le sezioni o se MaximumSize è maggiore del file specificato e la sezione non è scrivibile.

Commenti

Una volta che l'handle puntato da SectionHandle non è più in uso, il driver deve chiamare ZwClose per chiuderlo.

Se il chiamante non è in esecuzione in un contesto di thread di sistema, è necessario assicurarsi che gli handle creati siano handle privati. In caso contrario, l'handle può essere accessibile dal processo nel cui contesto è in esecuzione il driver. Per altre informazioni, vedere Handle degli oggetti.

Per altre informazioni sulla configurazione di sezioni e visualizzazioni mappate di memoria, vedere Sezioni e visualizzazioni.

Se la chiamata a questa funzione si verifica in modalità utente, è necessario usare il nome "NtCreateSection" anziché "ZwCreateSection".

Per le chiamate dai driver in modalità kernel, le versioni NtXxx e ZwXxx di una routine di Windows Native System Services possono comportarsi in modo diverso nel modo in cui gestiscono e interpretano i parametri di input. Per altre informazioni sulla relazione tra le versioni NtXxx e ZwXxx di una routine, vedere Uso di nt e zw versioni delle routine di Servizi di sistema nativo.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Vedi anche

ACCESS_MASK

CreateFileMapping

InitializeObjectAttributes

ZwClose

ZwMapViewOfSection

ZwOpenSection

ZwUnmapViewOfSection