Sorry about asking these super obvious little things, I am actually a 1st
student, but I acing my programming 101 at the moment lol

On Thu, Oct 5, 2017 at 12:27 PM, Michael C <mysecretrobotfact...@gmail.com>
wrote:

> First of all, thanks for the reply.
>
>
> How do I see the values of each field? This doesn't work.
>
> print(PMEMORY_BASIC_INFORMATION.Protect)
>
> thanks!
>
> On Thu, Oct 5, 2017 at 11:34 AM, eryk sun <eryk...@gmail.com> wrote:
>
>> On Tue, Oct 3, 2017 at 10:30 PM, Michael C
>> <mysecretrobotfact...@gmail.com> wrote:
>> >
>> > I am trying to create SYSTEM_INFO structure  and
>> MEMORY_BASIC_INFORMATION
>> > structure
>>
>> First, avoid relying on constants, enumerations, and structures
>> published on MSDN. It's not always right. Get the SDK and use the
>> header files instead. MEMORY_BASIC_INFORMATION is defined in winnt.h,
>> and SYSTEM_INFO is defined in sysinfoapi.h.
>>
>> MEMORY_BASIC_INFORMATION is simple. Don't worry about the
>> MEMORY_BASIC_INFORMATION32 and MEMORY_BASIC_INFORMATION64 versions.
>> Those are meant for a debugger that's reading this structure directly
>> from the memory of another process.
>>
>> SYSTEM_INFO is a bit tricky, given the anonymous struct and union. I
>> prefer to nest the definitions, but you could flatten it as separate
>> definitions if you like. Refer to the docs for how to use _anonymous_:
>>
>> https://docs.python.org/3/library/ctypes#ctypes.Structure._anonymous_
>>
>> Here are the definitions. Please don't mindlessly copy and paste.
>> Recreate them on your own and use this example as a reference.
>>
>> import ctypes
>> from ctypes.wintypes import WORD, DWORD, LPVOID
>>
>> PVOID = LPVOID
>> SIZE_T = ctypes.c_size_t
>>
>> # https://msdn.microsoft.com/en-us/library/aa383751#DWORD_PTR
>> if ctypes.sizeof(ctypes.c_void_p) == ctypes.sizeof(ctypes.c_ulonglong):
>>     DWORD_PTR = ctypes.c_ulonglong
>> elif ctypes.sizeof(ctypes.c_void_p) == ctypes.sizeof(ctypes.c_ulong):
>>     DWORD_PTR = ctypes.c_ulong
>>
>> class MEMORY_BASIC_INFORMATION(ctypes.Structure):
>>     """https://msdn.microsoft.com/en-us/library/aa366775""";
>>     _fields_ = (('BaseAddress', PVOID),
>>                 ('AllocationBase',    PVOID),
>>                 ('AllocationProtect', DWORD),
>>                 ('RegionSize', SIZE_T),
>>                 ('State',   DWORD),
>>                 ('Protect', DWORD),
>>                 ('Type',    DWORD))
>>
>> PMEMORY_BASIC_INFORMATION = ctypes.POINTER(MEMORY_BASIC_INFORMATION)
>>
>> class SYSTEM_INFO(ctypes.Structure):
>>     """https://msdn.microsoft.com/en-us/library/ms724958""";
>>     class _U(ctypes.Union):
>>         class _S(ctypes.Structure):
>>             _fields_ = (('wProcessorArchitecture', WORD),
>>                         ('wReserved', WORD))
>>         _fields_ = (('dwOemId', DWORD), # obsolete
>>                     ('_s', _S))
>>         _anonymous_ = ('_s',)
>>     _fields_ = (('_u', _U),
>>                 ('dwPageSize', DWORD),
>>                 ('lpMinimumApplicationAddress', LPVOID),
>>                 ('lpMaximumApplicationAddress', LPVOID),
>>                 ('dwActiveProcessorMask',   DWORD_PTR),
>>                 ('dwNumberOfProcessors',    DWORD),
>>                 ('dwProcessorType',         DWORD),
>>                 ('dwAllocationGranularity', DWORD),
>>                 ('wProcessorLevel',    WORD),
>>                 ('wProcessorRevision', WORD))
>>     _anonymous_ = ('_u',)
>>
>> LPSYSTEM_INFO = ctypes.POINTER(SYSTEM_INFO)
>>
>
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to