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 반환합니다. 그렇지 않으면 이 메서드는 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
잘못된 매개 변수가 감지되었습니다. |
|
메모리가 부족했습니다. |
WdfLookasideListCreate 메서드가 반환할 수 있는 다른 반환 값 목록은 프레임워크 개체 만들기 오류를 참조하세요.
이 메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.
설명
드라이버가 WdfLookasideListCreate 를 호출하여 lookaside-list 개체를 만든 후 드라이버는 WdfMemoryCreateFromLookaside 를 호출하여 lookaside 목록에서 버퍼를 가져올 수 있습니다.
기본적으로 새 lookaside-list 개체의 부모는 WdfDriverCreate 메서드가 만드는 프레임워크 드라이버 개체입니다. WDF_OBJECT_ATTRIBUTES 구조체의 ParentObject 멤버를 사용하여 다른 부모를 지정할 수 있습니다. 프레임워크는 부모 개체를 삭제할 때 lookaside-list 개체를 삭제합니다. 드라이버가 기본 부모를 변경하지 않으면 드라이버가 개체 사용을 마쳤을 때 lookaside-list 개체를 삭제해야 합니다. 그렇지 않으면 I/O 관리자가 드라이버를 언로드할 때까지 lookaside-list 개체가 유지됩니다.
드라이버가 LookasideAttributes 및 MemoryAttributes 매개 변수 모두에 대한 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) |