다음을 통해 공유


ECP를 사용하여 파일 시스템 필터 드라이버에서 IRP_MJ_CREATE 작업 처리

파일 시스템 필터 드라이버에서 추가 ECP(만들기 매개 변수)를 사용하여 IRP_MJ_CREATE 작업을 처리할 수 있습니다. 파일 시스템 필터 드라이버는 다음 섹션의 루틴을 호출하여 IRP_MJ_CREATE 작업에 대한 ECP를 검색, 설정(추가), 승인 및 제거할 수 있습니다. ECP가 시작된 운영 체제 공간을 확인할 수도 있습니다.

ECP 검색

IRP_MJ_CREATE 작업에 대한 ECP를 검색하려면 다음을 수행합니다.

  1. FltGetEcpListFromCallbackData(또는 FsRtlGetEcpListFromIrp)를 호출하여 만들기 작업과 연결된 ECP_LIST 대한 포인터를 검색합니다.

  2. 다음 작업 중 하나를 수행합니다.

ECP 설정

IRP_MJ_CREATE 작업에 대한 ECP를 설정하려면 파일 시스템 필터 드라이버가 다음 중 하나를 수행합니다.

  • 기존 ECP_LIST ECP를 설정합니다.

  • 새로 만든 ECP_LIST ECP를 설정합니다.

기존 ECP_LIST ECP 설정

만들기 작업과 연결된 기존 ECP_LIST ECP를 설정하려면 다음을 수행합니다.

  1. FltGetEcpListFromCallbackData(또는 FsRtlGetEcpListFromIrp)를 호출하여 만들기 작업과 연결된 ECP_LIST 대한 포인터를 검색합니다.

  2. FltAllocateExtraCreateParameter(또는 FsRtlAllocateExtraCreateParameter)를 호출하여 ECP 컨텍스트 구조에 대해 페이징된 메모리 풀을 할당하고 해당 구조에 대한 포인터를 생성합니다.

  3. FltInsertExtraCreateParameter(또는 FsRtlInsertExtraCreateParameter)를 호출하여 ECP 컨텍스트 구조를 ECP_LIST 구조체에 삽입합니다.

새로 만든 ECP_LIST ECP 설정

ECP_LIST 현재 만들기 작업과 연결되지 않은 경우 해당 작업을 만든 다음, 해당 작업에서 ECP를 설정해야 합니다.

  1. FltAllocateExtraCreateParameterList(또는 FsRtlAllocateExtraCreateParameterList)를 호출하여 ECP_LIST 구조체에 대한 메모리를 할당합니다.

  2. FltAllocateExtraCreateParameter(또는 FsRtlAllocateExtraCreateParameter)를 호출하여 ECP 컨텍스트 구조에 대해 페이징된 메모리 풀을 할당하고 해당 구조에 대한 포인터를 생성합니다.

  3. FltInsertExtraCreateParameter(또는 FsRtlInsertExtraCreateParameter)를 호출하여 ECP 컨텍스트 구조를 ECP_LIST 삽입합니다.

  4. FltSetEcpListIntoCallbackData(또는 FsRtlSetEcpListIntoIrp)를 호출하여 ECP 목록을 만들기 작업에 연결합니다.

ECP 제거

IRP_MJ_CREATE 작업에 대한 ECP를 제거하려면 다음을 수행합니다.

  1. FltRemoveExtraCreateParameter(또는 FsRtlRemoveExtraCreateParameter)를 호출하여 ECP 컨텍스트 구조에 대한 ECP 목록을 검색합니다. ECP 컨텍스트 구조가 발견되면 이 루틴은 ECP 컨텍스트 구조를 ECP 목록에서 분리합니다.

  2. 분리된 ECP 컨텍스트 구조에 대한 메모리를 해제하려면 FltFreeExtraCreateParameter(또는 FsRtlFreeExtraCreateParameter)를 호출합니다. 다음 방법 중 하나로 메모리를 할당한 경우 이러한 루틴을 호출하여 ECP 컨텍스트 구조에 대한 메모리를 해제할 수 있습니다.

ECP를 승인됨으로 표시하거나 승인 상태를 결정합니다.

다음 루틴을 호출하여 ECP를 승인된 것으로 표시하거나 ECP가 승인된 것으로 표시되는지 여부를 확인합니다.

원본 모드 확인

FltIsEcpFromUserMode(또는 FsRtlIsEcpFromUserMode)를 호출하여 ECP 컨텍스트 구조가 사용자 모드에서 시작되었는지 여부를 확인합니다. 파일 시스템 필터 드라이버는 사용자 모드에서 시작된 ECP 컨텍스트 구조를 허용하지 않을 수 있습니다.

lookaside 목록을 사용하여 ECP 할당

lookaside 목록에서 ECP 를 할당하고 lookaside 목록 및 ECP를 관리하려면 다음 루틴을 호출합니다.