SCSI_POWER_REQUEST_BLOCK 구조체(storport.h)

SCSI_POWER_REQUEST_BLOCK 구조는 전원 관리 요청에 사용되는 SCSI_REQUEST_BLOCK 특수 버전입니다.

참고

SCSI 포트 드라이버 및 SCSI 미니포트 드라이버 모델은 나중에 변경되거나 사용할 수 없습니다. 대신 Storport 드라이버Storport 미니포트 드라이버 모델을 사용하는 것이 좋습니다.

구문

typedef struct _SCSI_POWER_REQUEST_BLOCK {
  USHORT                     Length;
  UCHAR                      Function;
  UCHAR                      SrbStatus;
  UCHAR                      SrbPowerFlags;
  UCHAR                      PathId;
  UCHAR                      TargetId;
  UCHAR                      Lun;
  STOR_DEVICE_POWER_STATE    DevicePowerState;
  ULONG                      SrbFlags;
  ULONG                      DataTransferLength;
  ULONG                      TimeOutValue;
  PVOID                      DataBuffer;
  PVOID                      SenseInfoBuffer;
  struct _SCSI_REQUEST_BLOCK *NextSrb;
  PVOID                      OriginalRequest;
  PVOID                      SrbExtension;
  STOR_POWER_ACTION          PowerAction;
  ULONG                      Reserved;
  UCHAR                      Reserved5[16];
} SCSI_POWER_REQUEST_BLOCK, *PSCSI_POWER_REQUEST_BLOCK;

멤버

Length

SCSI_POWER_REQUEST_BLOCK 구조체의 크기(바이트)입니다.

Function

수행할 작업입니다. SCSI_POWER_REQUEST_BLOCK 구조체의 경우 이 멤버는 항상 SRB_FUNCTION_POWER 설정됩니다.

SrbStatus

완료된 요청의 상태입니다. 이 멤버는 요청이 완료되었음을 Storport 드라이버에 알리기 전에 미니포트 드라이버에서 설정해야 합니다. 미니포트 드라이버는 RequestComplete 알림 유형을 사용하여 StorPortNotification 함수를 호출하여 요청이 완료되었음을 Storport 드라이버에 알합니다.

이 멤버에 대한 가능한 값 목록은 WDK 설명서의 SCSI_REQUEST_BLOCK 참조하세요.

SrbPowerFlags

전원 관리 플래그입니다. 현재 허용되는 유일한 플래그는 SRB_POWER_FLAGS_ADAPTER_REQUEST, 이는 전원 관리 요청이 어댑터에 대한 것임을 나타냅니다. 이 플래그를 설정하면 미니포트 드라이버는 PathId, TargetIdLun의 값을 무시해야 합니다.

PathId

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

TargetId

버스의 대상 컨트롤러 또는 디바이스 식별자입니다.

Lun

디바이스의 LUN(논리 단위 번호)입니다.

DevicePowerState

디바이스의 요청된 전원 상태를 지정하는 STOR_DEVICE_POWER_STATE 형식의 열거자 값입니다.

SrbFlags

미니포트 드라이버는 이 멤버를 무시해야 합니다.

DataTransferLength

미니포트 드라이버는 이 멤버를 무시해야 합니다.

TimeOutValue

Storport 드라이버가 요청 시간이 초과되었음을 결정하기 전에 요청을 실행할 수 있는 간격(초)입니다.

DataBuffer

미니포트 드라이버는 이 멤버를 무시해야 합니다.

SenseInfoBuffer

미니포트 드라이버는 이 멤버를 무시해야 합니다.

NextSrb

미니포트 드라이버는 이 멤버를 무시해야 합니다.

OriginalRequest

미니포트 드라이버는 이 멤버를 무시해야 합니다.

SrbExtension

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

PowerAction

발생하려는 시스템 종료 유형을 지정하는 STOR_POWER_ACTION 형식의 열거자 값입니다. 이 값은 디바이스가 DevicePowerState 멤버에 표시된 대로 D1, D2 또는 D3 전원 상태로 이동하는 경우에만 의미가 있습니다.

Reserved

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

Reserved5[16]

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

설명

Storport 드라이버는 HwStorBuildIo 를 호출하여 SRB를 미니포트 드라이버에 전달합니다. HwStorBuildIo 는 SRB의 함수 멤버를 확인하여 SRB의 형식을 확인해야 합니다. 함수 멤버가 SRB_FUNCTION_POWER 설정되면 SRB는 SCSI_POWER_REQUEST_BLOCK 형식의 구조체입니다.

Storport 드라이버는 미니포트 드라이버에 SCSI_POWER_REQUEST_BLOCK 요청을 보내 어댑터에 연결된 스토리지 디바이스에 영향을 주는 Windows 전원 이벤트를 미니포트 드라이버에 알립니다. 전원 켜기 이벤트의 경우 이 요청은 미니포트 드라이버가 자신을 초기화할 수 있는 기회를 제공합니다. 최대 절전 모드 또는 종료 이벤트의 경우 이 요청은 미니포트 드라이버가 I/O 요청을 완료하고 전원을 끄기 위해 준비할 수 있는 기회를 제공합니다. 미니포트 드라이버는 SCSI_POWER_REQUEST_BLOCKPowerAction 멤버의 값을 사용하여 필요한 작업을 결정할 수 있습니다. 미니포트 드라이버가 SCSI_POWER_REQUEST_BLOCK 요청을 완료한 후 Storport 드라이버는 ScsiStopAdapter의 제어 요청과 함께 HwScsiAdapterControl 을 호출하여 어댑 의 전원을 니다. 미니포트 드라이버는 SRB_FUNCTION_POWER 요청을 처리하는 동안 다시 초기화하거나 Storport 드라이버가 HwStorAdapterControl 을 호출하여 ScsiRestartAdapter 제어 요청을 수행할 때 대기하고 다시 초기화할 수 있습니다.

D0 전원 상태에서 저전력 상태(D1, D2 또는 D3)로 전환할 때 Storport 드라이버는 기본 버스 드라이버가 어댑터의 전원을 끄기 전에 미니포트 드라이버에 SCSI_POWER_REQUEST_BLOCK 요청을 보냅니다.

Storport 드라이버가 미니포트 드라이버에 SCSI_POWER_REQUEST_BLOCK 요청을 보내기 전에 다음 조건이 있어야 합니다.

  • 어댑터가 중지되지 않았습니다.
  • 어댑터의 I/O 큐가 일시 중지되었습니다.
  • 어댑터 하드웨어 전원이 켜집니다.
  • 미니포트는 어댑터의 하드웨어 리소스에 액세스할 수 있습니다.

요구 사항

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

추가 정보

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification