最近在集中测试install.stub的汇编优化版,测试到这里出现了莫名其妙的问题,同样的C代码调用RegCreateKeyExW没有问题,但是在MASM中调用就会返回998错误
后来在这里找到了答案http://technet.microsoft.com/en-us/library/ms724844%28v=VS.85%29.aspx
原来RegCreateKeyExW传入的字符串需要对齐到字,即简单来说就是Unicode字符串的首地址要能够被2整除,可惜MSDN文档中没有这一提醒。。。
修正方法:
1、MASM中的静态字符串没有对齐到字,所以需要手动操作,最好把WSTR集中放到一起,因为WSTR本身是字对齐的,如果调试中发现上述的错误在前面通过补0进行对齐即可
2、也可以将字符串拷贝到栈上,因为栈上分配的空间是对齐到双字的,所以不存在对齐到字的问题