다음을 통해 공유


재사용 가능한 IRP를 사용하여 I/O Packet-Driven

I/O 관리자, 플러그 앤 플레이 관리자 및 전원 관리자는 I/O 요청 패킷(IRP)을 사용하여 커널 모드 드라이버와 통신하고 드라이버가 서로 통신할 수 있도록 합니다.

I/O 관리자는 다음 단계를 수행합니다.

  • 일반적으로 사용자 모드 애플리케이션에서 발생하는 I/O 요청을 수락합니다.

  • I/O 요청을 나타내는 IRP를 만듭니다.

  • IRP를 적절한 드라이버로 라우팅합니다.

  • IRP가 완료될 때까지 추적합니다.

  • 각 I/O 작업의 원래 요청자에게 상태 반환합니다.

IRP는 둘 이상의 드라이버로 라우팅될 수 있습니다. 예를 들어 디스크에서 파일을 여는 요청은 먼저 파일 시스템 드라이버, 중간 미러 드라이버를 통해 디스크 드라이버 및 PnP 하드웨어 버스 드라이버로 이동될 수 있습니다. 이 드라이버 집합을 드라이버 스택이라고 합니다.

따라서 각 IRP에는 고정된 부분과 디바이스를 제어하는 각 드라이버에 대한 하나의 드라이버별 I/O 스택 위치 가 있습니다.

  • 고정된 부분(또는 헤더)에서 I/O 관리자는 원래 요청에 대한 정보(예: 호출자의 스레드 ID 및 매개 변수, 파일이 열려 있는 디바이스 개체의 주소 등)를 유지 관리합니다. 고정 파트에는 드라이버가 요청된 I/O 작업의 상태 대한 정보를 설정하는 I/O 상태 블록도 포함되어 있습니다.

  • 최상위 드라이버의 I/O 스택 위치에서 I/O 관리자, 플러그 앤 플레이 관리자 또는 전원 관리자는 요청된 작업의 함수 코드 및 해당 드라이버가 수행할 작업을 결정하는 데 사용하는 컨텍스트와 같은 드라이버별 매개 변수를 설정합니다. 그러면 각 드라이버가 드라이버 스택에서 다음 하위 드라이버의 I/O 스택 위치를 설정합니다.

각 드라이버가 IRP를 처리할 때 IRP의 I/O 스택 위치에 액세스하여 드라이버 작업의 각 단계에서 IRP를 다시 사용할 수 있습니다. 또한 상위 수준 드라이버는 IDP를 만들거나 다시 사용하여 하위 수준 드라이버로 요청을 보낼 수 있습니다.

IRP에 대한 자세한 내용은 IRP 처리를 참조하세요.