如何使用ctypes调用WINAPI函数并存储返回值

时间:2016-01-29 20:42:23

标签: python-2.7 winapi ctypes

我阅读了ctypes文档和一些教程,但我仍然不了解一些事情。

  1. ctypes.wintypes是否定义了Windows类型,例如HANDLE
  2. 我如何调用,例如NtQueryInformationProcess,它返回NTSTATUS值,并存储返回值?
  3. 如何使用ctypes取消引用指向PEB结构的指针?
  4. 示例代码将不胜感激。

1 个答案:

答案 0 :(得分:0)

  1. ctypes.c_void_p实际上是一个指针,因此使用ctypes.windll.ntdll.NtQueryInformationProcess就足够了。
  2. 您可以通过ctypes.c_int像Python中的任何其他函数一样调用它,但是将C对象(例如NTSTATUS)作为参数传递。 {{1}}不是一个结构,而是一个很长的结构。但是,如果需要,您可以创建C-like structures using ctypes
  3. 请参阅documentation
  4. 中的指针

    您可能需要查看pywin32,一个更高级别,更多 pythonic 的Windows API界面,尽管它没有完全覆盖。

    希望它有所帮助!