다음을 통해 공유


MsiEnumComponentCostsA 함수(msiquery.h)

MsiEnumComponentCosts 함수는 구성 요소를 설치하는 데 필요한 드라이브당 디스크 공간을 열거합니다. 이 정보는 사용자 인터페이스의 모든 드라이브에 필요한 디스크 공간 비용을 표시하는 데 필요합니다. 반환된 디스크 공간 비용은 512바이트의 배수로 표시됩니다.

MsiEnumComponentCosts 는 설치 관리자가 파일 비용을 완료한 후 CostFinalize 작업 후에만 실행해야 합니다. 자세한 내용은 파일 비용을 참조하세요.

구문

UINT MsiEnumComponentCostsA(
  [in]      MSIHANDLE    hInstall,
  [in]      LPCSTR       szComponent,
  [in]      DWORD        dwIndex,
  [in]      INSTALLSTATE iState,
  [out]     LPSTR        szDriveBuf,
  [in, out] LPDWORD      pcchDriveBuf,
  [out]     LPINT        piCost,
  [out]     LPINT        piTempCost
);

매개 변수

[in] hInstall

DLL 사용자 지정 작업에 제공되거나 MsiOpenPackage, MsiOpenPackageEx 또는 MsiOpenProduct를 통해 가져온 설치에 대한 핸들입니다.

[in] szComponent

구성 요소 테이블의 구성 요소 열에 나열된 대로 구성 요소의 이름을 지정하는 null로 끝나는 문자열입니다. 이 매개 변수는 null일 수 있습니다. szComponent가 null이거나 빈 문자열인 경우 MsiEnumComponentCosts는 설치 중에 사용된 드라이브당 총 디스크 공간을 열거합니다. 이 경우 iState 는 무시됩니다. 설치 관리자의 비용에는 보안 폴더에 데이터베이스를 캐싱하는 데 드는 비용과 설치 스크립트를 만드는 비용이 포함됩니다. 설치하는 동안 사용된 총 디스크 공간은 구성 요소가 설치된 후 사용되는 공간보다 클 수 있습니다.

[in] dwIndex

드라이브에 대한 0 기반 인덱스입니다. 이 매개 변수는 MsiEnumComponentCosts 함수에 대한 첫 번째 호출에 대해 0이어야 하며 이후 호출에 대해 증가해야 합니다.

[in] iState

열거할 구성 요소 상태를 요청했습니다. szComponent가 Null 또는 빈 문자열로 전달되면 설치 관리자는 iState 매개 변수를 무시합니다.

[out] szDriveBuf

null 종결자를 포함하여 드라이브 이름을 보유하는 버퍼입니다. 오류 발생 시 빈 문자열입니다.

[in, out] pcchDriveBuf

lpDriveBuf 매개 변수가 가리키는 버퍼의 크기(TCHAR)를 지정하는 변수에 대한 포인터입니다. 이 크기에는 종료 null 문자가 포함되어야 합니다. 제공된 버퍼가 너무 작으면 pcchDriveBuf 가 가리키는 변수에 null 종결자를 포함하지 않는 문자 수가 포함됩니다.

[out] piCost

드라이브당 구성 요소의 비용은 512바이트의 배수로 표시됩니다. 오류가 발생한 경우 이 값은 0입니다. piCost에서 반환되는 값은 설치 후 구성 요소에서 사용하는 최종 디스크 공간입니다. szComponent가 Null 또는 빈 문자열로 전달되면 설치 관리자는 piCost의 값을 0으로 설정합니다.

[out] piTempCost

설치 기간 동안 드라이브당 구성 요소 비용 또는 오류가 발생한 경우 0입니다. *piTempCost 의 값은 설치 기간 동안의 임시 공간 요구 사항을 나타냅니다. 이 임시 공간 요구 사항은 설치 기간 동안에만 필요한 공간입니다. 이는 최종 디스크 공간 요구 사항에 영향을 주지 않습니다.

반환 값

반환 값 의미
ERROR_INVALID_HANDLE_STATE
구성 데이터가 손상되었습니다.
ERROR_INVALID_PARAMETER
잘못된 매개 변수가 함수에 전달되었습니다.
ERROR_NO_MORE_ITEMS
반환할 드라이브가 더 이상 없습니다.
ERROR_SUCCESS
값이 열거되었습니다.
ERROR_UNKNOWN_COMPONENT
구성 요소가 없습니다.
ERROR_FUNCTION_NOT_CALLED
원가 계산이 완료되지 않았습니다.
ERROR_MORE_DATA
드라이브 이름에 충분히 크지 않은 버퍼입니다.
ERROR_INVALID_HANDLE
제공된 핸들이 잘못되었거나 비활성 상태입니다.
 
 

설명

드라이브당 디스크 공간 비용을 열거하는 권장 방법은 다음과 같습니다. dwIndex를 0으로 설정하고 각 호출 후 하나씩 증분합니다. MsiEnumComponentCosts가 ERROR_SUCCESS 반환하는 한 열거형을 계속합니다.

사용자 지정 작업에서 MsiEnumComponentCosts를 호출할 수 있습니다.

설치에 대한 총 최종 디스크 비용은 모든 구성 요소의 비용과 Windows Installer 비용(szComponent = null)의 합계입니다.

참고

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Server 2012, Windows 8, Windows Server 2008 R2 또는 Windows 7의 Windows Installer 5.0. Windows Server 2008 또는 Windows Vista의 Windows Installer 4.0 또는 Windows Installer 4.5. Windows Server 2003 또는 Windows XP의 Windows Installer
대상 플랫폼 Windows
헤더 msiquery.h
라이브러리 Msi.lib
DLL Msi.dll