다음을 통해 공유


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 루틴의 특정 instance 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 루틴의 특정 instance DPC 루틴의 다른 인스턴스와 동기화되도록 보장됩니다. DPC 루틴은 를 호출하여 적절한 스핀 잠금을 획득하여 루틴 또는 루틴과 동기화할 수 있습니다. DPC 루틴 내에서 스핀 잠금 관리에 대한 자세한 내용은 을 참조하세요.

HwStorInterrupt

HwStorStartIo

StorPortAcquireSpinLock

StorPortInitializeDpc

StorPortIssueDpc