Funzione NtCreateSectionEx (ntifs.h)
NtCreateSectionEx crea un oggetto sezione ** e apre un handle all'oggetto con l'accesso desiderato specificato. Si tratta di una versione estesa di NtCreateSection che crea un oggetto sezione specificando che si tratta effettivamente di una sezione Address Windowing Extensions (AWE).
Sintassi
__kernel_entry NTSYSCALLAPI NTSTATUS NtCreateSectionEx(
[out] PHANDLE SectionHandle,
[out] ACCESS_MASK DesiredAccess,
[in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PLARGE_INTEGER MaximumSize,
[in] ULONG SectionPageProtection,
[in] ULONG AllocationAttributes,
[in, optional] HANDLE FileHandle,
[in/out] PMEM_EXTENDED_PARAMETER ExtendedParameters,
ULONG ExtendedParameterCount
);
Parametri
[out] SectionHandle
Puntatore a una variabile HANDLE che riceve un handle per l'oggetto sezione.
[out] 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 | Consente di leggere le visualizzazioni della sezione. |
SECTION_MAP_WRITE | Scrivere visualizzazioni della sezione. |
SECTION_QUERY | Eseguire una query sull'oggetto sezione per ottenere 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 ordinario, MaximumSize specifica le dimensioni massime a cui il file può essere esteso o mappato.
[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 di bit di SEC_XXX flag 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.
[in/out] ExtendedParameters
Puntatore a una matrice di strutture MEM_EXTENDED_PARAMETER che contiene i parametri estesi per creare la sezione.
ExtendedParameterCount
Dimensione della matrice a cui ExtendedParameters punta.
Valore restituito
ntCreateSectionEx restituisce STATUS_SUCCESS in caso di esito positivo o il codice di errore NTSTATUS appropriato in caso di errore. I codici di stato di errore 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 pari a 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 oppure se MaximumSize è maggiore del file specificato e la sezione non è scrivibile. |
Osservazioni
Quando l'handle a cui punta 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, deve 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 di oggetti .
Per altre informazioni sulla configurazione di sezioni e viste mappate della memoria, vedere Sezioni e viste.
Nota
Se la chiamata a questa funzione si verifica in modalità utente, è necessario usare il nome "NtCreateSectionEx" anziché "ZwCreateSectionEx".
Per le chiamate da driver in modalità kernel, le NtXxx e ZwXxx versioni 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 Using Nt and Zw Versions of the Native System Services Routines.
ExtendedParameters è un parametro esteso basato su stack se è stato specificato un nodo NUMA preferito.
È possibile specificare una sola istanza di un parametro esteso.
Convertire in un numero di nodo numa basato su 1 previsto a valle di questa API.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10, versione 1803 |
intestazione | ntifs.h |
libreria | NtosKrnl.lib |
dll | NtosKrnl.exe |