Função FsRtlCreateSectionForDataScan (ntifs.h)
A rotina FsRtlCreateSectionForDataScan cria um objeto de seção. Use essa rotina com extrema cautela. (Consulte a seção Comentários a seguir.)
Sintaxe
NTSTATUS FsRtlCreateSectionForDataScan(
[out] PHANDLE SectionHandle,
[out] PVOID *SectionObject,
[out, optional] PLARGE_INTEGER SectionFileSize,
[in] PFILE_OBJECT FileObject,
[in] ACCESS_MASK DesiredAccess,
[in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PLARGE_INTEGER MaximumSize,
[in] ULONG SectionPageProtection,
[in] ULONG AllocationAttributes,
[in] ULONG Flags
);
Parâmetros
[out] SectionHandle
Ponteiro para uma variável alocada pelo chamador que recebe um identificador opaco para o objeto de seção.
[out] SectionObject
Ponteiro para uma variável alocada pelo chamador que recebe um ponteiro opaco para o objeto de seção.
[out, optional] SectionFileSize
Ponteiro para uma variável alocada pelo chamador que recebe o tamanho, em bytes, do arquivo no momento em que o objeto de seção foi criado. Esse parâmetro é opcional e pode ser NULL.
[in] FileObject
Objeto file para um arquivo aberto. O objeto de seção será apoiado pelo arquivo especificado. Esse parâmetro é necessário e não pode ser NULL.
[in] DesiredAccess
Especifica o acesso desejado para o objeto de seção como um ou mais dos sinalizadores de ACCESS_MASK a seguir.
Sinalizador DesiredAccess | Permite que o chamador |
---|---|
SECTION_MAP_READ | Ler exibições da seção. |
SECTION_MAP_WRITE | Gravar exibições da seção. |
SECTION_QUERY | Consulte o objeto de seção para obter informações sobre a seção. Os drivers devem definir esse sinalizador. |
SECTION_ALL_ACCESS | Todas as ações definidas pelos sinalizadores anteriores, bem como as definidas por STANDARD_RIGHTS_REQUIRED. (Para obter mais informações sobre STANDARD_RIGHTS_REQUIRED, consulte ACCESS_MASK.) |
[in, optional] ObjectAttributes
Ponteiro para uma estrutura OBJECT_ATTRIBUTES que especifica o nome do objeto e outros atributos. Use a macro InitializeObjectAttributes para inicializar essa estrutura. Como FsRtlCreateSectionForDataScan insere esse objeto na tabela de identificador de processo, o chamador deve especificar o atributo OBJ_KERNEL_HANDLE ao chamar InitializeObjectAttributes.
[in, optional] MaximumSize
Esse parâmetro é reservado para uso futuro.
[in] SectionPageProtection
Especifica a proteção a ser colocada em cada página na seção. Especifique um dos valores a seguir. Esse parâmetro é necessário e não pode ser zero.
Sinalizador | Significado |
---|---|
PAGE_READONLY | Habilita o acesso somente leitura à região confirmada das páginas. Uma tentativa de gravar na região confirmada resulta em uma violação de acesso. Se o sistema diferenciar o acesso somente leitura e executar o acesso, uma tentativa de executar código na região confirmada resultará em uma violação de acesso. |
PAGE_READWRITE | Habilita o acesso de leitura e gravação à região confirmada das páginas. |
[in] AllocationAttributes
Bitmasks dos sinalizadores SEC_XXX determinam os atributos de alocação da seção. Especifique um ou mais dos valores a seguir. Esse parâmetro é necessário e não pode ser zero.
Sinalizador | Significado |
---|---|
SEC_COMMIT | Aloca armazenamento físico na memória ou no arquivo de paginação no disco para todas as páginas de uma seção. Essa é a configuração padrão. Observe que esse sinalizador é necessário e não pode ser omitido. |
SEC_FILE | O arquivo especificado pelo parâmetro FileObject é um arquivo mapeado. |
[in] Flags
Esse parâmetro é reservado para uso futuro.
Retornar valor
FsRtlCreateSectionForDataScan retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um dos seguintes:
Código de retorno | Descrição |
---|---|
|
O tamanho do arquivo especificado pelo parâmetro FileObject é zero. Este é um código de erro. |
|
O arquivo especificado pelo parâmetro FileObject está bloqueado. Este é um código de erro. |
|
FsRtlCreateSectionForDataScan encontrou uma falha de alocação de pool. Este é um código de erro. |
|
O arquivo especificado pelo parâmetro FileObject não dá suporte a seções. Este é um código de erro. |
|
O valor especificado para o parâmetro SectionPageProtection é inválido. Este é um código de erro. |
|
O chamador especificou um valor inválido para o parâmetro AllocationAttributes. Este é um código de erro. |
|
O chamador não tinha o privilégio necessário para criar um objeto de seção com o acesso especificado no parâmetro DesiredAccess. Este é um código de erro. |
Comentários
Para obter mais informações sobre como criar seções mapeadas e exibições de memória, consulte Objetos de seção e exibições. Consulte também a documentação da rotina CreateFileMapping no SDK do Microsoft Windows.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Pacote cumulativo de atualizações para Windows 2000 Service Pack 4 (SP4); Rollup do Gerenciador de Filtros para Windows XP Service Pack 2 (SP2). |
Servidor mínimo com suporte | Microsoft Windows Server 2003 SP1 |
Plataforma de Destino | Universal |
Cabeçalho | ntifs.h (inclua Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |