WdfLookasideListCreate 함수(wdfmemory.h)

[KMDF에만 적용]

WdfLookasideListCreate 메서드는 드라이버가 메모리 개체를 가져올 수 있는 lookaside-list 개체를 만듭니다.

구문

NTSTATUS WdfLookasideListCreate(
  [in, optional] PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
  [in]           size_t                 BufferSize,
  [in]           POOL_TYPE              PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
  [in, optional] ULONG                  PoolTag,
  [out]          WDFLOOKASIDE           *Lookaside
);

매개 변수

[in, optional] LookasideAttributes

새 lookaside-list 개체에 대한 개체 특성을 포함하는 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 WDF_NO_OBJECT_ATTRIBUTES 수 있습니다.

[in] BufferSize

프레임워크가 각 메모리 개체에 할당할 버퍼의 0이 아닌 크기(바이트)입니다.

[in] PoolType

할당할 메모리 유형을 지정하는 POOL_TYPE 형식의 값입니다.

[in, optional] MemoryAttributes

드라이버가 lookaside 목록에서 가져오는 각 메모리 개체에 대한 개체 특성을 포함하는 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 WDF_NO_OBJECT_ATTRIBUTES 수 있습니다.

[in, optional] PoolTag

각 메모리 개체의 버퍼에 대한 드라이버 정의 풀 태그입니다. 디버거는 이 태그를 표시합니다. 드라이버는 일반적으로 한 따옴표로 구분된 최대 4자의 문자 문자열을 역순으로 지정합니다(예: 'dcba'). 태그에 있는 각 문자의 ASCII 값은 0에서 127 사이여야 합니다. 각 풀 태그가 고유한 경우 드라이버를 디버깅하는 것이 더 쉽습니다.

PoolTag가 0인 경우 프레임워크는 드라이버 커널 모드 서비스 이름의 처음 4자를 사용하는 기본 풀 태그를 제공합니다. 서비스 이름이 "WDF"로 시작하는 경우(이름은 대/소문자를 구분하지 않고 따옴표를 포함하지 않음) 다음 네 문자가 사용됩니다. 4자 미만의 문자를 사용할 수 있는 경우 "FxDr"이 사용됩니다.

KMDF 버전 1.5 이상에서는 드라이버가 WDF_DRIVER_CONFIG 구조체의 DriverPoolTag 멤버를 사용하여 기본 풀 태그를 지정할 수 있습니다.

[out] Lookaside

새 lookaside-list 개체에 대한 핸들을 받는 위치에 대한 포인터입니다.

반환 값

WdfLookasideListCreate 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INVALID_PARAMETER
잘못된 매개 변수가 감지되었습니다.
STATUS_INSUFFICIENT_RESOURCES
메모리가 부족했습니다.
 

WdfLookasideListCreate 메서드가 반환할 수 있는 다른 반환 값 목록은 프레임워크 개체 만들기 오류를 참조하세요.

이 메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.

설명

드라이버가 WdfLookasideListCreate 를 호출하여 lookaside-list 개체를 만든 후 드라이버는 WdfMemoryCreateFromLookaside 를 호출하여 lookaside 목록에서 버퍼를 가져올 수 있습니다.

기본적으로 새 lookaside-list 개체의 부모는 WdfDriverCreate 메서드가 만드는 프레임워크 드라이버 개체입니다. WDF_OBJECT_ATTRIBUTES 구조체의 ParentObject 멤버를 사용하여 다른 부모를 지정할 수 있습니다. 프레임워크는 부모 개체를 삭제할 때 lookaside-list 개체를 삭제합니다. 드라이버가 기본 부모를 변경하지 않으면 드라이버가 개체 사용을 마쳤을 때 lookaside-list 개체를 삭제해야 합니다. 그렇지 않으면 I/O 관리자가 드라이버를 언로드할 때까지 lookaside-list 개체가 유지됩니다.

드라이버가 LookasideAttributesMemoryAttributes 매개 변수 모두에 대한 WDF_OBJECT_ATTRIBUTES 구조를 제공하고 두 구조가 디바이스 개체를 부모 개체로 지정하는 경우 디바이스 개체 핸들은 동일해야 합니다.

프레임워크 메모리 개체 및 lookaside 목록에 대한 자세한 내용은 메모리 버퍼 사용을 참조하세요.

드라이버가 PoolType 매개 변수에 PagedPool을 지정하는 경우 WdfLookasideListCreate 메서드는 IRQL <= APC_LEVEL 호출해야 합니다. 그렇지 않으면 IRQL <= DISPATCH_LEVEL 메서드를 호출할 수 있습니다.

예제

WdfLookasideListCreate를 사용하는 코드 예제는 WdfMemoryCreateFromLookaside를 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
머리글 wdfmemory.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조)
IRQL 설명 섹션을 참조하십시오.
DDI 규정 준수 규칙 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

추가 정보

WDF_OBJECT_ATTRIBUTES

WdfDriver만들기

WdfMemoryCreateFromLookaside