Compartir a través de


Función WdfIoQueueCreate (wdfio.h)

[Se aplica a KMDF y UMDF]

El método WdfIoQueueCreate crea y configura una cola de E/S para un dispositivo especificado.

Sintaxis

NTSTATUS WdfIoQueueCreate(
  [in]            WDFDEVICE              Device,
  [in]            PWDF_IO_QUEUE_CONFIG   Config,
  [in, optional]  PWDF_OBJECT_ATTRIBUTES QueueAttributes,
  [out, optional] WDFQUEUE               *Queue
);

Parámetros

[in] Device

Identificador del objeto de dispositivo de marco al que se asociará la cola.

[in] Config

Puntero a una estructura de WDF_IO_QUEUE_CONFIG asignada por el autor de la llamada.

[in, optional] QueueAttributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES asignada por el autor de la llamada que especifica los atributos de objeto para el nuevo objeto. Este parámetro es opcional y se puede WDF_NO_OBJECT_ATTRIBUTES.

[out, optional] Queue

Puntero a una ubicación que recibe un identificador de un objeto de cola de marco.

Valor devuelto

WdfIoQueueCreate devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver uno de los siguientes valores:

Código de retorno Descripción
STATUS_INVALID_PARAMETER
Un parámetro de entrada no es válido.
STATUS_INFO_LENGTH_MISMATCH
El tamaño de la estructura WDF_IO_QUEUE_CONFIG es incorrecto.
STATUS_POWER_STATE_INVALID
El marco está realizando una operación de administración de energía.
STATUS_INSUFFICIENT_RESOURCES
La cantidad de memoria disponible es demasiado baja.
STATUS_WDF_NO_CALLBACK
La estructura WDF_IO_QUEUE_CONFIG no especifica ningún controlador de solicitudes y el método de distribución no se WdfIoQueueDispatchManual.
STATUS_UNSUCCESSFUL
El controlador está intentando crear una cola predeterminada mientras ya existe una cola predeterminada para el dispositivo o se produjo un error interno.
 

Este método también puede devolver otros valores de NTSTATUS.

Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.

Observaciones

Cada llamada a WdfIoQueueCreate crea una cola de E/S para un dispositivo. El controlador puede crear varias colas de E/S para cada dispositivo.

Los parámetros Config y QueueAttributes especifican los atributos de objeto y configuración de la cola.

De forma predeterminada, el objeto de dispositivo de marco que especifica el parámetro Device se convierte en el objeto primario del nuevo objeto de cola de marco. Si el controlador especifica un objeto primario en el miembro parent Object de la estructura WDF_OBJECT_ATTRIBUTES, el objeto primario puede ser un objeto de dispositivo de marco o cualquier objeto cuya cadena de elementos primarios conduce a un objeto de dispositivo de marco. El marco eliminará el objeto queue cuando elimine el objeto primario.

Si el controlador proporciona EvtCleanupCallback o EvtDestroyCallback funciones de devolución de llamada para el objeto de cola del marco, el marco llama a estas funciones de devolución de llamada en IRQL = PASSIVE_LEVEL.

Para obtener más información sobre WdfIoQueueCreate, vea Creación de colas de E/S.

Ejemplos

El ejemplo de código siguiente es la sección de una función de devolución de llamada EvtDriverDeviceAdd que crea la cola de E/S predeterminada de un dispositivo. En el ejemplo se inicializa una estructura de WDF_IO_QUEUE_CONFIG y, a continuación, se llama a WdfIoQueueCreate.

NTSTATUS
MyEvtDriverDeviceAdd(
    IN WDFDRIVER  Driver,
    IN PWDFDEVICE_INIT  DeviceInit
    )
{
    WDF_IO_QUEUE_CONFIG  ioQueueConfig;
    WDFQUEUE  hQueue;
...
    WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(
                                           &ioQueueConfig,
                                           WdfIoQueueDispatchSequential
                                           );

    ioQueueConfig.EvtIoDefault = MyEvtIoDefault;

    status = WdfIoQueueCreate(
                              device,
                              &ioQueueConfig,
                              WDF_NO_OBJECT_ATTRIBUTES,
                              &hQueue
                              );
    if (!NT_SUCCESS (status)) {
        return status;
    }
...
}

Requisitos

Requisito Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.0
versión mínima de UMDF 2.0
encabezado wdfio.h (incluya Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
irQL <= DISPATCH_LEVEL
reglas de cumplimiento de DDI ChangeQueueState(kmdf), DriverCreate(kmdf), DrvAckIoStop(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

WDF_IO_QUEUE_CONFIG

WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE

WDF_OBJECT_ATTRIBUTES

WdfDeviceConfigureRequestDispatching

WdfRequestForwardToIoQueue