Pointers 指针指向文件内容的DllStructCreate会一直打印错误的结果

Pointers 指针指向文件内容的DllStructCreate会一直打印错误的结果,pointers,struct,autoit,Pointers,Struct,Autoit,我有一个读取BMP文件的代码,它有一个指向具有文件内容的结构的指针: Local $fileContent = DllStructCreate("struct;byte[" & $bmpFileSize & "];endstruct") 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------------------------------

我有一个读取BMP文件的代码,它有一个指向具有文件内容的结构的指针:

Local $fileContent = DllStructCreate("struct;byte[" & $bmpFileSize & "];endstruct")  
           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
           ------------------------------------------------
00000000 | 42 4D 64 1B 04 00 00 00 00 00 36 00 00 00 28 00 
00000010 | 00 00 2B 01 00 00 2B 01 00 00 01 00 18 00 00 00 
00000020 | 00 00 2E 1B 04 00 C3 0E 00 00 C3 0E 00 00 00 00 
00000030 | 00 00 00 00 00 00 FF FF FE FE FE FE FF FF FF FF
                          ^
                        Index 53 (decimal)              

     
然后,它创建一个包含两个元素的BMP结构:一个元素的大小为54字节(BMP标头),另一个元素的大小为其余元素(BMP大小为-54),并使用指向
$fileContent
的指针:

Local $bmpStruct = DllStructCreate("struct;byte[54];byte[" & $bmpFileSize - 54 & "];endstruct", DllStructGetPtr($fileContent))
在这种情况下,当我调用:
DllStructGetData($bmpStruct,2,1)
时,应该打印什么,BMP文件中的53或54的索引或索引0?
我假设
dllsstructGetData($bmpStruct,2,1)
指的是第二个元素,其大小为
$bmpFileSize-54
,因此我认为它将打印54的索引,但我不确定

我试图用脚本检查它,但当我使用它时,它一直在打印我
0
,不知道为什么

我的代码:

Func CreateFile($i_Filename)
    Local $flrichemye = DllCall("kernel32.dll", "ptr", "CreateFile", "str", $i_Filename, "uint", 2147483648, "uint", 0, "ptr", 0, "uint", 3, "uint", 128, "ptr", 0)
    Return $flrichemye[0]
EndFunc

Local $bmpName = "C:\tmp\mypic.bmp"
Local $fileHandle = CreateFile($bmpName)

If $fileHandle <> -1 Then
    Local $bmpFileSize = FileGetSize($bmpName)
    Local $fileContent = DllStructCreate("struct;byte[" & $bmpFileSize & "];endstruct")
    Local $readResult = FileRead($fileHandle, $fileContent)
    If $readResult <> -1 Then
        Local $bmpStruct = DllStructCreate("struct;byte[54];byte[" & $bmpFileSize - 54 & "];endstruct", DllStructGetPtr($fileContent))
        MsgBox(0, "AutoIt", "Result: " & DllStructGetData($bmpStruct, 2, 1))
    EndIf
EndIf  

你有没有检查过,文件是否已经创建?(复制粘贴代码时,不会创建任何文件)