WdfIoResourceListInsertDescriptor 함수(wdfresource.h)

[KMDF에만 적용]

WdfIoResourceListInsertDescriptor 메서드는 리소스 설명자를 리소스 요구 사항 목록의 논리적 구성에 삽입합니다.

구문

NTSTATUS WdfIoResourceListInsertDescriptor(
  [in] WDFIORESLIST            ResourceList,
  [in] PIO_RESOURCE_DESCRIPTOR Descriptor,
  [in] ULONG                   Index
);

매개 변수

[in] ResourceList

디바이스에 대한 하드웨어 리소스의 논리적 구성을 나타내는 프레임워크 resource-range-list 개체에 대한 핸들입니다.

[in] Descriptor

하드웨어 리소스를 설명하는 IO_RESOURCE_DESCRIPTOR 구조체에 대한 포인터입니다.

[in] Index

ResourceList가 지정하는 논리 구성에 이미 있는 리소스 설명자 집합의 인덱스로 사용되는 0부터 시작하는 값입니다. 논리 구성의 끝에 리소스 설명자를 추가하려면 WdfIoResourceListGetCount에서 WDF_INSERT_AT_END 또는 반환 값을 지정합니다.

반환 값

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

반환 코드 설명
STATUS_INVALID_PARAMETER
잘못된 매개 변수가 지정되었습니다.
STATUS_ACCESS_DENIED
드라이버가 논리 구성에 설명자를 추가할 수 없습니다.
STATUS_INSUFFICIENT_RESOURCES
프레임워크에서 설명자를 저장할 공간을 할당할 수 없습니다.
STATUS_ARRAY_BOUNDS_EXCEEDED
Index 매개 변수가 지정하는 값이 너무 큽니다.
 

드라이버가 잘못된 개체 핸들을 제공하는 경우 시스템 버그 검사 발생합니다.

설명

WdfIoResourceListInsertDescriptor 메서드는 Descriptor 매개 변수가 가리키는 리소스 설명자를 ResourceList 매개 변수가 지정하는 논리 구성에 인덱스 값이 식별하는 리소스 설명자 앞에 삽입합니다.

논리 구성의 끝에 리소스 설명자를 추가하려면 인덱스 값에 WDF_INSERT_AT_END 또는 WdfIoResourceListGetCount의 반환 값을 지정합니다. 또는 WdfIoResourceListAppendDescriptor 메서드를 사용합니다.

프레임워크는 IO_RESOURCE_DESCRIPTOR 구조체의 내용을 내부 스토리지에 복사하므로 WdfIoResourceListInsertDescriptor 를 호출하는 드라이버 루틴은 구조를 로컬로 할당할 수 있습니다. 드라이버가 WdfIoResourceListInsertDescriptor를 호출한 후 드라이버는 IO_RESOURCE_DESCRIPTOR 구조를 다시 사용할 수 있습니다.

리소스 요구 사항 목록 및 논리 구성에 대한 자세한 내용은 Framework-Based 드라이버용 하드웨어 리소스를 참조하세요.

예제

다음 코드 예제에서는 리소스 설명자를 초기화하고 설명자를 논리 구성의 끝에 추가합니다.

IO_RESOURCE_DESCRIPTOR descriptor;

RtlZeroMemory(&descriptor, sizeof(descriptor));

descriptor.Option = 0;
descriptor.Type = CmResourceTypePort;
descriptor.ShareDisposition = CmResourceShareDeviceExclusive;
descriptor.Flags = CM_RESOURCE_PORT_IO|CM_RESOURCE_PORT_16_BIT_DECODE;
descriptor.u.Port.Length = 1;
descriptor.u.Port.Alignment = 0x01;
descriptor.u.Port.MinimumAddress.QuadPart = 0;
descriptor.u.Port.MaximumAddress.QuadPart = 0xFFFF;

status = WdfIoResourceListInsertDescriptor(
                                           logConfig,
                                           &descriptor,
                                           WDF_INSERT_AT_END
                                           );
if (!NT_SUCCESS(status)) {
    return status;
}

요구 사항

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

추가 정보

IO_RESOURCE_DESCRIPTOR

WdfIoResourceListAppendDescriptor