IO_DRIVER_CREATE_CONTEXT estrutura (ntddk.h)
A estrutura IO_DRIVER_CREATE_CONTEXT é usada para passar parâmetros adicionais para
A rotina de IoCreateFileEx
Sintaxe
typedef struct _IO_DRIVER_CREATE_CONTEXT {
CSHORT Size;
struct _ECP_LIST *ExtraCreateParameter;
PVOID DeviceObjectHint;
PTXN_PARAMETER_BLOCK TxnParameters;
PESILO SiloContext;
} IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT;
Membros
Size
Um membro somente leitura inicializado pelo rotina de IoInitializeDriverCreateContext.
ExtraCreateParameter
Um ponteiro para uma estrutura de ECP_LIST, que contém uma lista de entradas de parâmetro de criação extra (ECP). Consulte a seção comentários
DeviceObjectHint
Se IO_DRIVER_CREATE_CONTEXT estiver sendo usado para passar parâmetros de criação adicionais para a rotina de
Se IO_DRIVER_CREATE_CONTEXT estiver sendo usado para passar parâmetros de criação adicionais para a rotina de IoCreateFileEx
TxnParameters
Um ponteiro para uma transação que você deseja associar à operação de criação. A operação de criação fará parte da transação se o valor desse membro for um ponteiro válido para a transação. Se o valor desse membro for NULL, a operação de criação não fará parte de uma transação.
SiloContext
O contêiner no qual o arquivo reside. Este membro foi introduzido no Windows 10, versão 1607.
Observações
A estrutura de IO_DRIVER_CREATE_CONTEXT pode ser alocada do pool de páginas ou nãopagados. A rotina de IoInitializeDriverCreateContext
Os membros da estrutura de IO_DRIVER_CREATE_CONTEXT (excluindo a função
Uma estrutura ECP_LIST contém uma lista de entradas de parâmetro de criação extra (ECP). Cada entrada ECP (estrutura de contexto ECP) na lista ECP (estrutura ECP_LIST) funciona como um parâmetro de criação adicional para IoCreateFileEx e FltCreateFileEx2.
Para especificar um ECP como parte de uma operação de criação, inicialize o membro
ExtraCreateParameter da estrutura IO_DRIVER_CREATE_CONTEXT com a rotina correta: Para drivers de filtro herdados, a rotina
FsRtlAllocateExtraCreateParameterList deve ser usada para alocar o pool de memória para a estrutura de ECP_LIST. O sistema operacional não libera automaticamente estruturas de ECP_LIST. Em vez disso, depois que a estrutura de ECP_LIST for alocada, ela deverá eventualmente ser liberada usando a rotina de FsRtlFreeExtraCreateParameterList. Para drivers de minifiltro, a rotina FltAllocateExtraCreateParameterList
deve ser usada para alocar o pool de memória para a estrutura ECP_LIST. O sistema operacional não libera automaticamente estruturas de ECP_LIST. Em vez disso, depois que a estrutura de ECP_LIST for alocada, ela deverá eventualmente ser liberada usando a rotina FltFreeExtraCreateParameterList.
Se os ECPs forem usados, eles deverão ser criados, manipulados e liberados usando as rotinas apropriadas. Por exemplo, os drivers de minifiltro usam a rotina
FltInsertExtraCreateParameter para inserir uma entrada ECP em uma lista ECP. A seção Ver Também lista muitas dessas rotinas necessárias. Após retornar de uma chamada para IoCreateFileEx ou FltCreateFileEx2, a lista ECP não será alterada e poderá ser passada para IoCreateFileEx adicionais ou chamadas FltCreateFileEx2 para novas operações de criação.
Para criar ou abrir um arquivo no contexto de uma transação, defina o
TxnParameters membro da estrutura IO_DRIVER_CREATE_CONTEXT para o valor retornado pela rotina deIoGetTransactionParameterBlock.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | ntddk.h (incluem Ntddk.h, Ntifs.h, Fltkernel.h) |
Consulte também
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList
FltFreeExtraCreateParameterList
FsRtlAllocateExtraCreateParameterList
FsRtlFreeExtraCreateParameterList
IoCreateFileSpecifyDeviceObjectHint