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 드라이버에 알리기 전에 이 값을 설정해야 합니다. 미니포트 드라이버는 RequestComplete 알림 유형으로 StorPortNotification 루틴을 호출하여 요청이 완료되었음을 Storport 드라이버에 알 수 있습니다. 가능한 상태 값 목록은 SCSI_REQUEST_BLOCK 참조하세요.

PnPSubFunction

이 멤버는 현재 사용되지 않습니다. 미니포트 드라이버는 이 멤버를 무시합니다.

PathId

요청에 대한 SCSI 포트 또는 버스 식별자입니다. 이 값은 0부터 시작합니다.

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를 0으로 설정하는 경우 이 멤버를 사용하지 않아야 합니다. Storport 드라이버는 이 멤버가 가리키는 메모리를 초기화하지 않습니다. HBA는 미니포트 드라이버가 SRB 확장에 쓰는 데이터에 직접 액세스할 수 있습니다. 미니포트 드라이버는 StorPortGetPhysicalAddress 루틴을 호출하여 SRB 확장의 실제 주소를 가져올 수 있습니다.

SrbPnPFlags

PNP 플래그입니다. 현재 허용되는 유일한 플래그는 SRB_PNP_FLAGS_ADAPTER_REQUEST, 이는 PNP 요청이 어댑터의 디바이스 중 하나가 아니라 어댑터용임을 나타냅니다. 이 플래그가 설정되면 미니포트 드라이버는 PathId, TargetIdLun의 값을 무시해야 합니다.

Reserved

시스템에서 사용하도록 예약되었습니다.

Reserved4[16]

시스템에서 사용하도록 예약되었습니다.

설명

Storport 드라이버는 미니포트 드라이버에 SCSI_PNP_REQUEST_BLOCK 요청을 보내 어댑터에 연결된 스토리지 디바이스에 영향을 주는 Windows 플러그 앤 플레이 이벤트를 미니포트 드라이버에 알립니다.

Storport 드라이버는 HwStorBuildIo 를 호출하여 SRB를 미니포트 드라이버에 전달합니다. HwStorBuildIo 는 SRB의 함수 멤버를 확인하여 SRB의 형식을 확인합니다. Function 멤버가 SRB_FUNCTION_PNP 설정된 경우 SRB는 SCSI_PNP_REQUEST_BLOCK 형식의 구조체입니다.

요구 사항

요구 사항
헤더 srb.h(Storport.h, Minitape.h, Srb.h 포함)

추가 정보

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification