Как получить образцы кода DLL ресурсов в Windows SDK для компиляции и запуска? - PullRequest
4 голосов
/ 23 февраля 2010

В настоящее время я пытаюсь создать Resource DLL на Windows Server 2003 и 2008. В настоящее время я работаю с примерами кода Resource DLL, поставляемыми с Windows SDK, и не могу заставить их работать.

В Windows Server 2008 я успешно скомпилировал пример Windows 7 SDK ClipBook Server, но не смог заставить его правильно работать в кластере. Когда я вставляю ресурс в качестве типа ресурса в кластер, используя «restype / create / dll» кластера, он работает, но ресурс указывается с неизвестным типом, а не с типом сервера ClipBook, так как я думаю, что он должен быть таким, как есть. тип, определенный в коде Resource DLL. Мне также удалось создать ресурс такого типа, но я никогда не смогу заставить его выйти в Интернет. Я всегда получаю ошибку:

Произошла системная ошибка 5079 (0x000013d7). Указанный узел не поддерживает ресурс этого типа. Это может быть связано с несоответствиями версий или отсутствием библиотеки ресурсов на этом узле.

И это несмотря на то, что ресурс расположен на всех узлах кластера, включая тот, на котором я пытаюсь запустить ресурс.

В Windows Server 2003 я работаю с Platform SDK версии 5.2 и не могу даже скомпилировать образец кода DLL ресурса сервера ClipBook. Я всегда получаю MIDL1001 Ошибка, говорящая, что он не может открыть файл cluscfgserver.idl . Я добавил путь к местоположению файла к пути включения проекта. Это не сработало. Когда я пытался жестко закодировать путь к файлу, я получал несколько ошибок компоновщика при попытке связать с этим файлом.

Если кто-нибудь что-нибудь знает о любой из этих проблем, я был бы признателен за любой вклад.

1 Ответ

2 голосов
/ 07 октября 2010

Эти примеры старые и разоренные . Вот несколько вещей, которые мне пришлось пройти, чтобы заставить работать подобный «Образец общего ресурса»:

  • Преобразование проекта в x64 (предположительно, 32-битные ресурсы все еще работают, но я не смог проверить это)
  • Добавьте файл определения модуля (.def) на страницу свойств ввода компоновщика, чтобы была доступна функция запуска
  • В коде было несколько мест, где CompareString используется для проверки имени типа ресурса, и в случае успеха ожидается 0, но на самом деле он возвращает CSTR_EQUAL (3).
    • Возможно, поэтому вы получаете имя "(Неизвестный тип)".
  • Чтобы зарегистрировать расширение ресурса, cluster.exe не будет принимать пробелы в имени dll, поэтому в моем случае мне пришлось использовать cluster /REGADMINEXT:'FILESH~2.dll'
  • Поддерживается только интерфейс расширения листа свойств, все остальное (контекстное меню, мастера) было удалено с Server 2008
  • Проверьте источники расширения DLL stdafx.cpp для типа ресурса "Сервер ClipBook". Это должен быть «Образец сервера ClipBook»: const WCHAR g_wszResourceTypeNames[] = L"ClipBook Server Sample\0"
...