IDE_HW_BUILDIO 콜백 함수(irb.h)
IdeHwBuildIo 미니포트 드라이버 루틴은 들어오는 모든 I/O 요청에 대해 한 번 호출됩니다.
통사론
IDE_HW_BUILDIO IdeHwBuildio;
BOOLEAN IdeHwBuildio(
[in] PVOID ChannelExtension,
[in] PIDE_REQUEST_BLOCK Irb
)
{...}
매개 변수
[in] ChannelExtension
미니포트 드라이버 채널 확장에 대한 포인터입니다.
[in] Irb
처리할 IDE(Integrated Device Electronics) IRB(입력/출력 요청 블록)를 정의하는 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 포함) |