다음을 통해 공유


IRP 주요 함수 코드

Each driver-specific I/O stack location (IO_STACK_LOCATION) for every IRP contains a major function code (IRP_MJ_XXX), which tells the driver what operation it or the underlying device driver should carry out to satisfy the I/O request. 각 커널 모드 드라이버는 지원해야 하는 주요 함수 코드에 대한 디스패치 루틴을 제공해야 합니다.

The specific operations a driver carries out for a given IRP_MJ_XXX code depend somewhat on the underlying device, particularly for IRP_MJ_DEVICE_CONTROL and IRP_MJ_INTERNAL_DEVICE_CONTROL requests. 예를 들어 키보드 드라이버로 전송된 요청은 디스크 드라이버로 전송된 요청과는 다소 다릅니다. 그러나 I/O 관리자는 각 시스템 정의 주 함수 코드에 대한 매개 변수 및 I/O 스택 위치 콘텐츠를 정의합니다.

Every higher-level driver must set up the appropriate I/O stack location in IRPs for the next-lower-level driver and call IoCallDriver, either with each input IRP, or with a driver-created IRP (if the higher-level driver holds on to the input IRP). 따라서 모든 중간 드라이버는 기본 디바이스 드라이버가 처리하는 각 주요 함수 코드에 대한 디스패치 루틴을 제공해야 합니다. 그렇지 않으면 애플리케이션 또는 상위 수준 드라이버가 I/O 요청을 기본 디바이스 드라이버로 보내려고 할 때마다 새 중간 드라이버가 "체인을 중단"합니다.

File system drivers and legacy file system filter drivers also handle a required subset of system-defined IRP_MJ_XXX function codes, some with subordinate IRP_MN_XXX function codes. 이러한 IRP를 처리하는 방법에 대한 자세한 내용은 파일 시스템 드라이버 및 레거시 FS 필터 드라이버에 대한 IRP 주요 함수 코드를 참조하세요.

드라이버는 다음 주요 함수 코드의 일부 또는 전부를 사용하여 설정된 IRP를 처리합니다.

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_FILE_SYSTEM_CONTROL

IRP_MJ_FLUSH_BUFFERS

IRP_MJ_INTERNAL_DEVICE_CONTROL

IRP_MJ_PNP

IRP_MJ_POWER

IRP_MJ_QUERY_INFORMATION

IRP_MJ_READ

IRP_MJ_SET_INFORMATION

IRP_MJ_SHUTDOWN

IRP_MJ_SYSTEM_CONTROL

IRP_MJ_WRITE

이 섹션에서 설명하는 입력 및 출력 매개 변수는 IRP의 함수별 매개 변수입니다.

For more information about IRPs, see Handling IRPs.