IFunctionDiscovery::GetInstanceCollection 메서드(functiondiscoveryapi.h)

[Function Discovery는 요구 사항 섹션에 지정된 운영 체제에서 사용할 수 있습니다. 이후 버전에서는 변경되거나 제공되지 않을 수 있습니다.]

범주 및 하위 범주에 따라 지정된 함수 인스턴스 컬렉션을 가져옵니다.

구문

HRESULT GetInstanceCollection(
  [in]  const WCHAR                 *pszCategory,
  [in]  const WCHAR                 *pszSubCategory,
  [in]  BOOL                        fIncludeAllSubCategories,
  [out] IFunctionInstanceCollection **ppIFunctionInstanceCollection
);

매개 변수

[in] pszCategory

열거할 범주의 식별자입니다. 범주 정의를 참조하세요.

[in] pszSubCategory

열거할 하위 범주의 식별자입니다. 하위 범주 정의를 참조하세요. 이 매개 변수는 NULL일 수 있습니다.

[in] fIncludeAllSubCategories

TRUE이면 이 메서드는 pszCategory에 지정된 범주의 모든 하위 범주를 재귀적으로 열거하고 pszCategory의 모든 하위 범주에서 함수 인스턴스를 포함하는 컬렉션을 반환합니다.

FALSE인 경우 이 메서드는 pszCategory로 지정된 범주 및 pszSubCategory로 지정된 하위 범주의 함수 인스턴스를 반환하도록 제한합니다.

[out] ppIFunctionInstanceCollection

요청된 함수 인스턴스를 포함하는 함수 instance 컬렉션을 수신하는 IFunctionInstanceCollection 인터페이스 포인터에 대한 포인터입니다. 한정 함수 인스턴스가 없으면 컬렉션이 비어 있습니다.

반환 값

가능한 반환 값에는 다음이 포함되지만 이에 국한되지는 않습니다.

반환 코드/값 Description
S_OK
메서드가 완료되었습니다.
E_INVALIDARG
pszCategory 값이 잘못되었습니다. ppIFunctionInstanceCollection 매개 변수에 반환된 값은 NULL입니다.
E_OUTOFMEMORY
메서드는 이 작업을 수행하는 데 필요한 메모리를 할당할 수 없습니다.
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
0x80070002
pszCategory 또는 pszSubCategory 값을 알 수 없습니다.
E_PENDING
결과를 비동기적으로 반환하는 공급자에 대해 호출이 실행되었습니다.

설명

일부 함수 검색 공급자는 IFunctionDiscoveryNotification 인터페이스를 사용하여 쿼리 결과를 반환합니다. GetInstanceCollection 은 이러한 방식으로 반환되고 E_PENDING 실패하는 함수 인스턴스를 찾을 수 없습니다. 클라이언트는 IFunctionDiscovery 인터페이스의 CreateInstanceQuery 메서드를 사용하여 이러한 공급자에 대한 함수 인스턴스를 찾는 것이 좋습니다.

메서드가 성공했지만 쿼리 매개 변수와 일치하는 함수 인스턴스가 없으면 S_OK 반환되고 ppFunctionInstanceCollection 은 빈 컬렉션을 가리킵니다(컬렉션의 GetCount 메서드는 0을 반환함).

하위 범주 쿼리는 계층화된 범주 및 일부 공급자 범주에 대해서만 지원됩니다. 레지스트리 공급자, PnP-X 연결 공급자 및 게시 공급자는 하위 범주 쿼리를 지원합니다. 사용자 지정 공급자는 하위 범주 쿼리를 지원하도록 명시적으로 설계할 수 있습니다. 다른 공급자의 경우 쿼리 제약 조건을 사용하여 함수 instance 컬렉션을 필터링할 수 있습니다. 쿼리 제약 조건 목록은 제약 조건 정의를 참조하세요.

예제

다음 코드는 Microsoft.Networking.Devices 네임스페이스에서 SSDP 공급자와 연결된 함수 인스턴스를 반환합니다.

hr = spDisco->GetInstanceCollection(FCTN_CATEGORY_NETWORKDEVICES,
                                   FCTN_SUBCAT_NETWORKDEVICES_SSDP, 
                                   FALSE, 
                                   &spFunctionInstanceCollection);


한 번에 여러 인터페이스를 필터링하거나 하위 범주 쿼리를 지원하지 않는 공급자를 필터링하려면 IFunctionInstanceQuery 의 인터페이스 제약 조건을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 functiondiscoveryapi.h
DLL FunDisc.dll

추가 정보

IFunctionDiscovery