SCSI_POWER_REQUEST_BLOCK 구조체(srb.h)
SCSI_POWER_REQUEST_BLOCK 구조는 전원 관리 요청에 사용되는 SCSI_REQUEST_BLOCK 특수 버전입니다.
구문
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, TargetId 및 Lun의 값을 무시해야 합니다.
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 큐가 일시 중지되었습니다.
- 어댑터 하드웨어 전원이 켜집니다.
- 미니포트는 어댑터의 하드웨어 리소스에 액세스할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | srb.h(Storport.h, Minitape.h, Srb.h 포함) |