共用方式為


WdfRequestRetrieveUnsafeUserOutputBuffer 函式 (wdfrequest.h)

[僅適用於 KMDF]

WdfRequestRetrieveUnsafeUserOutputBuffer 方法會擷取 I/O 要求的輸出緩衝區,如果要求存取數據緩衝區的技術 未緩衝處理或直接 I/O

語法

NTSTATUS WdfRequestRetrieveUnsafeUserOutputBuffer(
  [in]            WDFREQUEST Request,
  [in]            size_t     MinimumRequiredLength,
  [out]           PVOID      *OutputBuffer,
  [out, optional] size_t     *Length
);

參數

[in] Request

架構要求物件的句柄。

[in] MinimumRequiredLength

驅動程式需要處理 I/O 要求的最小緩衝區大小,以位元組為單位。

[out] OutputBuffer

接收緩衝區位址之位置的指標。

[out, optional] Length

接收緩衝區大小之位置的指標,以位元組為單位。 這個參數是選擇性的,而且可以 NULL

傳回值

WdfRequestRetrieveUnsafeUserOutputBuffer 如果作業成功,就會傳回STATUS_SUCCESS。 否則,此方法可能會傳回下列其中一個值:

傳回碼 描述
STATUS_INVALID_PARAMETER
輸入參數無效。
STATUS_INVALID_DEVICE_REQUEST
如果發生下列其中一項,則會傳回此值:
STATUS_BUFFER_TOO_SMALL
MinimumRequiredLength 參數會指定大於緩衝區實際大小的緩衝區大小。
 

此方法也可能 傳回其他NTSTATUS 值。

如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。

言論

WdfRequestRetrieveUnsafeUserOutputBuffer 方法必須從 EvtIoInCallerContext 回呼函式呼叫。 呼叫 WdfRequestRetrieveUnsafeUserOutputBuffer之後,驅動程式必須呼叫 WdfRequestProbeAndLockUserBufferForWrite

如果要求的 I/O 控件程式代碼 IRP_MJ_READIRP_MJ_DEVICE_CONTROL,驅動程式可以呼叫 WdfRequestRetrieveUnsafeUserOutputBuffer

驅動程式可以存取擷取的緩衝區,直到 完成 Request 參數所代表的 I/O 要求 為止。

如需 WdfRequestRetrieveUnsafeUserOutputBuffer的詳細資訊,請參閱 Framework-Based Drivers 中存取數據緩衝區

例子

如需使用 WdfRequestRetrieveUnsafeUserOutputBuffer的程式碼範例,請參閱 WdfRequestProbeAndLockUserBufferForRead

要求

要求 價值
目標平臺 普遍
最低 KMDF 版本 1.0
標頭 wdfrequest.h (包括 Wdf.h)
連結庫 Wdf01000.sys (請參閱架構連結庫版本控制。)
IRQL PASSIVE_LEVEL
DDI 合規性規則 BufAfterReqCompletedIntIoctl(kmdf)BufAfterReqCompletedIntIoctlA(kmdf)BufAfterReqCompletedIoctl(kmdf)BufAfterReqCompletedIoctlA(kmdf)BufAfterReqCompletedRead(kmdf)BufAfterReqCompletedReadA(kmdf)BufAfterReqCompletedWrite(kmdf)DriverCreate(kmdf)InvalidReqAccess(kmdf)InvalidReqAccessLocal(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), OutputBufferAPI(kmdf)

另請參閱

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForWrite

WdfRequestRetrieveUnsafeUserInputBuffer