다음을 통해 공유


KMDF 드라이버에서 Pageable 코드 만들기

페이징 가능 코드 는 코드를 사용하지 않을 때 컴퓨터의 페이징 파일에 쓸 수 있는 코드입니다. 드라이버의 일부를 페이징할 수 있도록 하여 부하 이미지 및 초기 로드 시간을 줄이고 컴퓨터의 제한된 비페이지 메모리 풀을 사용하는 드라이버 코드의 양을 줄일 수 있습니다.

페이저블 코드 또는 데이터가 드라이버에 적합한지 여부를 확인하려면 다음을 수행합니다.

  1. 드라이버에서 페이지가 지정 가능한 섹션을 식별합니다.

    페이지 가능 섹션은 필요할 때까지 메모리에 로드되지 않습니다. 드라이버에서 페이지 가능 섹션을 만드는 방법에 대한 자세한 내용은 드라이버 페이지 가능 만들기를 참조하세요.

  2. 페이징된 드라이버 코드가 저전력 상태에서 빠르게 각성하는 컴퓨터의 기능을 방해하지 않는지 확인합니다.

    드라이버가 제공하는 모든 디바이스 개체 콜백 함수는 IRQL = PASSIVE_LEVEL 호출되며, 이를 통해 코드를 페이지 가능하게 만들 수 있습니다( 드라이버 페이지 가능 만들기에 설명된 대로).

    그러나 디바이스가 저전력 상태를 벗어나 작업(D0) 상태로 돌아올 때 프레임워크가 콜백 함수를 호출하는 경우 콜백 함수의 코드를 페이저블하게 설정하면 안 됩니다.

    이러한 코드를 페이징할 수 있는 경우 컴퓨터가 절전 모드 상태가 되기 전에 페이징 파일에 코드를 쓸 수 있습니다. 따라서 페이징 디스크의 전원이 복원될 때까지 코드를 다시 로드할 수 없고 디바이스가 완전히 작동할 수 없으므로 컴퓨터의 작동 속도가 느려집니다.

    따라서 A Device Returns to Its Working State 항목에 나열된 콜백 함수는 페이지를 열 수 없어야 합니다.

  3. 전원 전환 중에 드라이버가 파일, 레지스트리 또는 페이징 풀과 같은 드라이버 외부의 페이징 가능한 데이터에 액세스해야 하는지 여부를 결정합니다.

    전원 전환 중에 드라이버의 페이지 가능 데이터에 액세스하는 기능을 사용하도록 설정하고 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 WdfDeviceInitSetPowerPageableWdfDeviceInitSetPowerNotPageable을 참조하세요.

    드라이버가 페이지를 처리할 수 없는 상태인지 확인하는 방법에 대한 자세한 내용은 WdfDevStateIsNP를 참조하세요.