Compartir a través de


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 IoCreateFileEx se usa mediante controladores de filtro heredados y los controladores de minifiltro usan la rutina FltCreateFileEx2.

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 , este miembro debe ser NULL.

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 ) funcionan como parámetros adicionales para las rutinas de IoCreateFileEx y FltCreateFileEx2. En relación con el IoCreateFileEx y FltCreateFileEx2 interfaz de la rutina, puede resultar útil la siguiente información:

  • 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 rutina IoGetTransactionParameterBlock.

Requisitos

Requisito Valor
encabezado de ntddk.h (incluya Ntddk.h, Ntifs.h, Fltkernel.h)

Consulte también

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

fltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

fltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

fltSetEcpListIntoCallbackData

FsRtlAllocateExtraCreateParameterList

FsRtlFreeExtraCreateParameterList

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetTransactionParameterBlock

ioInitializeDriverCreateContext