Поделиться через


Использование подстановочных параметров (препроцессор регистратора)

Заменяемые параметры позволяют клиенту регистратора указывать данные во время выполнения. Для этого регистратор сохраняет карту замены, в которую он вводит значения, связанные с заменяемыми параметрами в скрипте. Регистратор делает эти записи во время выполнения.

Использование %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));   

Во время синтаксического анализа скрипта регистратор расширяется '%MODULE%, 1' в c:\mycode\mydll.dll, 1.

Примечание.

В скрипте регистратора 4K — это максимальный размер токена. (Маркер является любым распознаваемым элементом в синтаксисе.) Сюда входят маркеры, созданные или развернутые препроцессором.

Примечание.

Чтобы заменить значения замены во время выполнения, удалите вызов скрипта в макрос DECLARE_REGISTRY_RESOURCE или DECLARE_REGISTRY_RESOURCEID . Вместо этого замените его собственным UpdateRegistry методом, который вызывает CAtlModule::UpdateRegistryFromResourceD или CAtlModule::UpdateRegistryFromResourceS, и передайте массив структур _ATL_REGMAP_ENTRY. Массив _ATL_REGMAP_ENTRY должен иметь по крайней мере одну запись, которая имеет значение {NULL,NULL}, и эта запись всегда должна быть последней записью. В противном случае при UpdateRegistryFromResource вызове возникает ошибка нарушения доступа.

Примечание.

При создании проекта, который выводит исполняемый файл, ATL автоматически добавляет кавычки вокруг имени пути, созданного во время выполнения с параметром скрипта регистратора %MODULE% . Если вы не хотите, чтобы имя пути включало кавычки, используйте новый параметр %MODULE_RAW% вместо него.

При создании проекта, выходяющего библиотеку DLL, ATL не добавит кавычки в имя пути, если используется %MODULE% или %MODULE_RAW%.

См. также

Создание скриптов регистратора