SCSI_PNP_REQUEST_BLOCK结构(srb.h)

SCSI_PNP_REQUEST_BLOCK 结构是用于即插即用(PNP)请求的 SCSI_REQUEST_BLOCK 的特殊版本。

注意 SCSI 端口驱动程序和 SCSI 微型端口驱动程序模型将来可能会更改或不可用。 相反,我们建议使用 Storport 驱动程序Storport 微型端口 驱动程序模型。
 

语法

typedef struct _SCSI_PNP_REQUEST_BLOCK {
  USHORT                     Length;
  UCHAR                      Function;
  UCHAR                      SrbStatus;
  UCHAR                      PnPSubFunction;
  UCHAR                      PathId;
  UCHAR                      TargetId;
  UCHAR                      Lun;
  STOR_PNP_ACTION            PnPAction;
  ULONG                      SrbFlags;
  ULONG                      DataTransferLength;
  ULONG                      TimeOutValue;
  PVOID                      DataBuffer;
  PVOID                      SenseInfoBuffer;
  struct _SCSI_REQUEST_BLOCK *NextSrb;
  PVOID                      OriginalRequest;
  PVOID                      SrbExtension;
  ULONG                      SrbPnPFlags;
  ULONG                      Reserved;
  UCHAR                      Reserved4[16];
} SCSI_PNP_REQUEST_BLOCK, *PSCSI_PNP_REQUEST_BLOCK;

成员

Length

SCSI_PNP_REQUEST_BLOCK 结构的大小(以字节为单位)。

Function

要执行的作。 对于 SCSI_PNP_REQUEST_BLOCK 结构,此成员始终设置为SRB_FUNCTION_PNP。

SrbStatus

已完成请求的状态。 微型端口驱动程序应在通知 Storport 驱动程序请求已完成之前设置此值。 微型端口驱动程序通过调用 StorPortNotification 例程以及通知类型的 RequestComplete通知 Storport 驱动程序已完成请求。 有关可能的状态值的列表,请参阅 SCSI_REQUEST_BLOCK

PnPSubFunction

此成员当前未使用。 微型端口驱动程序忽略此成员。

PathId

请求的 SCSI 端口或总线标识符。 此值基于零。

TargetId

总线上的目标控制器或设备标识符。

Lun

设备的逻辑单元号(LUN)。

PnPAction

要执行的即插即用作。 此成员可以具有以下值之一:

价值 意义
StorStartDevice
0x00
启动设备。
StorRemoveDevice
0x02
删除设备。
StorStopDevice
0x04
停止设备。
StorQueryCapabilities
0x09
查询设备的功能。
StorQueryResourceRequirements
0x0B
查询设备的资源要求。
StorFilterResourceRequirements
0x0D
筛选设备的资源要求。
StorSupriseRemoval
0x17
意外删除设备。 此值已在 Windows 7 中添加。

SrbFlags

微型端口驱动程序应忽略此成员。

DataTransferLength

微型端口驱动程序应忽略此成员。

TimeOutValue

在 Storport 驱动程序确定请求超时之前,请求可以执行的间隔(以秒为单位)。

DataBuffer

微型端口驱动程序应忽略此成员。

SenseInfoBuffer

微型端口驱动程序应忽略此成员。

NextSrb

微型端口驱动程序应忽略此成员。

OriginalRequest

微型端口驱动程序应忽略此成员。

SrbExtension

指向 SRB 扩展的指针。 如果微型端口驱动程序在 HW_INITIALIZATION_DATA 结构中将 SrbExtensionSize 设置为零,则不得使用此成员。 Storport 驱动程序不会初始化此成员指向的内存。 HBA 可以直接访问微型端口驱动程序写入 SRB 扩展的数据。 微型端口驱动程序可以通过调用 StorPortGetPhysicalAddress 例程来获取 SRB 扩展的物理地址。

SrbPnPFlags

PNP 标志。 目前,唯一允许的标志是SRB_PNP_FLAGS_ADAPTER_REQUEST,它指示 PNP 请求适用于适配器,而不是适配器上的某个设备。 如果设置了此标志,微型端口驱动程序应忽略 PathIdTargetIdLun中的值。

Reserved

保留供系统使用。

Reserved4[16]

保留供系统使用。

言论

Storport 驱动程序向微型端口驱动程序发送 SCSI_PNP_REQUEST_BLOCK 请求,以通知微型端口驱动程序 Windows 即插即用事件,这些事件会影响连接到适配器的存储设备。

Storport 驱动程序调用 HwStorBuildIo 将 SB 传递给微型端口驱动程序。 HwStorBuildIo 检查 SRB 的 函数 成员以确定 SRB 的类型。 如果 函数 成员设置为SRB_FUNCTION_PNP,则 SRB 是 SCSI_PNP_REQUEST_BLOCK类型的结构。

要求

要求 价值
标头 srb.h (包括 Storport.h、Minitape.h、Srb.h)

另请参阅

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification