共用方式為


SpbRequestGetTransferParameters 函式 (spbcx.h)

SpbRequestGetTransferParameters 方法會擷取 I/O 傳輸序列中個別傳輸的傳輸參數,

語法

void SpbRequestGetTransferParameters(
  [in]            SPBREQUEST              SpbRequest,
  [in]            ULONG                   Index,
  [out, optional] SPB_TRANSFER_DESCRIPTOR *TransferDescriptor,
  [out, optional] PMDL                    *TransferBuffer
);

參數

[in] SpbRequest

SPBREQUEST 要從中擷取傳輸參數的 I/O 要求句柄。 此參數必須是 IOCTL_SPB_EXECUTE_SEQUENCE 要求的句柄。

[in] Index

I/O 傳輸序列中傳輸的索引。 如需詳細資訊,請參閱下列一節。

[out, optional] TransferDescriptor

呼叫端配置的 SPB_TRANSFER_DESCRIPTOR 結構的指標,方法會將傳輸參數寫入其中。 TransferDescriptor 參數是選擇性的,如果呼叫端不需要傳輸參數,則可以指定為 NULL。 如需詳細資訊,請參閱< 一節。

[out, optional] TransferBuffer

方法將指標寫入至 MDL(或 MDL 鏈結),以描述傳輸緩衝區中物理記憶體的位置指標。 呼叫端不得修改這個 MDL 的內容。 此參數是選擇性的,如果不需要 MDL,則可以設定為 NULL。 如需詳細資訊,請參閱下列一節。

傳回值

沒有

言論

若要要求 I/O 傳輸順序,SPB 控制器驅動程式的用戶端(周邊驅動程式)會傳送包含序列中傳輸清單的 IOCTL_SPB_EXECUTE_SEQUENCE 要求。 控制器驅動程式可以呼叫 SpbRequestGetTransferParameters,以取得序列中特定傳輸的相關信息。

Index 參數是識別序列中特定傳輸的索引。 如果 N 是序列中的傳輸數目,有效的索引範圍從 0 到 N–1。 若要判斷序列中的傳輸數目,請呼叫 SpbRequestGetParameters 方法。 此方法會擷取包含要求參數的 SPB_TRANSFER_DESCRIPTOR 結構。 此結構的 TransferCount 成員會指定序列中的傳輸數目。

如果 TransferDescriptor 為非 NULL,呼叫端必須呼叫 SPB_TRANSFER_DESCRIPTOR_INIT 函式,才能呼叫 SpbRequestGetTransferParameters。 初始化 結構之後,可以視需要重複使用多次,而不需重新初始化。

TransferBuffer 是選擇性指標,SpbRequestGetTransferParameters 將指標寫入描述傳輸緩衝區實體頁面配置的 MDL。 傳輸緩衝區可以透過單一 MDL 或 MDL 鏈結來描述。 由一個 MDL 描述的簡單緩衝區是由連續的虛擬記憶體區塊所組成。 如果將傳輸緩衝區格式化為散佈收集清單,則緩衝區中的每個連續虛擬記憶體區塊都會由 MDL 鏈結中的 MDL 描述。 如需 MDL 的詳細資訊,請參閱使用 MDL

例子

//
// Note that this snippet shows a transfer completing synchronously. This
// is a horrible thing for a driver to do, but demonstrates the DDI nicely.
//

WDF_REQUEST_PARAMETERS parameters;
WDF_TRANSFER_DESCRIPTOR transfer;

WDF_REQUEST_PARAMETERS_INIT(&parameters);
WDF_TRANSFER_DESCRIPTOR_INIT(&transfer);

SpbRequestGetParameters(request, &parameters);

for (ULONG i = 0; i < parameters.SequenceCount; i += 1)
{
    WDFMEMORY buffer;

    SpbRequestGetTransferParameters(request, i, &transfer, &buffer);

    MyDriverPerformTransfer(deviceContext, 
                            request,
                            transfer,
                            buffer);
}

要求

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

另請參閱