AVCSTRM_READ
AVCSTRM_READ函式程式碼可用來提交資料緩衝區avcstrm.sys填入指定資料流程的資料。
I/O 狀態欄塊
如果成功, avcstrm.sys 會將 Irp-IoStatus.Status > 設定為 STATUS_SUCCESS。
可能的錯誤傳回值包括:
錯誤狀態 | 描述 |
---|---|
STATUS_DEVICE_REMOVED | 對應至 AVCSTRM_READ作業的 裝置已不存在。 |
STATUS_CANCELLED | 無法完成要求。 |
STATUS_INVALID_PARAMETER | IRP 中指定的參數不正確, |
STATUS_INSUFFICIENT_RESOURCES | 沒有足夠的系統資源可完成要求。 |
STATUS_PENDING | 已收到要求,但需要進一步處理。 I/O 完成常式會處理最終回應。 |
AVC_STREAM_REQUEST_BLOCK輸入
SizeOfThisBlock、版本和函式
使用 INIT_AVCSTRM_HEADER 宏來初始化這些成員。 在宏的 Request 引數中傳遞 AVCSTRM_READ 。
AVCStreamCoNtext
指定先前AVCSTRM_OPEN呼叫所傳回 的 資料流程內容 (處理) ,該呼叫是讀取作業的資料來源。
BufferStruct
指定讀取作業應該放置資料的緩衝區。
子單位驅動程式必須先配置 IRP 和 AVC_STREAM_REQUEST_BLOCK 結構。
接下來,它應該使用 INIT_AVCSTRM_HEADER 宏來初始化AVC_STREAM_REQUEST_BLOCK結構,並將 AVCSTRM_READ 當做 Request 引數傳遞至宏。
接下來,子單位驅動程式會將 AVCStreamCoNtext 成員設定為數據流內容, (處理資料流程) ,以提供要讀取的資料。 最後,子單位驅動程式會設定CommandData等位的BufferStruct成員,描述讀取作業將資料放入的緩衝區。
若要傳送此要求,子單位會提交 IRP_MJ_INTERNAL_DEVICE_CONTROL IRP,其中 IRP 的 IoControlCode 成員設定為 IOCTL_AVCSTRM_CLASS ,並將 IRP 的 Argument1 成員設定為 AVC_STREAM_REQUEST_BLOCK描述要執行的讀取作業。
此命令會以非同步方式完成。 完成時,會呼叫 IRP 中設定的 I/O 完成常式。
此函式程式碼必須在 IRQL = PASSIVE_LEVEL呼叫。
註解
此函式會使用 AVC_STREAM_REQUEST_BLOCK 結構中CommandData聯集的BufferStruct成員,如下所示。
typedef struct _AVC_STREAM_REQUEST_BLOCK {
ULONG SizeOfThisBlock;
ULONG Version;
AVCSTRM_FUNCTION Function;
.
.
PVOID AVCStreamContext;
.
.
union _tagCommandData {
.
.
AVCSTRM_BUFFER_STRUCT BufferStruct;
.
.
} CommandData;
} AVC_STREAM_REQUEST_BLOCK, *PAVC_STREAM_REQUEST_BLOCK;
規格需求
頭: 在 avcstrm.h中宣告。 包含 avcstrm.h。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應