Share via


CM_Get_Device_ID_ListA 함수(cfgmgr32.h)

CM_Get_Device_ID_List 함수는 로컬 컴퓨터의 디바이스 인스턴스에 대한 디바이스 instance ID 목록을 검색합니다.

구문

CMAPI CONFIGRET CM_Get_Device_ID_ListA(
  [in, optional] PCSTR  pszFilter,
  [out]          PZZSTR Buffer,
  [in]           ULONG  BufferLen,
  [in]           ULONG  ulFlags
);

매개 변수

[in, optional] pszFilter

컴퓨터 디바이스 instance ID(식별자) 또는 NULL의 하위 집합으로 설정된 문자 문자열에 대한 호출자 제공 포인터입니다. ulFlags에 대한 다음 설명을 참조하세요.

[out] Buffer

NULL로 종료된 디바이스 instance 식별자 문자열 집합을 수신하는 버퍼의 주소입니다. 집합의 끝은 추가 NULL에 의해 종료됩니다. 필요한 버퍼 크기는 CM_Get_Device_ID_List_Size 호출하여 가져와야 합니다.

[in] BufferLen

버퍼에서 지정한 버퍼의 호출자 제공 길이(문자)입니다.

[in] ulFlags

검색 필터를 지정하는 다음 호출자 제공 비트 플래그 중 하나입니다.

CM_GETIDLIST_FILTER_BUSRELATIONS

이 플래그가 설정된 경우 pszFilter는 디바이스 instance 식별자를 지정해야 합니다. 함수는 지정된 디바이스 instance 버스 관계에 대한 디바이스 instance ID를 반환합니다.

CM_GETIDLIST_FILTER_CLASS(Windows 7 이상 버전의 Windows)

이 플래그를 설정하면 pszFilter디바이스 설정 클래스 GUID를 지정하는 문자열이 포함됩니다. 반환된 목록에는 속성(CM_DRP_CLASSGUID 상수에서 참조)이 지정된 디바이스 설정 클래스 GUID와 일치하는 디바이스 인스턴스가 포함되어 있습니다.

CM_DRP_CLASSGUID 상수는 Cfgmgr32.h에 정의되어 있습니다.

CM_GETIDLIST_FILTER_PRESENT(Windows 7 이상 버전의 Windows)

이 플래그를 설정하면 반환된 목록에는 현재 시스템에 있는 디바이스 인스턴스만 포함됩니다. 이 값은 CM_GETIDLIST_FILTER_CLASS 같은 다른 ulFlags 값과 결합할 수 있습니다.

CM_GETIDLIST_FILTER_TRANSPORTRELATIONS(Windows 7 이상 버전의 Windows)

이 플래그가 설정된 경우 pszFilter는 복합 디바이스 노드(devnode)의 디바이스 instance 식별자를 지정해야 합니다.

함수는 지정된 복합 devnode의 전송 관계를 나타내는 devnodes의 디바이스 instance 식별자를 반환합니다.

복합 devnodes 및 전송 관계에 대한 자세한 내용은 다음 주의 섹션을 참조 하세요 .

CM_GETIDLIST_DONOTGENERATE

CM_GETIDLIST_FILTER_SERVICE 함께만 사용됩니다. 설정된 경우 디바이스 트리에 지정된 서비스에 대한 devnode가 포함되어 있지 않으면 이 플래그는 함수가 서비스에 대한 devnode를 만들지 못하게 합니다.

CM_GETIDLIST_FILTER_EJECTRELATIONS

이 플래그가 설정된 경우 pszFilter는 디바이스 instance 식별자를 지정해야 합니다. 함수는 지정된 디바이스 instance 배출 관계에 대한 디바이스 instance ID를 반환합니다.

CM_GETIDLIST_FILTER_ENUMERATOR

이 플래그가 설정된 경우 pszFilter 는 디바이스 열거자의 이름을 지정하고 필요에 따라 디바이스 ID를 지정해야 합니다. 문자열 형식은 ROOT 또는 ROOT\<*PNP0500 같은 EnumeratorName\DeviceID>입니다.

pszFilter가 열거자 이름만 제공하는 경우 함수는 열거자와 연결된 각 디바이스의 인스턴스에 대한 디바이스 instance ID를 반환합니다. 열거자 이름은 CM_Enumerate_Enumerators 호출하여 가져올 수 있습니다.

pszFilter가 열거자와 디바이스 ID를 모두 제공하는 경우 함수는 열거자와 연결된 지정된 디바이스의 인스턴스에 대해서만 디바이스 instance ID를 반환합니다.

CM_GETIDLIST_FILTER_NONE

이 플래그를 설정하면 pszFilter 가 무시되고 시스템의 모든 디바이스 목록이 반환됩니다.

CM_GETIDLIST_FILTER_POWERRELATIONS

이 플래그가 설정된 경우 pszFilter는 디바이스 instance 식별자를 지정해야 합니다. 함수는 지정된 디바이스 instance 전원 관계에 대한 디바이스 instance ID를 반환합니다.

CM_GETIDLIST_FILTER_REMOVALRELATIONS

이 플래그가 설정된 경우 pszFilter는 디바이스 instance 식별자를 지정해야 합니다. 함수는 지정된 디바이스 instance 제거 관계에 대한 디바이스 instance ID를 반환합니다.

CM_GETIDLIST_FILTER_SERVICE

이 플래그가 설정된 경우 pszFilter 는 Microsoft Windows 서비스(일반적으로 드라이버)의 이름을 지정해야 합니다. 함수는 지정된 서비스에서 제어하는 디바이스 인스턴스에 대한 디바이스 instance ID를 반환합니다.

디바이스 트리에 지정된 서비스에 대한 devnode 가 없는 경우 이 함수는 기본적으로 하나를 만듭니다. 이 동작을 억제하려면 CM_GETIDLIST_DONOTGENERATE 설정합니다.

검색 필터 플래그가 지정되지 않은 경우 함수는 모든 디바이스 인스턴스에 대한 모든 디바이스 instance ID를 반환합니다.

반환 값

작업이 성공하면 함수는 CR_SUCCESS 반환합니다. 그렇지 않으면 Cfgmgr32.h에 정의된 CR_ 접두사 오류 코드 중 하나를 반환합니다.

설명

Windows 7부터 패킷 기반 데이터에 대한 여러 전송 경로를 지원하는 디바이스를 복합 디바이스라고 하며 복합 devnode로 표시됩니다. 복합 devnode는 복합 devnode가 물리적 디바이스에 대한 여러 경로를 가질 수 있더라도 사용자 및 애플리케이션에 대한 복합 디바이스를 단일 디바이스로 논리적으로 나타냅니다.

물리적 디바이스에 대한 각 활성 전송 경로는 전송 devnode로 표시되며 복합 디바이스에 대한 전송 관계 라고 합니다.

복합 devnode(관련 전송 devnode는 아님)는 디바이스 인터페이스를 애플리케이션 및 시스템에 노출합니다. 애플리케이션이 이러한 공용 디바이스 인터페이스를 사용하는 경우 복합 디바이스는 패킷 기반 데이터를 이러한 전송 devnode 중 하나 이상으로 라우팅한 다음, 데이터를 실제 디바이스로 전송합니다.

예를 들어 실제 휴대폰이 USB 및 Bluetooth 버스의 컴퓨터에 동시에 연결된 경우 각 버스는 해당 버스의 자식 전송 devnode를 열거하여 디바이스의 물리적 연결을 나타냅니다.

이 경우 ulFlags에서 CM_GETIDLIST_FILTER_TRANSPORTRELATIONS 플래그를 설정하고 pszFilter에서 휴대폰의 복합 devnode의 디바이스 instance ID를 지정하면 함수는 Buffer 매개 변수의 두 전송 devnodes에 대한 디바이스 instance ID를 반환합니다.

디바이스 instance ID에 대한 자세한 내용은 디바이스 식별 문자열을 참조하세요.

참고

cfgmgr32.h 헤더는 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 CM_Get_Device_ID_List 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Microsoft Windows 2000 이상 버전의 Windows에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 cfgmgr32.h(Cfgmgr32.h 포함)
라이브러리 Cfgmgr32.lib
DLL CfgMgr32.dll

추가 정보

CM_Get_Device_ID_List_Size