estructura IO_DRIVER_CREATE_CONTEXT (ntddk.h)

La estructura IO_DRIVER_CREATE_CONTEXT se usa para pasar parámetros adicionales a las rutinas IoCreateFileEx y FltCreateFileEx2 . Esta estructura es opcional.

La rutina IoCreateFileEx se usa en los controladores de filtro heredados y la rutina FltCreateFileEx2 la usan los controladores de minifiltro.

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

Miembro de solo lectura inicializado por la rutina IoInitializeDriverCreateContext .

ExtraCreateParameter

Puntero a una estructura ECP_LIST , que contiene una lista de entradas adicionales de parámetro de creación (ECP). Consulte la siguiente sección Comentarios para obtener información importante.

DeviceObjectHint

Si IO_DRIVER_CREATE_CONTEXT se usa para pasar parámetros de creación adicionales a la rutina FltCreateFileEx2 , este miembro debe ser NULL.

Si IO_DRIVER_CREATE_CONTEXT se usa 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 caso de 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.

Comentarios

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

  • Una estructura de ECP_LIST contiene una lista de entradas adicionales de parámetro de creación (ECP). Cada entrada ECP (estructura de contexto ECP) de la lista de ECP (ECP_LIST estructura) funciona como un parámetro create 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 IO_DRIVER_CREATE_CONTEXT con la rutina correcta:

    • En el caso de los controladores de filtro heredados, se debe usar la rutina FsRtlAllocateExtraCreateParameterList para asignar el grupo de memoria para la estructura de ECP_LIST. El sistema operativo no libera automáticamente las estructuras de ECP_LIST. En su lugar, una vez asignada la estructura ECP_LIST, se debe liberar con el uso de la rutina FsRtlFreeExtraCreateParameterList .

    • Para los controladores de minifiltro, se debe usar la rutina FltAllocateExtraCreateParameterList para asignar el grupo de memoria para la estructura de ECP_LIST. El sistema operativo no libera automáticamente las estructuras de ECP_LIST. En su lugar, una vez asignada la estructura ECP_LIST, se debe liberar con el uso de 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 la siguiente sección Consulte también se enumeran muchas de estas rutinas necesarias.

    Tras la devolución de una llamada a IoCreateFileEx o FltCreateFileEx2, la lista ecp no cambia y se puede pasar a llamadas adicionales de IoCreateFileEx o FltCreateFileEx2 para nuevas operaciones de creación.

  • Para crear o abrir un archivo en el contexto de una transacción, establezca el miembro TxnParameters de la estructura IO_DRIVER_CREATE_CONTEXT en el valor devuelto por la rutina IoGetTransactionParameterBlock .

Requisitos

Requisito Valor
Header 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