Lua和Alien结构

时间:2009-12-27 12:09:59

标签: lua lua-alien

我正在尝试用外星人0.50模块将这个C结构重新定义为Lua但是我最后有两个char数组。 szLibraryPathszLibraryName最初都定义为
 C. char szLibraryPath[MAX_PATH]可以用外星人来完成吗?

LIBRARY_ITEM_DATA = alien.defstruct{
  { "hFile", "long" },
  { "BaseOfDll", "long" },
  { "hFileMapping", "long" },
  { "hFileMappingView", "long" },
  { "szLibraryPath", "byte" },  -- fix to MAX_PATH
  { "szLibraryName", "byte" }   -- fix to MAX_PATH
}

1 个答案:

答案 0 :(得分:2)

请看Alien的作者this answer

您的结构应如下所示:

LIBRARY_ITEM_DATA = alien.defstruct{
  { "hFile", "long" },
  { "BaseOfDll", "long" },
  { "hFileMapping", "long" },
  { "hFileMappingView", "long" },
  { "additionalFields", "char" }
}
LIBRARY_ITEM_DATA.size = LIBRARY_ITEM_DATA.size + 2*MAX_PATH - 1

您可以通过在结构的末尾手动读取/写入字节来获取/设置数组(使用链接中的代码)。要访问第二个数组,请将MAX_PATH添加到所有偏移量。