Condividi tramite


Funzione NtCreateSection (ntifs.h)

La routine NtCreateSection crea un oggetto sezione**.

Sintassi

__kernel_entry NTSYSCALLAPI NTSTATUS NtCreateSection(
  [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, 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. NtCreateSection 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

NtCreateSection restituisce STATUS_SUCCESS in caso di esito positivo o il 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 NtClose 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.

Nota

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
Client minimo supportato Windows 2000.
Piattaforma di destinazione Universale
Intestazione ntifs.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