IUpdateSearcher::Search 메서드(wuapi.h)

업데이트를 동기적으로 검색합니다. 검색은 현재 구성된 검색 옵션을 사용합니다.

구문

HRESULT Search(
  [in]  BSTR          criteria,
  [out] ISearchResult **retval
);

매개 변수

[in] criteria

검색 조건을 지정하는 문자열입니다.

[out] retval

다음을 포함하는 ISearchResult 인터페이스입니다.

  • 작업의 결과
  • 검색 조건과 일치하는 업데이트 컬렉션

반환 값

성공하면 S_OK 반환합니다. 그렇지 않으면 COM 또는 Windows 오류 코드를 반환합니다.

이 메서드는 다음 오류 코드를 반환할 수도 있습니다.

반환 코드 설명
WU_E_LEGACYSERVER
IUpdateSearcher 인터페이스의 ServerSelection 속성이 ssManagedServer 또는 ssDefault로 설정되어 있고 컴퓨터의 관리 서버가 SUS(Microsoft Software Update Services) 1.0 서버인 경우 업데이트를 검색할 수 없습니다.
E_POINTER
매개 변수 값이 잘못되었거나 NULL입니다.
WU_E_INVALID_CRITERIA
잘못된 검색 조건이 있습니다.

설명

criteria 매개 변수에 사용되는 문자열은 Search 메서드에 대한 사용자 지정 검색 언어와 일치해야 합니다. 문자열은 반환할 업데이트를 결정하기 위해 평가되는 조건으로 구성됩니다.

각 조건은 업데이트 속성 이름 및 값을 지정합니다. 몇 가지 제한 사항으로 여러 조건을 ANDOR 연산자와 연결할 수 있습니다. = (같음) 및 != (같지 않음) 연산자가 모두 지원됩니다. WUA(Windows 업데이트 에이전트)를 사용하는 경우 != (같지 않음) 연산자는 형식 조건과 함께만 사용할 수 있습니다.

검색 조건 구문은 SQL 쿼리 식의 WHERE 절을 기반으로 합니다. 지원되는 대부분의 기준은 속성을 업데이트하기 위해 직접 매핑됩니다. 이러한 업데이트 속성은 전체 서버 카탈로그를 포함하는 가상 XML 문서의 요소와 유사합니다. 예를 들어 "AutoSelectOnWebSites = 1"의 검색 조건 문자열을 지정하는 경우 검색은 값이 VARIANT_TRUE AutoSelectOnWebSites 속성이 있는 모든 업데이트를 반환합니다.

단일 조건은 "이름" 또는 "Name = != Value"로 구성됩니다. 여기서 "Name"은 지원되는 기준 이름 중 하나이며 "Value"는 문자열 또는 정수입니다. ANDOR 연산자를 사용하여 여러 조건을 연결할 수 있습니다. 그러나 OR 은 검색 조건의 최상위 수준에서만 사용할 수 있습니다. 따라서 "(x=1 및 y=1) 또는 (z=1)"는 유효하지만 "(x=1) 및 (y=1 또는 z=1)"은 유효하지 않습니다.

지원되는 값 형식은 정수 및 문자열입니다. 정수를 base 10으로 지정해야 하며 음수에는 빼기 기호(-)가 접두사로 지정됩니다. 문자열을 이스케이프하고 작은따옴표(')로 묶어야 합니다. 지정하지 않는 한 모든 문자열 비교는 대/소문자를 구분하지 않습니다.

다음 표에서는 평가 우선 순위 순서로 모든 공용 지원 조건을 식별합니다. 나중에 이 목록에 더 많은 조건을 추가할 수 있습니다.

조건 형식 허용되는 연산자 설명
형식 string =, != "'Driver'" 및 "'Software'"와 같은 특정 형식의 업데이트를 찾습니다.
DeploymentAction string = 서버 관리자가 지정하는 설치 또는 제거와 같은 특정 작업에 대해 배포된 업데이트를 찾습니다.

"DeploymentAction='Installation'"은 대상 컴퓨터에 설치하기 위해 배포된 업데이트를 찾습니다. "DeploymentAction='Uninstallation'"은 다른 쿼리 조건에 따라 달라집니다.

"DeploymentAction='Uninstallation'"은 대상 컴퓨터에서 제거를 위해 배포된 업데이트를 찾습니다. "DeploymentAction='Uninstallation'"은 다른 쿼리 조건에 따라 달라집니다.

이 조건을 명시적으로 지정하지 않으면 AND 연산자에 조인된 각 조건 그룹은 "DeploymentAction='Installation'"을 의미합니다.

IsAssigned int(bool) = 자동 업데이트 배포를 위한 업데이트를 찾습니다.

"IsAssigned=1"은 다른 쿼리 조건에 따라 자동 업데이트 배포하기 위한 업데이트를 찾습니다. 최대 하나의 할당된 Windows 기반 드라이버 업데이트가 대상 컴퓨터의 각 로컬 디바이스에 대해 반환됩니다.

"IsAssigned=0"은 자동 업데이트 배포할 수 없는 업데이트를 찾습니다.

BrowseOnly int(bool) = "BrowseOnly=1"은 선택 사항으로 간주되는 업데이트를 찾습니다.

"BrowseOnly=0"은 선택 사항으로 간주되지 않는 업데이트를 찾습니다.

AutoSelectOnWebSites int(bool) = AutoSelectOnWebSites 속성에 지정된 값이 있는 업데이트를 찾습니다.

"AutoSelectOnWebSites=1"은 Windows 업데이트 자동으로 선택되도록 플래그가 지정된 업데이트를 찾습니다.

"AutoSelectOnWebSites=0"은 자동 업데이트 플래그가 지정되지 않은 업데이트를 찾습니다.

UpdateID string(UUID) =, != UpdateIdentity.UpdateID 속성의 값이 지정된 값과 일치하는 업데이트를 찾습니다. != 연산자와 함께 사용하여 지정된 값의 UpdateIdentity.UpdateID가 없는 모든 업데이트를 찾을 수 있습니다.

예를 들어 "UpdateID='12345678-9abc-def0-1234-56789abcdef0'" 은 UpdateIdentity.UpdateID 에 대해 12345678-9abc-def0-1234-56789abcdef0과 같은 업데이트를 찾습니다.

예를 들어 "UpdateID!='12345678-9abc-def0-1234-56789abcdef0'"은 12345678-9abc-def0-1234-56789abcdef0과 같지 않은 UpdateIdentity.UpdateID 에 대한 업데이트를 찾습니다.

참고 RevisionNumber 절은 (등) 연산자를 포함하는 = UpdateID 절과 결합할 수 있습니다. 그러나 RevisionNumber 절은 != (같지 않음) 연산자를 포함하는 UpdateID 절과 결합할 수 없습니다.
 

예를 들어 "UpdateID='12345678-9abc-def0-1234-56789abcdef0' 및 RevisionNumber=100"을 사용하여 업데이트 업데이트를 찾을 수 있습니다. 12345678-9abc-def0-1234-56789abcdef0이고 UpdateIdentity.RevisionNumber가 100인 UpdateIdentity.UpdateID .

RevisionNumber int = UpdateIdentity.RevisionNumber 속성의 값이 지정된 값과 일치하는 업데이트를 찾습니다.

예를 들어 "RevisionNumber=2"는 UpdateIdentity.RevisionNumber 가 2인 업데이트를 찾습니다.

이 기준은 UpdateID 속성과 결합되어야 합니다.

CategoryID string(uuid) contains 지정된 범주에 속하는 업데이트를 찾습니다.
IsInstalled int(bool) = 대상 컴퓨터에 설치된 업데이트를 찾습니다.

"IsInstalled=1"은 대상 컴퓨터에 설치된 업데이트를 찾습니다.

"IsInstalled=0"은 대상 컴퓨터에 설치되지 않은 업데이트를 찾습니다.

IsHidden int(bool) = 대상 컴퓨터에서 숨김 으로 표시된 업데이트를 찾습니다.

"IsHidden=1"은 대상 컴퓨터에 숨겨진 것으로 표시된 업데이트를 찾습니다. 이 절을 사용하는 경우 검색에서 숨겨진 업데이트를 반환하도록 UpdateSearcher.IncludePotentiallySupersededUpdates 속성을 VARIANT_TRUE 설정할 수 있습니다. 숨겨진 업데이트는 동일한 결과의 다른 업데이트로 대체될 수 있습니다.

"IsHidden=0"은 숨김으로 표시되지 않은 업데이트를 찾습니다. UpdateSearcher.IncludePotentiallySupersededUpdates 속성이 VARIANT_FALSE 설정된 경우 숨겨진 업데이트로 대체되는 업데이트가 검색 결과에 포함되도록 검색 필터 문자열에 해당 절을 포함하는 것이 좋습니다. VARIANT_FALSE 기본값입니다.

IsPresent int(bool) = 1로 설정하면 컴퓨터에 있는 업데이트를 찾습니다.

"IsPresent=1"은 대상 컴퓨터에 있는 업데이트를 찾습니다. 업데이트가 하나 이상의 제품에 유효한 경우 하나 이상의 제품에 대해 업데이트가 설치된 경우 업데이트가 있는 것으로 간주됩니다.

"IsPresent=0"은 대상 컴퓨터의 제품에 대해 설치되지 않은 업데이트를 찾습니다.

RebootRequired int(bool) = 설치 또는 제거를 완료하기 위해 컴퓨터를 다시 시작해야 하는 업데이트를 찾습니다.

"RebootRequired=1"은 설치 또는 제거를 완료하기 위해 컴퓨터를 다시 시작해야 하는 업데이트를 찾습니다.

"RebootRequired=0"은 설치 또는 제거를 완료하기 위해 컴퓨터를 다시 시작할 필요가 없는 업데이트를 찾습니다.

 

검색의 기본 검색 기준은 다음과 같습니다.

( IsInstalled = 0 and IsHidden = 0 )

모든 숨겨진 업데이트를 찾으려면( UpdateSearcher.IncludePotentiallySupersededUpdates 속성을 사용하여 VARIANT_TRUE 설정) 다음 조건을 사용합니다.

 ( IsHidden = 1 )

요구 사항

   
지원되는 최소 클라이언트 Windows XP, Windows 2000 Professional SP3 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003, Windows 2000 Server SP3 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 wuapi.h
라이브러리 Wuguid.lib
DLL Wuapi.dll

참고 항목

IUpdateSearcher