共用方式為


SpbRequestCaptureIoOtherTransferList 函式 (spbcx.h)

SpbRequestCaptureIoOtherTransferList 方法會擷取自定義 IOCTL 要求的輸入緩衝區中的 SPB_TRANSFER_LIST 結構。

語法

NTSTATUS SpbRequestCaptureIoOtherTransferList(
  SPBREQUEST Request
);

參數

Request

SPBREQUEST 自定義 IOCTL 要求句柄。 SPB 控制器驅動程式先前已透過其中一個已註冊 事件回呼函式來接收此句柄,

傳回值

SpbRequestCaptureIoOtherTransferList 如果呼叫成功,就會傳回STATUS_SUCCESS。 可能的傳回值包括下列錯誤碼。

傳回值 描述
STATUS_INVALID_PARAMETER
SPBREQUEST 參數無效,或要求中的 SPB_TRANSFER_LIST 結構格式不正確。
STATUS_INSUFFICIENT_RESOURCES
無法設定此作業所需的系統資源。

言論

這個方法必須在緩衝區位址有效的進程內容中呼叫。 一般而言,SPB 控制器驅動程式會從 EvtIoInCallerContext 事件回呼函式呼叫此方法,而驅動程式會提供做為 SpbControllerSetIoOtherCallback 方法的輸入參數。

SPB 控制器驅動程式可以呼叫此方法的最大 IRQL 取決於 I/O 要求的建立者是在使用者模式或核心模式中執行。 如果要求源自使用者模式,驅動程式必須在PASSIVE_LEVEL呼叫此方法。 如果要求源自內核模式,驅動程式必須在 IRQL <= DISPATCH_LEVEL 呼叫此方法。 驅動程式可以呼叫 WdfRequestGetRequestorMode 方法來判斷源器的模式。 不過,此呼叫通常是不必要的,因為驅動程式可以依賴SPB架構延伸模組 (SpbCx) 在適當的IRQL呼叫驅動程式的 EvtIoInCallerContext 函式。

例子

下列程式代碼範例示範 SPB 控制器驅動程式的 EvtIoInCallerContext 事件回呼函式如何使用 SpbRequestCaptureIoOtherTransferList 方法,從自定義 IOCTL 要求取得 I/O 緩衝區或緩衝區。

VOID
EvtIoInCallerContext(
    _In_  WDFDEVICE   SpbController,
    _In_  WDFREQUEST  FxRequest
    ) 
{
    NTSTATUS status;

    //
    // NOTE: The driver should check for custom IOCTLs that this
    // driver handles. If an IOCTL is not recognized, mark the
    // request as STATUS_NOT_SUPPORTED, and complete the request.
    //

    status = SpbRequestCaptureIoOtherTransferList((SPBREQUEST)FxRequest);

    //
    // If the preceding call fails, the driver must complete the
    // request instead of queueing the request.
    //

    if (!NT_SUCCESS(status))
    {
        goto exit;
    }

    status = WdfDeviceEnqueueRequest(SpbController, FxRequest);

    if (!NT_SUCCESS(status))
    {
        goto exit;
    }

exit:

    if (!NT_SUCCESS(status))
    {
        WdfRequestComplete(FxRequest, status);
    }
}

要求

要求 價值
最低支援的用戶端 從 Windows 8 開始提供。
目標平臺 普遍
標頭 spbcx.h
連結庫 Spbcxstubs.lib
IRQL 請參閱。

另請參閱

EvtIoInCallerContext

SPBREQUEST

SPB_TRANSFER_LIST

SpbControllerSetIoOtherCallback

WdfRequestGetRequestorMode