HW_UNIT_CONTROL 콜백 함수(storport.h)
미니포트 드라이버의 HwStorUnitControl 루틴은 스토리지 장치 디바이스의 상태를 제어하기 위해 동기 작업을 수행하기 위해 호출됩니다.
통사론
HW_UNIT_CONTROL HwUnitControl;
SCSI_UNIT_CONTROL_STATUS HwUnitControl(
[in] PVOID DeviceExtension,
[in] SCSI_UNIT_CONTROL_TYPE ControlType,
[in] PVOID Parameters
)
{...}
매개 변수
[in] DeviceExtension
미니포트 드라이버의 단위별 스토리지 영역에 대한 포인터입니다.
[in] ControlType
각 컨트롤 형식이 미니포트 드라이버에서 작업을 시작하는 단위 제어 작업을 지정하는 SCSI_UNIT_CONTROL_TYPE 값입니다. 자세한 내용은 SCSI_UNIT_CONTROL_TYPE 참조하세요.
[in] Parameters
ControlType관련된 정보를 포함하는 구조체 또는 값에 대한 포인터입니다. 모든 구조체는 호출자가 할당됩니다. 자세한 내용은 SCSI_UNIT_CONTROL_TYPE 참조하세요.
주소
컨트롤 작업이 지정된 단위의 주소입니다.
반환 값
컨트롤 형식에 따라 HwStorUnitControl 다음 SCSI_UNIT_CONTROL_STATUS 값 중 하나를 반환합니다.
반환 코드 | 묘사 |
---|---|
ScsiUnitControlSuccess | 미니포트 드라이버가 요청된 작업을 성공적으로 완료했습니다. |
ScsiUnitControlUnsuccessful | 단위 제어 작업에 성공하지 못했습니다. |
발언
Storport는 HBA가 초기화된 후 첫 번째 I/O 전에 ScsiQuerySupportedControlTypes 컨트롤 형식으로 미니포트의 HwStorUnitControl 호출합니다. 미니포트 드라이버는 매개 변수SCSI_SUPPORTED_CONTROL_TYPE_LIST 구조체를 지원하는 작업으로 채웁니다. 이 호출에서 HwStorUnitControl 반환되면 Storport 드라이버는 미니포트에서 지원하는 작업에 대해서만 미니포트 드라이버의 HwStorAdapterControl 콜백을 호출합니다.
Storport는 HwStorUnitControl 호출하여 미니포트 드라이버에 Address식별된 장치 변경 사항을 알리거나 미니포트가 단위를 시작하거나 장치에 대한 전원 제어 작업을 처리하는 등 해당 단위에 대해 쿼리 또는 설정 작업을 수행해야 한다고 알립니다.
다음 표에서는 현재 IRQL 및 컨트롤 형식이 발급될 때 획득한 스핀 잠금을 나열합니다.
컨트롤 형식 | IRQL | 스핀 잠금 |
---|---|---|
ScsiQuerySupportedControlTypes | PASSIVE_LEVEL | 없음 |
ScsiUnitUsage | PASSIVE_LEVEL | 없음 |
ScsiUnitStart | PASSIVE_LEVEL | 없음 |
ScsiUnitPower | DISPATCH_LEVEL | 없음 |
ScsiUnitPoFxPowerInfo | PASSIVE_LEVEL | 없음 |
ScsiUnitPoFxPowerRequired | DISPATCH_LEVEL | 없음 |
ScsiUnitPoFxPowerActive | DISPATCH_LEVEL | 없음 |
ScsiUnitPoFxPowerSetFState | DISPATCH_LEVEL | 없음 |
ScsiUnitPoFxPowerControl | DISPATCH_LEVEL | 없음 |
ScsiUnitRemove | PASSIVE_LEVEL | 없음 |
ScsiUnitSurpriseRemoval | PASSIVE_LEVEL | 없음 |
ScsiUnitRichDescription | PASSIVE_LEVEL | 없음 |
ScsiUnitQueryBusType | PASSIVE_LEVEL | 없음 |
ScsiUnitQueryFruId | PASSIVE_LEVEL | 없음 |
HwStorUnitControl 이름은 자리 표시자일 뿐입니다. 이 루틴의 실제 프로토타입은 다음과 같이 storport.h 정의됩니다.
typedef
SCSI_UNIT_CONTROL_STATUS
HW_UNIT_CONTROL (
_In_ PVOID DeviceExtension,
_In_ SCSI_UNIT_CONTROL_TYPE ControlType,
_In_ PVOID Parameters
);
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8 |
대상 플랫폼 | 보편적 |
헤더 | storport.h(Storport.h 포함) |
IRQL | 비고를 참조하세요. |