Share via


IDE_HW_BUILDIO 콜백 함수(irb.h)

IdeHwBuildIo 미니포트 드라이버 루틴은 들어오는 모든 I/O 요청에 대해 한 번 호출됩니다.

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

구문

IDE_HW_BUILDIO IdeHwBuildio;

BOOLEAN IdeHwBuildio(
  [in] PVOID ChannelExtension,
  [in] PIDE_REQUEST_BLOCK Irb
)
{...}

매개 변수

[in] ChannelExtension

미니포트 드라이버 채널 확장에 대한 포인터입니다.

[in] Irb

처리할 IRB(IDE) 입력/출력 요청 블록(IDE)을 정의하는 형식 IDE_REQUEST_BLOCK 구조체에 대한 포인터입니다.

반환 값

IdeHwBuildIoTRUE 를 반환하여 IDE_REQUEST_BLOCK 구조체의 수신을 승인합니다. 포트 드라이버는 FALSE의 반환 값을 무시합니다.

설명

미니포트 드라이버는 인터럽트를 사용하도록 설정된 비동기 I/O 처리를 수행하는 AtaHwBuildlo 루틴을 제공합니다. IdeHwBuildIo가 요청의 모든 비동기 처리를 완료하면 포트 드라이버로 반환되고 포트 드라이버는 동기화가 필요한 작업을 수행하는 미니포트 드라이버의 IdeHwStartIo 루틴에 요청을 전달합니다.

미니포트 드라이버는 IdeHwBuildIo 루틴을 실행하는 동안 특정 제한을 준수해야 합니다. 미니포트 드라이버는 잠금을 유지하지 않고 IdeHwBuildIo 를 호출합니다. 특히 미니포트 드라이버는 채널 확장의 공유 데이터를 터치해서는 안 되며 ATA 포트 드라이버에서 내보낸 루틴을 호출할 수 없습니다.

미니포트 드라이버가 IdeHwBuildIo 루틴을 실행하는 동안 요청을 완료해야 하는 경우 Irb 매개 변수가 가리키는 IDE_REQUEST_BLOCK 구조체의 IrbStatus 멤버에 적절한 완료 상태 값을 할당해야 합니다. 미니포트 드라이버는 IrbStatus 를 IRB_STATUS_PENDING 값으로 설정해서는 안됩니다.

미니포트 드라이버는 IdeHwBuildIo 루틴을 사용하여 포트 드라이버에 IRB를 처리하는 방법을 나타낼 수 있습니다. 예를 들어 미니포트 드라이버는 IRB의 IrbFlags 멤버를 적절한 값으로 설정하여 포트 드라이버가 DataBuffer에서 버퍼를 매핑하도록 요청할 수 있습니다. 미니포트 드라이버는 요청이 일부 형식의 데이터 전송이 아닌 한 요청과 연결된 버퍼를 매핑하도록 요청해서는 안 됩니다.

IdeHwBuildIo 루틴은 기능에서 Storport의 HwStorBuildIo 루틴과 유사합니다. HwStorBuildIo 루틴에 대한 자세한 내용은 동기화되지 않은 HwStorBuildIo 루틴을 참조하세요.

IdeHwBuildIo 는 선택적 루틴입니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 irb.h(Irb.h 포함)

추가 정보

IDE_REQUEST_BLOCK

IdeHwStartIo