다음을 통해 공유


WdfIoResourceRequirementsListRemoveByIoResList 함수(wdfresource.h)

[KMDF에만 적용]

WdfIoResourceRequirementsListRemoveByIoResList 메서드는 리소스 요구 사항 목록에서 논리 구성 제거합니다.

통사론

void WdfIoResourceRequirementsListRemoveByIoResList(
  [in] WDFIORESREQLIST RequirementsList,
  [in] WDFIORESLIST    IoResList
);

매개 변수

[in] RequirementsList

디바이스의 리소스 요구 사항 목록을 나타내는 프레임워크 리소스 요구 사항 목록 개체에 대한 핸들입니다.

[in] IoResList

RequirementsList가 지정하는 리소스 요구 사항 목록에서 제거할 논리적 구성을 나타내는 프레임워크 리소스 범위 목록 개체에 대한 핸들입니다.

반환 값

없음

발언

드라이버에서 잘못된 개체 핸들을 제공하면 버그 검사가 수행됩니다.

WdfIoResourceRequirementsListRemoveByIoResList 메서드는 IoResList 매개 변수가 지정하는 핸들과 연결된 논리 구성을 제거합니다.

WdfIoResourceRequirementsListRemoveByIoResList 인덱스 값이 n있는 논리 구성을 제거하면 다음 논리 구성의 인덱스 값이 n+1에서 n변경됩니다.

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

예제

다음 코드 예제에서는 디바이스의 리소스 요구 사항 목록에서 논리적 구성을 검색하여 특정 포트 주소를 포함하는 구성을 찾습니다. 예제에서 해당 구성을 찾으면 구성이 제거됩니다.

NTSTATUS
Example_EvtDeviceFilterRemoveResourceRequirements(
    IN WDFDEVICE Device,
    IN WDFIORESREQLIST RequirementsList
    )
{
    ULONG i, j, reqCount, resCount;
    BOOLEAN descriptorFound = FALSE;

    //
    // Obtain the number of logical configurations.
    //
    reqCount = WdfIoResourceRequirementsListGetCount(RequirementsList);

    //
    // Search each logical configuration.
    //
    for (i = 0; i < reqCount; i++) {
        WDFIORESLIST reslist;

        if (descriptorFound) {
            break;
        }
        reslist = WdfIoResourceRequirementsListGetIoResList(RequirementsList, i);

        //
        // Get the number of resource descriptors that
        // are in this logical configuration.
        //
        resCount = WdfIoResourceListGetCount(reslist);

        for (j = 0; j < resCount; j++) {
            PIO_RESOURCE_DESCRIPTOR descriptor;

            //
            // Get the next resource descriptor.
            //
            descriptor = WdfIoResourceListGetDescriptor(
                                 reslist,
                                 j
                                 );

            //
            // Stop if this descriptor is the port descriptor
            // that we're looking for.
            //
            if (descriptor->Type == CmResourceTypePort) {
                if ((descriptor->u.Port.MinimumAddress) == PORT_RANGE_A) {
                    WdfIoResourceRequirementsListRemoveByIoResList(
                                 RequirementsList,
                                 reslist
                                 );
                    descriptorFound = TRUE;
                    break;
            }
        }
    }
...
}

요구 사항

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

참고 항목

IO_RESOURCE_DESCRIPTOR

WdfIoResourceListGetCount

WdfIoResourceListGetDescriptor

WdfIoResourceRequirementsListGetCount

WdfIoResourceRequirementsListGetIoResList

WdfIoResourceRequirementsListRemove