estructura IO_DRIVER_CREATE_CONTEXT (ntddk.h)
La estructura IO_DRIVER_CREATE_CONTEXT se usa para pasar parámetros adicionales a las rutinas de IoCreateFileEx y FltCreateFileEx2. Esta estructura es opcional.
La rutina
Sintaxis
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;
Miembros
Size
Un miembro de solo lectura inicializado por la rutina IoInitializeDriverCreateContext.
ExtraCreateParameter
Puntero a una estructura de ECP_LIST, que contiene una lista de entradas adicionales del parámetro create (ECP). Consulte la siguiente sección comentarios para obtener información importante.
DeviceObjectHint
Si se usa IO_DRIVER_CREATE_CONTEXT para pasar parámetros de creación adicionales a la rutina de fltCreateFileEx2
Si se usa IO_DRIVER_CREATE_CONTEXT para pasar parámetros de creación adicionales a la rutina IoCreateFileEx, este miembro es un puntero al objeto de dispositivo al que se enviará la solicitud de creación. El objeto de dispositivo debe ser un objeto de dispositivo de sistema de archivos o filtro heredado en la pila de controladores del sistema de archivos para el volumen en el que reside el archivo o directorio. En el IoCreateFileEx, este parámetro es opcional y puede ser NULL. Si este parámetro es NULL, la solicitud se enviará al objeto de dispositivo en la parte superior de la pila del controlador.
TxnParameters
Puntero a una transacción que desea asociar a la operación de creación. La operación de creación formará parte de la transacción si el valor de este miembro es un puntero válido a la transacción. Si el valor de este miembro es NULL, la operación de creación no formará parte de una transacción.
SiloContext
Contenedor en el que reside el archivo. Este miembro se introdujo en Windows 10, versión 1607.
Observaciones
La estructura IO_DRIVER_CREATE_CONTEXT se puede asignar desde un grupo paginado o no paginado. La rutina IoInitializeDriverCreateContext debe inicializar la estructura IO_DRIVER_CREATE_CONTEXT antes de poder usar la estructura.
Los miembros de la estructura IO_DRIVER_CREATE_CONTEXT (excepto el miembro tamaño de
Una estructura de ECP_LIST contiene una lista de entradas adicionales del parámetro create (ECP). Cada entrada ECP (estructura de contexto ECP) de la lista de ECP (ECP_LIST estructura) funciona como un parámetro de creación adicional para ioCreateFileEx y FltCreateFileEx2.
Para especificar un ECP como parte de una operación de creación, inicialice el miembro ExtraCreateParameter de la estructura de IO_DRIVER_CREATE_CONTEXT con la rutina correcta:
Para los controladores de filtro heredados, se debe usar la rutina FsRtlAllocateExtraCreateParameterList para asignar un grupo de memoria para la estructura de ECP_LIST. El sistema operativo no libera automáticamente estructuras de ECP_LIST. En su lugar, una vez asignada la estructura ECP_LIST, debe liberarse con la rutina de FsRtlFreeExtraCreateParameterList.
Para los controladores de minifiltro, la rutina FltAllocateExtraCreateParameterList debe usarse para asignar un grupo de memoria para la estructura de ECP_LIST. El sistema operativo no libera automáticamente estructuras de ECP_LIST. En su lugar, una vez asignada la estructura ECP_LIST, debe liberarse con la rutina FltFreeExtraCreateParameterList.
Si se usan ECP, se deben crear, manipular y liberar mediante las rutinas adecuadas. Por ejemplo, los controladores de minifiltro usan la rutina FltInsertExtraCreateParameter para insertar una entrada ECP en una lista de ECP. En el siguiente consulte también sección se enumeran muchas de estas rutinas necesarias.
Tras volver de una llamada a ioCreateFileEx o FltCreateFileEx2, la lista ECP no cambia y se puede pasar a ioCreateFileEx o fltCreateFileEx2 llamadas para nuevas operaciones de creación.
Para crear o abrir un archivo en el contexto de una transacción, establezca el
TxnParameters miembro de la estructura de IO_DRIVER_CREATE_CONTEXT en el valor devuelto por la rutinaIoGetTransactionParameterBlock.
Requisitos
Requisito | Valor |
---|---|
encabezado de |
ntddk.h (incluya Ntddk.h, Ntifs.h, Fltkernel.h) |
Consulte también
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList
FltFreeExtraCreateParameterList
FsRtlAllocateExtraCreateParameterList
FsRtlFreeExtraCreateParameterList
IoCreateFileSpecifyDeviceObjectHint