HW_DPC_ROUTINE 콜백 함수(storport.h)
HwStorDpcRoutine 루틴은 DPC(지연 프로시저 호출) 메커니즘을 통해 DISPATCH IRQL에서 실행이 지연되는 루틴입니다.
통사론
HW_DPC_ROUTINE HwDpcRoutine;
void HwDpcRoutine(
PSTOR_DPC Dpc,
PVOID HwDeviceExtension,
PVOID SystemArgument1,
PVOID SystemArgument2
)
{...}
매개 변수
Dpc
Storport DPC 컨텍스트에 대한 포인터입니다.
HwDeviceExtension
어댑터별 디바이스 확장에 대한 포인터입니다.
SystemArgument1
호출자가 제공한 정보에 대한 포인터입니다.
SystemArgument2
호출자가 제공한 정보에 대한 포인터입니다.
반환 값
없음
발언
미니포트 드라이버가 StorPortInitializeDpc 호출하여 DPC를 초기화할 때 HwStorDpcRoutine 루틴에 대한 포인터를 사용하여 StorPortInitializeDpc 루틴의 HwDpcRoutine 매개 변수를 로드해야 합니다.
DPC 루틴의 특정 인스턴스는 DPC 루틴의 다른 인스턴스와 동기화되도록 보장됩니다. DPC 루틴은 StorPortAcquireSpinLock호출하여 적절한 스핀 잠금을 획득하여 HwStorStartIo 루틴 또는 HwStorInterrupt 루틴과 동기화할 수 있습니다. DPC 루틴 내에서 스핀 잠금 관리에 대한 자세한 내용은 StorPortIssueDpc참조하세요.
HwStorDpcRoutine 이름은 자리 표시자일 뿐입니다. 이 루틴의 실제 프로토타입은 다음과 같이 storport.h 정의됩니다.
typedef
BOOLEAN
HW_DPC_ROUTINE (
_In_ PSTOR_DPC Dpc,
_In_ PVOID HwDeviceExtension,
_In_opt_ PVOID SystemArgument1,
_In_opt_ PVOID SystemArgument2
);
포트 드라이버는 DISPATCH IRQL에서 HwStorDpcRoutine 루틴을 호출합니다.
예제
HwStorDpcRoutine 콜백 함수를 정의하려면 먼저 정의하는 콜백 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 콜백 함수 형식 집합을 제공합니다. 콜백 함수 형식을 사용하여 함수를 선언하면 드라이버 , SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 대한 코드 분석을데 도움이 되며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.
예를 들어 MyHwDpcRoutine명명된 HwStorDpcRoutine 콜백 루틴을 정의하려면 다음 코드 예제와 같이 HW_DPC_ROUTINE 형식을 사용합니다.
HW_DPC_ROUTINE MyHwDpcRoutine;
그런 다음 다음과 같이 콜백 루틴을 구현합니다.
_Use_decl_annotations_
BOOLEAN
MyHwDpcRoutine (
_In_ PSTOR_DPC Dpc,
_In_ PVOID HwDeviceExtension,
_In_opt_ PVOID SystemArgument1,
_In_opt_ PVOID SystemArgument2
);
{
...
}
HW_DPC_ROUTINE 함수 형식은 Storport.h 헤더 파일에 정의됩니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 HW_DPC_ROUTINE 함수 형식에 적용되는 주석이 사용되는지 확인합니다. 함수 선언 요구 사항에 대한 자세한 내용은 storport 드라이버 함수 역할 형식을 사용하여 함수 선언참조하세요. Use_decl_annotations대한 자세한 내용은 함수 동작 주석참조하세요.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | storport.h(Storport.h 포함) |
IRQL | DISPATCH_LEVEL(설명 섹션 참조) |
참고 항목
미니포트 드라이버가 DPC를 초기화하기 위해 호출하는 경우 HwStorDpcRoutine 루틴에 대한 포인터를 사용하여 StorPortInitializeDpc 루틴의 HwDpcRoutine 매개 변수를 로드해야 합니다.
DPC 루틴의 특정 인스턴스는 DPC 루틴의 다른 인스턴스와 동기화되도록 보장됩니다. DPC 루틴은 호출과 함께 적절한 스핀 잠금을 획득하여 루틴 또는 루틴과 동기화할 수 있습니다. DPC 루틴 내에서 스핀 잠금 관리에 대한 자세한 내용은 다음을 참조하세요.