4

我目前正在尝试在 Windows Server 2003 和 2008 上构建资源 DLL。我目前正在使用随 Windows SDK 提供的资源 DLL 代码示例,但我无法让它们工作。

在 Windows Server 2008 上,我成功编译了 Windows 7 SDK ClipBook Server 示例,但无法让它在集群中正常工作。当我使用“cluster restype /create /dll”将资源作为资源类型插入集群时,它可以工作,但是资源以未知类型而不是剪贴簿服务器类型列出,因为我认为它应该具有在资源 DLL 的代码中定义的类型。我也成功地创建了这种类型的资源,但我永远无法让它上​​线。我总是得到错误:

发生系统错误 5079 (0x000013d7)。指定的节点不支持这种类型的资源。这可能是由于版本不一致或此节点上缺少资源 DLL。

尽管资源位于集群中的所有节点上,包括我尝试启动资源的节点,但这是事实。

在 Windows Server 2003 上,我使用的是 Platform SDK 5.2 版,我什至无法编译 ClipBook Server Resource DLL 代码示例。我总是收到MIDL1001 错误,说它无法打开文件 cluscfgserver.idl。我将文件位置的路径添加到项目的包含路径中。那没有用。当我尝试对文件的路径进行硬编码时,在尝试链接该文件时出现了几个链接器错误。

如果有人对这些问题有所了解,我将不胜感激。

4

1 回答 1

2

这些例子是陈旧的和破灭的。为了使类似的“文件共享示例”正常工作,我必须经历以下几件事:

  • 将项目转换为 x64(据说 32 位资源仍然可以工作,但我无法验证)
  • 将模块定义文件 (.def) 添加到链接器输入属性页,以便暴露 Startup 函数
  • 代码中有几个地方使用 CompareString 来检查资源类型名称,成功时预期为 0,但它实际上返回CSTR_EQUAL(3)。
    • 这可能就是您获得“(未知类型)”名称的原因。
  • 要注册资源扩展,cluster.exe 不会接受 dll 名称中的空格,所以在我的情况下,我必须使用cluster /REGADMINEXT:'FILESH~2.dll'
  • 仅支持属性表扩展界面,自 Server 2008 起已删除其他所有内容(上下文菜单、向导)
  • 检查资源类型“ClipBook Server”的扩展 DLL stdafx.cpp 源。它应该是“剪贴簿服务器示例”:const WCHAR g_wszResourceTypeNames[] = L"ClipBook Server Sample\0"
于 2010-10-07T13:13:28.740 回答