IOCTL_SCSI_MINIPORT_NVCACHE IOCTL (ntddscsi.h)
您可以使用 DeviceIoControl 和 IOCTL_SCSI_MINIPORT 控制程式代碼,以系統管理員許可權執行的使用者模式應用程式程式代碼叫用此處定義的 NV 快取管理作業。 或者,呼叫端可以是使用ioBuildDeviceIoControlRequest和IOCTL_SCSI_MINIPORT控件程式代碼內核模式驅動程式程式代碼。
NV 快取管理函式要求是在 NVCACHE_REQUEST_BLOCK 結構的欄位中指定。 IOCTL_SCSI_MINIPORT 的輸入是使用者定義的數據結構,其中包含 SRB_IO_CONTROL 結構,後面接著 NVCACHE_REQUEST_BLOCK 結構。 其他函式特定數據可能會選擇性地遵循 NVCACHE_REQUEST_BLOCK 結構。
用於 NV 快取管理功能的介面包含兩層。 第一層是呼叫端與埠驅動程式之間的介面,由 IOCTL_SCSI_MINIPORT所定義。 第二層是呼叫端與裝置之間的介面,由 ATA8-ACS 規格和IOCTL_SCSI_MINIPORT_NVCACHE所定義。 使用者模式應用程式程式代碼的 API 是 DeviceIoControl 介面。 核心模式驅動程式程式代碼的 API 是 IoBuildDeviceIoControlRequest 介面,其使用 IOCTL_SCSI_MINIPORT。
主要程序代碼
輸入緩衝區
Irp->AssociatedIrp.SystemBuffer 的緩衝區包含一個 SRB_IO_CONTROL 結構,簽章欄位設定為 “HYBRDISK”,而 ControlCode 字段則設定為 IOCTL_SCSI_MINIPORT_NVCACHE。 NVCACHE_REQUEST_BLOCK 結構會緊接在 SRB_IO_CONTROL 結構後面。 任何選擇性的函式特定數據緩衝區都會緊接著 NVCACHE_REQUEST_BLOCK 結構。
輸入緩衝區長度
Parameters.DeviceIoControl.InputBufferLength 會指出所有輸入數據的大小,以位元組為單位:SRB_IO_CONTROL、NVCACHE_REQUEST_BLOCK和函式特定的數據緩衝區。 數據緩衝區的存在或不存在是由 [NVCACHE_REQUEST_BLOCK****DataBufSize] 字段表示。
輸出緩衝區
已更新 SRB_IO_CONTROLSRB_IO_CONTROL**]() 和 NVCACHE_REQUEST_BLOCK 結構,以及選擇性的函式特定數據緩衝區,會傳回 Irp->AssociatedIrp.SystemBuffer的緩衝區。
輸出緩衝區長度
緩衝區的長度。
狀態區塊
Information 位元段包含輸出緩衝區中傳回的位元組數目。 [狀態] 字段會指出作業的結果。
要求
要求 | 價值 |
---|---|
標頭 | ntddscsi.h (包括 Ntddscsi.h) |