다음을 통해 공유


MsiViewGetErrorA 함수(msiquery.h)

MsiViewGetError 함수는 MsiViewModify 함수에서 발생한 오류를 반환합니다.

구문

MSIDBERROR MsiViewGetErrorA(
  [in]      MSIHANDLE hView,
  [out]     LPSTR     szColumnNameBuffer,
  [in, out] LPDWORD   pcchBuf
);

매개 변수

[in] hView

뷰에 대한 핸들입니다.

[out] szColumnNameBuffer

null로 종료된 열 이름을 수신하는 버퍼에 대한 포인터입니다. szColumnName에 대해 null(value=0)을 전달하여 버퍼 크기를 확인하려고 시도하지 마세요. 빈 문자열(예: "")을 전달하여 버퍼의 크기를 가져올 수 있습니다. 그런 다음 함수는 MSIDBERROR_MOREDATA 반환하고 pcchBuf 는 종료 null 문자를 포함하지 않고 TCHAR에 필요한 버퍼 크기를 포함합니다. MSIDBERROR_NOERROR 반환할 때 pcchBuf 에는 종료 null 문자를 포함하지 않고 버퍼에 기록된 TCHAR 수가 포함됩니다. 오류가 없는 경우 이 매개 변수는 빈 문자열입니다.

[in, out] pcchBuf

szColumnNameBuffer 변수가 가리키는 버퍼의 크기(TCHAR)를 지정하는 변수에 대한 포인터입니다. 함수가 MSIDBERROR_NOERROR 반환하는 경우 이 변수에는 종료 null 문자를 포함하지 않고 szColumnNameBuffer에 복사된 데이터의 크기가 포함됩니다. szColumnNameBuffer가 충분히 크지 않으면 함수는 MSIDBERROR_MOREDATA 반환하고 종료 null 문자를 포함하지 않고 pcchBuf가 가리키는 변수에 필요한 크기를 저장합니다.

반환 값

이 함수는 다음 값 중 하나를 반환합니다.

오류 코드 의미
MSIDBERROR_INVALIDARG
인수가 잘못된 경우.
MSIDBERROR_MOREDATA
버퍼가 너무 작아서 데이터를 받을 수 없습니다.
MSIDBERROR_FUNCTIONERROR
함수가 실패했습니다.
MSIDBERROR_NOERROR
함수가 오류 없이 성공적으로 완료되었습니다.
MSIDBERROR_DUPLICATEKEY
새 레코드는 테이블에 있는 기존 레코드의 기본 키를 복제합니다.
MSIDBERROR_REQUIRED
null 값은 허용되지 않습니다. 또는 열이 삭제되려고 하지만 다른 행에서 참조됩니다.
MSIDBERROR_BADLINK
외세의 테이블에 있는 해당 레코드를 찾을 수 없습니다.
MSIDBERROR_OVERFLOW
데이터가 허용되는 최대값보다 큽니다.
MSIDBERROR_UNDERFLOW
데이터가 허용되는 최소값보다 작습니다.
MSIDBERROR_NOTINSET
데이터는 집합에 허용되는 값의 멤버가 아닙니다.
MSIDBERROR_BADVERSION
잘못된 버전 문자열이 제공되었습니다.
MSIDBERROR_BADCASE
사례가 잘못되었습니다. 대/소문자는 모두 대문자이거나 모두 소문자여야 합니다.
MSIDBERROR_BADGUID
잘못된 GUID가 제공되었습니다.
MSIDBERROR_BADWILDCARD
와일드카드 파일 이름이 잘못되었거나 와일드카드 사용이 잘못되었습니다.
MSIDBERROR_BADIDENTIFIER
잘못된 식별자가 제공되었습니다.
MSIDBERROR_BADLANGUAGE
잘못된 언어 ID가 제공되었습니다.
MSIDBERROR_BADFILENAME
잘못된 파일 이름이 제공되었습니다.
MSIDBERROR_BADPATH
잘못된 경로가 제공되었습니다.
MSIDBERROR_BADCONDITION
잘못된 조건문이 제공되었습니다.
MSIDBERROR_BADFORMATTED
잘못된 형식 문자열이 제공되었습니다.
MSIDBERROR_BADTEMPLATE
잘못된 템플릿 문자열이 제공되었습니다.
MSIDBERROR_BADDEFAULTDIR
디렉터리 테이블의 DefaultDir 열에 잘못된 문자열이 제공되었습니다.
MSIDBERROR_BADREGPATH
잘못된 레지스트리 경로 문자열이 제공되었습니다.
MSIDBERROR_BADCUSTOMSOURCE
CustomAction 테이블의 CustomSource 열에 잘못된 문자열이 제공되었습니다.
MSIDBERROR_BADPROPERTY
잘못된 속성 문자열이 제공되었습니다.
MSIDBERROR_MISSINGDATA
_Validation 테이블에 열에 대한 참조가 없습니다.
MSIDBERROR_BADCATEGORY
열에 대한 _Validation 테이블의 범주 열이 잘못되었습니다.
MSIDBERROR_BADCABINET
잘못된 캐비닛 이름이 제공되었습니다.
MSIDBERROR_BADKEYTABLE
_Validation 테이블의 Keytable 열에 있는 테이블을 찾거나 로드하지 못했습니다.
MSIDBERROR_BADMAXMINVALUES
_Validation 테이블의 MaxValue 열 값이 MinValue 열의 값보다 작습니다.
MSIDBERROR_BADSHORTCUT
잘못된 바로 가기 대상 이름이 제공되었습니다.
MSIDBERROR_STRINGOVERFLOW
문자열이 열 정의에 지정된 길이에 비해 너무 깁니다.
MSIDBERROR_BADLOCALIZEATTRIB
잘못된 지역화 특성이 제공되었습니다. (기본 키는 지역화할 수 없습니다.)
 
 

메모리가 부족한 경우 이 함수는 STATUS_NO_MEMORY 예외를 발생할 수 있습니다.

설명

MsiViewModify가 ERROR_INVALID_DATA 반환할 때만 MsiViewGetError 함수를 호출해야 하며 이는 데이터가 유효하지 않음을 나타냅니다. 오류는 MSIMODIFY_VALIDATE, MSIMODIFY_VALIDATE_NEW 및 MSIMODIFY_VALIDATEFIELD 대해서만 기록됩니다.

ERROR_MORE_DATA 반환되는 경우 포인터인 매개 변수는 문자열을 보유하는 데 필요한 버퍼의 크기를 제공합니다. 성공하면 문자열 버퍼에 기록된 문자 수를 제공합니다. 따라서 작은 버퍼(최소 1자)를 전달하고 함수가 MSIDBERROR_MOREDATA 반환할 때 pcchPathBuf 에서 값을 검사하여 버퍼의 필요한 크기를 가져올 수 있습니다. null을 szColumnNameBuffer로 전달하거나 pcchBuf에서 참조하는 DWORD에서 0의 버퍼 크기를 전달하여 버퍼 크기를 결정하지 마세요.

MSIDBERROR_NOERROR 반환되면 더 이상 유효성 검사 오류가 남아 있지 않습니다. MSIDBERROR 반환 값은 szColumnNameBuffer로 식별된 열에 있는 값에 대해 발생한 유효성 검사 오류 유형을 나타냅니다.

참고

msiquery.h 헤더는 MSiViewGetError를 유니코드 전처리기 상수의 정의에 따라 이 함수의 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

추가 정보

일반 데이터베이스 액세스 함수

Null을 Windows Installer Functions의 인수로 전달