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(¶meters);
WDF_TRANSFER_DESCRIPTOR_INIT(&transfer);
SpbRequestGetParameters(request, ¶meters);
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 |