Share via


UpdateResourceA 함수(winbase.h)

PE(이식 가능한 실행 파일) 파일의 리소스를 추가, 삭제 또는 대체합니다. 리소스 구성(RC 구성) 데이터가 포함된 파일의 리소스 업데이트에는 LN( 언어 중립적 ) 파일 및 언어별 리소스(.mui) 파일에 대한 몇 가지 제한 사항이 있습니다.

구문

BOOL UpdateResourceA(
  [in]           HANDLE hUpdate,
  [in]           LPCSTR lpType,
  [in]           LPCSTR lpName,
  [in]           WORD   wLanguage,
  [in, optional] LPVOID lpData,
  [in]           DWORD  cb
);

매개 변수

[in] hUpdate

형식: HANDLE

업데이트할 파일을 참조하는 BeginUpdateResource 함수에서 반환된 모듈 핸들입니다.

[in] lpType

형식: LPCTSTR

업데이트할 리소스 종류입니다. 또는 포인터 대신 이 매개 변수는 MAKEINTRESOURCE(ID)일 수 있습니다. 여기서 ID는 미리 정의된 리소스 종류를 나타내는 정수 값입니다. 문자열의 첫 번째 문자가 파운드 기호(#)인 경우 나머지 문자는 리소스 형식의 정수 식별자를 지정하는 10진수를 나타냅니다. 예를 들어 문자열 "#258"은 식별자 258을 나타냅니다.

미리 정의된 리소스 종류 목록은 리소스 종류를 참조하세요.

[in] lpName

형식: LPCTSTR

업데이트할 리소스의 이름입니다. 또는 포인터 대신 이 매개 변수는 MAKEINTRESOURCE(ID)일 수 있습니다. 여기서 ID는 리소스 ID입니다. 새 리소스를 만들 때 이 매개 변수에 대해 '#' 문자로 시작하는 문자열을 사용하지 않습니다.

[in] wLanguage

형식: WORD

업데이트할 리소스의 언어 식별자 입니다. 언어 식별자를 구성하는 기본 언어 식별자 및 하위 언어 식별자 목록은 MAKELANGID 매크로를 참조하세요.

[in, optional] lpData

형식: LPVOID

hUpdate로 표시된 파일에 삽입할 리소스 데이터입니다. 리소스가 미리 정의된 형식 중 하나인 경우 데이터가 유효하고 올바르게 정렬되어야 합니다. LoadIcon, LoadString 또는 기타 리소스별 부하 함수에서 제공하는 데이터가 아니라 hUpdate로 표시된 파일에 저장되는 원시 이진 데이터입니다. 문자열 또는 텍스트를 포함하는 모든 데이터는 유니코드 형식이어야 합니다. lpData 는 ANSI 데이터를 가리킬 수 없습니다.

lpDataNULL이고 cbData가 0이면 지정된 리소스가 hUpdate로 표시된 파일에서 삭제됩니다.

[in] cb

형식:DWORD

lpData에 있는 리소스 데이터의 크기(바이트)입니다.

반환 값

형식: BOOL

성공하면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

이 함수를 호출하기 전에 리소스 파일을 로드하지 않는 것이 좋습니다. 그러나 해당 파일이 이미 로드되어 있으면 오류가 반환되지 않습니다.

애플리케이션은 UpdateResource 를 반복적으로 사용하여 리소스 데이터를 변경할 수 있습니다. UpdateResource에 대한 각 호출은 추가, 삭제 및 대체의 내부 목록에 기여하지만 실제로 hUpdate로 표시된 파일에 데이터를 쓰지는 않습니다. 애플리케이션은 EndUpdateResource 함수를 사용하여 누적된 변경 내용을 파일에 작성해야 합니다.

이 함수는 코드와 리소스를 모두 포함하는 모듈 내의 리소스를 업데이트할 수 있습니다.

Windows 7 이전:lpDataNULL 이고 cbData 가 0이 아니면 지정된 리소스가 삭제되지 않고 예외가 throw됩니다.

Windows Vista부터: 위에서 설명한 대로 RC 구성 데이터가 포함된 파일의 리소스 업데이트에는 LN 파일 및 .mui 파일이 제한됩니다. 제한 사항은 다음과 같습니다.

작업 LN 파일 .mui 파일
1. LN 또는 .mui 파일에 없는 새 형식을 추가합니다. LN 파일에 형식을 추가하고 언어 중립적(지역화할 수 없음)으로 처리하고 RC 구성 데이터에 새 형식 또는 항목을 추가합니다. 허용되는 유일한 추가 사항은 파일 버전, RC 구성 데이터, Side-by-side 어셈블리 XML 매니페스트 형식입니다.
2. 기존 형식에 새 리소스 항목을 추가합니다. RC 구성 데이터를 사용하여 이 LN 파일과 연결된 .mui 파일에 형식이 있는지 여부를 검사. 형식이 .mui 파일에 없는 경우 항목을 추가하고 새 항목을 지역화할 수 없는 것으로 처리합니다. 형식이 .mui 파일에 있는 경우 추가가 허용되지 않습니다. 파일 버전, RC 구성 데이터, Side-by-side 어셈블리 XML 매니페스트 등의 항목만 추가할 수 있습니다.
3. 리소스 항목을 업데이트합니다. RC 구성 데이터를 사용하여 LN 파일과 연결된 .mui 파일에 형식이 있는지 여부를 검사. 형식이 .mui 파일에 없는 경우 이 리소스 항목 업데이트는 LN 파일에서 허용됩니다. 그렇지 않으면 이 LN 파일과 연결된 .mui 파일에 형식이 있으면 이 업데이트가 허용되지 않습니다. 허용되는 유일한 업데이트는 파일 버전, RC 구성 데이터, 병렬 어셈블리 XML 매니페스트 형식의 항목입니다.
4. 새 언어에 대한 형식/항목을 추가합니다. 허용되지 않습니다. 허용되지 않습니다.
5. 기존 형식/항목을 제거합니다. 사례 3과 유사하게 작동합니다. RC 구성 데이터를 사용하여 LN 파일과 연결된 .mui 파일에 형식이 있는지 여부를 검사. 그렇지 않은 경우 LN 파일에서 형식/항목을 제거할 수 있습니다. 그렇지 않으면 이 LN 파일과 연결된 .mui 파일에 형식/항목이 있으면 제거가 허용되지 않습니다. 제거할 수 있는 유일한 형식은 파일 버전, RC 구성 데이터, Side-by-side 어셈블리 XML 매니페스트입니다. 또한 이러한 형식의 항목만 제거할 수 있습니다.
6. RC 구성 데이터에 포함되지 않은 형식(예: 버전, 병렬 어셈블리 XML 매니페스트 또는 RC 구성 데이터 자체)을 추가/삭제/업데이트합니다. 허용. 허용.
7. TYPELIB, reginst 등과 같은 지역화할 수 없는 데이터의 기타 업데이트입니다. LN 파일의 형식 또는 항목을 업데이트하고, 지역화할 수 없는 것으로 처리하고, RC 구성 데이터에 새 형식 또는 항목을 추가합니다. 해당 사항 없음
8. RC 구성 데이터를 추가합니다. 수행할 수 있지만 RC 구성 데이터의 무결성은 확인되지 않습니다. 수행할 수 있지만 RC 구성 데이터의 무결성은 확인되지 않습니다.
 

예제

예제는 리소스 업데이트를 참조하세요.

참고

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

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

BeginUpdateResource

개념

EndUpdateResource

LoadIcon

LoadString

LockResource

MAKEINTRESOURCE

MAKELANGID

기타 리소스

참조

리소스

SizeofResource