다음을 통해 공유


대체 가능 매개 변수 사용(등록자 전처리기)

대체 가능한 매개 변수를 사용하면 등록자의 클라이언트에서 런타임 데이터를 지정할 수 있습니다. 이를 위해 등록 기관은 스크립트에서 대체 가능한 매개 변수와 연결된 값을 입력하는 대체 맵을 유지 관리합니다. 등록 기관은 런타임에 이러한 항목을 만듭니다.

%MODULE% 사용

ATL 컨트롤 마법사사용하는 스크립트%MODULE%를 자동으로 생성합니다. ATL은 서버의 DLL 또는 EXE의 실제 위치에 이 대체 가능한 매개 변수를 사용합니다.

스크립트 데이터와 런타임 데이터 연결

전처리기의 또 다른 사용은 런타임 데이터를 스크립트 데이터와 연결하기 위한 것입니다. 예를 들어 끝에 문자열 ", 1"이 추가된 모듈의 전체 경로를 포함하는 항목이 필요하다고 가정합니다. 먼저 다음 확장을 정의합니다.

'MySampleKey' = s '%MODULE%, 1'

그런 다음 스크립트 호출에 나열된 스크립트 처리 방법 중 하나를 호출하기 전에 맵에 대체 메서드를 추가합니다.

TCHAR szModule[_MAX_PATH];
::GetModuleFileName(_AtlBaseModule.GetModuleInstance(), szModule, _MAX_PATH);
p->AddReplacement(OLESTR("Module"), T2OLE(szModule));   

스크립트를 구문 분석하는 동안 등록 기관은 .로 c:\mycode\mydll.dll, 1확장됩니다'%MODULE%, 1'.

참고 항목

등록자 스크립트에서 4K는 최대 토큰 크기입니다. (토큰은 구문에서 인식할 수 있는 요소입니다.) 여기에는 전처리기에서 만들거나 확장한 토큰이 포함됩니다.

참고 항목

런타임에 대체 값을 대체하려면 스크립트에서 DECLARE_REGISTRY_RESOURCE 호출을 제거하거나 매크로를 DECLARE_REGISTRY_RESOURCEID. 대신 CAtlModule::UpdateRegistryFromResourceD 또는 CAtlModule::UpdateRegistryFromResourceS를 호출하는 고유한 UpdateRegistry 메서드로 바꾸고 _ATL_REGMAP_ENTRY 구조의 배열을 전달합니다. _ATL_REGMAP_ENTRY 배열에는 {NULL,NULL}로 설정된 항목이 하나 이상 있어야 하며 이 항목은 항상 마지막 항목이어야 합니다. 그렇지 않으면 호출될 때 UpdateRegistryFromResource 액세스 위반 오류가 생성됩니다.

참고 항목

실행 파일을 출력하는 프로젝트를 빌드할 때 ATL은 런타임에 만든 경로 이름 주위에 %MODULE% 등록자 스크립트 매개 변수를 사용하여 따옴표를 자동으로 추가합니다. 경로 이름에 따옴표를 포함하지 않으려면 새 %MODULE_RAW% 매개 변수를 대신 사용합니다.

DLL을 출력하는 프로젝트를 빌드할 때 %MODULE% 또는 %MODULE_RAW%가 사용되는 경우 ATL은 경로 이름에 따옴표를 추가하지 않습니다.

참고 항목

등록자 스크립트 만들기