我想用MASM的块读取文件。 Win32文档说我必须添加OVERLAPPED结构,但我不知道如何在内存中构建该结构。
保留结构元素的相应大小是否有效?
union和struct的大小是什么?
你能建议我采用另一种方法吗?
非常感谢你的帮助
答案 0 :(得分:0)
Windows API函数使用OVERLAPPED结构来实现异步函数,它在调用之前立即返回,以允许其他函数访问OVERLAPPED结构。 UNION和STRUCT指令没有大小,因为它只是汇编程序(或在大多数情况下,程序员)指示某个数据块是UNION或结构。在MASM中指定UNION时,可以使用与UNION指令关联的变量将块的各种元素(db,dw,dd等)表示为单个元素(但是,在实践中仅为真,因为在汇编中,您可以通过简单地访问数据块的各个元素来绕过它。另一方面,STRUCT为每个元素都有一个单独的内存位置,它们都可以一次使用。
最后,因为MASM中不存在OVERLAPPED运算符,我建议使用STRUCT:
mystruct struct
db byteelement
dd doublewordelement
mystruct ends
当然,您应该根据需要更改此代码以匹配您的功能的OVERLAPPED结构。
您可以在此处找到有关MASM指令的更多信息:http://msdn.microsoft.com/en-us/library/8t163bt0.aspx
希望这有帮助。