IWDFIoRequest2::Requeue 方法 (wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,并取代 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 不会向 UMDF 1 添加任何新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅使用 UMDF 入门。]

Requeue 方法将 I/O 请求返回到从该请求传递到驱动程序的 I/O 队列的头。

语法

HRESULT Requeue();

返回值

如果操作成功,重新排队将返回S_OK。 否则,此方法可能会返回以下值之一:

返回代码 说明
HRESULT_FROM_WIN32 (ERROR_INVALID_OPERATION)
如果发生以下任一情况,则返回此值:
  • 指定的 I/O 请求不是来自 I/O 队列。
  • 驱动程序不拥有 I/O 请求。
  • 请求可取消。
  • 队列的调度方法不是手动的。
 

此方法可能返回 Winerror.h 包含的其他值之一。

注解

仅当驱动程序对 I/O 队列使用手动调度方法时,才能调用重新排队

示例

下面的代码示例演示 IQueueCallbackStateChange::OnStateChange 回调函数的一段。 段从 I/O 获取 I/O 请求,然后将请求返回到队列。

void 
CMyQueue::OnStateChange(
    __in IWDFIoQueue* pWdfQueue,
    __in WDF_IO_QUEUE_STATE 
    )
{
    HRESULT hr;
    IWDFIoRequest* Request;
...
    //
    // Get the IWDFIoRequest interface of the next request.
    //
    hr = pWdfQueue->RetrieveNextRequest(&Request);
...
    //
    // Declare an IWDFIoRequest2 interface pointer and obtain the
    // IWDFIoRequest2 interface from the IWDFIoRequest interface.
    //
    CComQIPtr<IWDFIoRequest2> r2 = Request;

    //
    // Add code here to determine whether to process or requeue the request.
    //
...
    //
    // Requeue the request.
    //
    hr = r2->Requeue();
    if (FAILED(hr)) goto Error;
...
}

要求

要求
结束支持 在 UMDF 2.0 及更高版本中不可用。
目标平台 桌面
最低 UMDF 版本 1.9
标头 wudfddi.h (包括 Wudfddi.h)
DLL WUDFx.dll

另请参阅

IWDFIoQueue::RetrieveNextRequest

IWDFIoRequest2