2014-09-04 34 views
0

這是MSDN確定指標:翻譯BYTE保留1 [24]以jsctypes

typedef struct _SYSTEM_BASIC_INFORMATION { 
    BYTE Reserved1[24]; 
    PVOID Reserved2[4]; 
    CCHAR NumberOfProcessors; 
} SYSTEM_BASIC_INFORMATION; 

這傢伙它轉換成這jsctypes:

var SYSTEM_BASIC_INFORMATION = new ctypes.StructType("SYSTEM_BASIC_INFORMATION", [ 
{'Reserved': ctypes.unsigned_long}, 
{'TimerResolution': ctypes.unsigned_long}, 
{'PageSize': ctypes.unsigned_long}, 
{'NumberOfPhysicalPages': ctypes.unsigned_long}, 
{'LowestPhysicalPageNumber': ctypes.unsigned_long}, 
{'HighestPhysicalPageNumber': ctypes.unsigned_long}, 
{'AllocationGranularity': ctypes.unsigned_long}, 
{'MinimumUserModeAddress': ctypes.unsigned_long.ptr}, 
{'MaximumUserModeAddress': ctypes.unsigned_long.ptr}, 
{'ActiveProcessorsAffinityMask': ctypes.unsigned_long.ptr}, 
{'NumberOfProcessors': ctypes.char} ]); //CCHAR 

我不明白他不怎麼也得24爲BYTE Reserved1[24];不應該條目他有這樣的:

{'Reserved1_1': BYTE}, 
{'Reserved1_2': BYTE}, 
{'Reserved1_3': BYTE}, 
{'Reserved1_4': BYTE}, 
.... 
{'Reserved1_24': BYTE}, 

回答

1

由於各種原因,微軟決定一些信息小號應該遠離開發人員。但是人們通過逆向工程發現這些保留字段是關於什麼並且生成他們自己的文檔。

有些時候人們猜對了。有時候微軟會做出突破性的改變,人們尖叫着「你怎麼敢!」。然後一切如常。

+0

哈哈哈好,謝謝你!順便說一句,不應該'BYTE'是'ctypes.unsigned_char',當我使用它不起作用時,我不得不使用'ctypes.unsigned_long' – Noitidart 2014-09-05 10:27:35

+0

BYTE *是* unsigned char – paa 2014-09-05 19:40:16

+0

很酷的感謝,你是否可以自由地進行聊天在IRC上?關於ctypes? :)當我嘗試讀取50k條目時,Firefox崩潰,但是如果我嘗試讀取內容的話,它只會崩潰。 – Noitidart 2014-09-05 19:48:03

相關問題