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 |