changerClassSendSrbSynchronous 函数 (mcd.h)

ChangerClassSendSrbSynchronous 例程以同步方式将 SRB 发送到指定的设备。

语法

NTSTATUS ChangerClassSendSrbSynchronous(
  [in] PDEVICE_OBJECT      DeviceObject,
  [in] PSCSI_REQUEST_BLOCK Srb,
  [in] PVOID               Buffer,
  [in] ULONG               BufferSize,
  [in] BOOLEAN             WriteToDevice
);

参数

[in] DeviceObject

指向目标设备的功能设备对象的指针。

[in] Srb

指向要发送到目标设备的 SRB) (部分初始化的 SCSI 请求块的指针。

[in] Buffer

指定 Srb-DataBuffer> 应指向的缓冲区的地址。 ChangerClassSendSrbSynchronous 为此缓冲区创建 MDL,并将其传递给 SRB IRP 中的目标设备驱动程序。

[in] BufferSize

指定缓冲区的长度(以字节为单位)。

[in] WriteToDevice

为 TRUE 时指示写入操作,在 FALSE 时指示读取操作。

返回值

如果 SRB 成功传输,则返回STATUS_SUCCESS;如果 SRB 失败或由于某种原因无法发送,则返回相应的错误代码。

注解

变更器微型类驱动程序可以在 Microsoft Windows XP 和更高版本的操作系统中调用此类驱动程序例程。 微型类驱动程序应使用此例程将 SRB 发送到端口驱动程序,而不是直接调用 classpnp.sys 库例程 ClassSendSrbSynchronous 。 尽管 windows 驱动程序工具包 (WDK) 附带classpnp.sys,但它不是受支持的 API,并且直接调用此库例程的驱动程序在将来的版本中可能无法正常工作。

ChangerClassSendSrbSynchronous 完成部分初始化的 SRB 的初始化,并使用目标设备对象中指示的值设置 SRB 的标志。 ChangerClassSendSrbSynchronous 创建用于将 SRB 传送到目标设备的 IRP,发送 IRP,然后处理 IRP 的完成。

如果 IRP 失败,并且感知请求数据指示应重试 IRP,ChangerClassSendSrbSynchronous 将重新发送 IRP。

要求

要求
目标平台 桌面
标头 mcd.h (包括 Mcd.h、Ntddchgr.h)
Library Mcd.lib

另请参阅

SCSI_REQUEST_BLOCK