2014-09-04 2 views
0

Это MSDN Defintion:Транслейтинг BYTE Reserved1 [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

по различным причинам решает Microsoft, что некоторая информация s hould быть держаться подальше от разработчиков. Но люди с помощью обратного инжиниринга выясняют, что представляют собой эти зарезервированные поля и создают собственную документацию.

Несколько раз люди догадываются правильно. Несколько раз Microsoft вносит изменения, и люди кричат ​​«Как ты смеешь!». Жизнь продолжается.

+0

Hahaha ok благодаря мужчине! Btw не должен 'BYTE' быть' ctypes.unsigned_char', когда я использовал это, это не сработало, я должен был использовать 'ctypes.unsigned_long' – Noitidart

+0

BYTE * is * unsigned char – paa

+0

Прохладный спасибо, можете ли вы делать чат, как на IRC? О ctypes? :) Firefox рушится, когда я пытаюсь повторить записи 50 тыс., Но это только сбой, если я пытаюсь прочитать содержимое вещей. – Noitidart