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 per l'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 | 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.
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 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, vedere Gestione delle sezioni di memoria.
Nota
Se la chiamata a questa funzione si verifica in modalità utente, è necessario usare il nome "NtCreateSection" anziché "ZwCreateSection".
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.
Fabbisogno
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 |