Compartir a través de


Método IWDFIoTargetStateManagement::Stop (wudfddi.h)

[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción con UMDF.

El método Stop detiene el envío de solicitudes en cola a un destino de E/S local.

Sintaxis

HRESULT Stop(
  [in] WDF_IO_TARGET_SENT_IO_ACTION Action
);

Parámetros

[in] Action

Valor WDF_IO_TARGET_SENT_IO_ACTION tipado que identifica cómo controlar la E/S enviada cuando se detiene el objeto de destino de E/S.

Valor devuelto

Detener siempre devuelve S_OK.

Comentarios

Si el controlador puede detectar errores de dispositivo recuperables, es posible que quiera que el controlador llame a Stop para detener temporalmente el envío de solicitudes al destino de E/S local y, después, llame a IWDFIoTargetStateManagement::Start para reanudar el envío de solicitudes.

Además, si un controlador llama a IWDFUsbTargetPipe2::ConfigureContinuousReader para configurar un lector continuo para una canalización USB, la función de devolución de llamada IPnpCallback::OnD0Exit del controlador debe llamar a Stop para detener el lector.

Si un controlador ha llamado a Stop, todavía puede enviar una solicitud al destino estableciendo la marca WDF_REQUEST_OPTION_IGNORE_TARGET_STATE cuando llama a IWDFIoRequest::Send. Si un controlador establece esta marca, el controlador puede enviar una solicitud, como una solicitud para restablecer una canalización USB (consulte IWDFUsbTargetPipe::Reset), a un dispositivo después de llamar al controlador Stop.

El controlador debe llamar a IWDFIoTargetStateManagement::Start y Detener de forma sincrónica. Después de que el controlador llame a una de estas funciones, no debe llamar a ninguna de las dos funciones antes de que se devuelva la primera llamada.

El controlador puede llamar a Stop varias veces sin llamar a IWDFIoTargetStateManagement::Start. Por ejemplo, el controlador podría hacer lo siguiente:

  1. Llame a Stop y especifique un valor action de WdfIoTargetLeaveSentIoPending.
  2. Determine si el destino debe reanudar el procesamiento de solicitudes de E/S.
  3. Si el destino debe reanudarse, llame a IWDFIoTargetStateManagement::Start. De lo contrario, llame a Stop de nuevo con un valor Action de WdfIoTargetCancelSentIo.
Para obtener más información sobre Stop, vea Controlar el estado de un destino de E/S general.

Para obtener más información sobre los destinos de E/S, consulte Uso de destinos de E/S.

Ejemplos

En el ejemplo de código siguiente se muestra cómo una función de devolución de llamada IPnpCallback::OnD0Exit puede llamar a Stop, si el controlador usa un lector continuo para una canalización USB. (Para ver cómo obtener la interfaz IWDFIoTargetStateManagement , vea el ejemplo de código en IWDFIoTargetStateManagement::Start).

HRESULT
CMyDevice::OnD0Exit(
    __in IWDFDevice*  pWdfDevice,
    __in WDF_POWER_DEVICE_STATE  previousState
    )
{
    HRESULT hr;
    hr = m_pIoTargetInterruptPipeStateMgmt->Stop(WdfIoTargetCancelSentIo);
    return hr;
}

Requisitos

Requisito Value
Finalización del soporte técnico No disponible en UMDF 2.0 y versiones posteriores.
Plataforma de destino Escritorio
Versión mínima de UMDF 1.5
Encabezado wudfddi.h (incluya Wudfddi.h)
Archivo DLL WUDFx.dll

Consulte también

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop