blob: 588ac7c16c7bc526761e0c225fc54e6b3bdf07c4 [file] [log] [blame]
Georg Brandl71515ca2009-05-17 12:29:12 +00001:mod:`ctypes` --- A foreign function library for Python
2=======================================================
Georg Brandl116aa622007-08-15 14:28:22 +00003
4.. module:: ctypes
5 :synopsis: A foreign function library for Python.
6.. moduleauthor:: Thomas Heller <theller@python.net>
7
8
Georg Brandl1d837bc2009-12-29 11:24:00 +00009:mod:`ctypes` is a foreign function library for Python. It provides C compatible
Benjamin Peterson3e4f0552008-09-02 00:31:15 +000010data types, and allows calling functions in DLLs or shared libraries. It can be
Georg Brandl116aa622007-08-15 14:28:22 +000011used to wrap these libraries in pure Python.
12
13
14.. _ctypes-ctypes-tutorial:
15
16ctypes tutorial
17---------------
18
Georg Brandl1d837bc2009-12-29 11:24:00 +000019Note: The code samples in this tutorial use :mod:`doctest` to make sure that
20they actually work. Since some code samples behave differently under Linux,
21Windows, or Mac OS X, they contain doctest directives in comments.
Georg Brandl116aa622007-08-15 14:28:22 +000022
Benjamin Peterson3e4f0552008-09-02 00:31:15 +000023Note: Some code samples reference the ctypes :class:`c_int` type. This type is
24an alias for the :class:`c_long` type on 32-bit systems. So, you should not be
Georg Brandl116aa622007-08-15 14:28:22 +000025confused if :class:`c_long` is printed if you would expect :class:`c_int` ---
26they are actually the same type.
27
28
29.. _ctypes-loading-dynamic-link-libraries:
30
31Loading dynamic link libraries
32^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
33
Georg Brandl8d8f1972009-06-08 13:27:23 +000034:mod:`ctypes` exports the *cdll*, and on Windows *windll* and *oledll*
Benjamin Peterson3e4f0552008-09-02 00:31:15 +000035objects, for loading dynamic link libraries.
Georg Brandl116aa622007-08-15 14:28:22 +000036
37You load libraries by accessing them as attributes of these objects. *cdll*
38loads libraries which export functions using the standard ``cdecl`` calling
39convention, while *windll* libraries call functions using the ``stdcall``
40calling convention. *oledll* also uses the ``stdcall`` calling convention, and
Georg Brandl60203b42010-10-06 10:11:56 +000041assumes the functions return a Windows :c:type:`HRESULT` error code. The error
Antoine Pitrou442ee032011-10-12 18:53:23 +020042code is used to automatically raise a :class:`OSError` exception when the
Georg Brandl1d837bc2009-12-29 11:24:00 +000043function call fails.
Georg Brandl116aa622007-08-15 14:28:22 +000044
Antoine Pitrou442ee032011-10-12 18:53:23 +020045.. versionchanged:: 3.3
46 Windows errors used to raise :exc:`WindowsError`, which is now an alias
47 of :exc:`OSError`.
48
49
Georg Brandl116aa622007-08-15 14:28:22 +000050Here are some examples for Windows. Note that ``msvcrt`` is the MS standard C
51library containing most standard C functions, and uses the cdecl calling
52convention::
53
54 >>> from ctypes import *
Georg Brandl6911e3c2007-09-04 07:15:32 +000055 >>> print(windll.kernel32) # doctest: +WINDOWS
Georg Brandl116aa622007-08-15 14:28:22 +000056 <WinDLL 'kernel32', handle ... at ...>
Georg Brandl6911e3c2007-09-04 07:15:32 +000057 >>> print(cdll.msvcrt) # doctest: +WINDOWS
Georg Brandl116aa622007-08-15 14:28:22 +000058 <CDLL 'msvcrt', handle ... at ...>
59 >>> libc = cdll.msvcrt # doctest: +WINDOWS
60 >>>
61
Thomas Heller2fadaa22008-06-16 19:56:33 +000062Windows appends the usual ``.dll`` file suffix automatically.
Georg Brandl116aa622007-08-15 14:28:22 +000063
64On Linux, it is required to specify the filename *including* the extension to
Thomas Heller2fadaa22008-06-16 19:56:33 +000065load a library, so attribute access can not be used to load libraries. Either the
Georg Brandl116aa622007-08-15 14:28:22 +000066:meth:`LoadLibrary` method of the dll loaders should be used, or you should load
67the library by creating an instance of CDLL by calling the constructor::
68
69 >>> cdll.LoadLibrary("libc.so.6") # doctest: +LINUX
70 <CDLL 'libc.so.6', handle ... at ...>
71 >>> libc = CDLL("libc.so.6") # doctest: +LINUX
72 >>> libc # doctest: +LINUX
73 <CDLL 'libc.so.6', handle ... at ...>
74 >>>
75
Christian Heimes5b5e81c2007-12-31 16:14:33 +000076.. XXX Add section for Mac OS X.
Georg Brandl116aa622007-08-15 14:28:22 +000077
78
79.. _ctypes-accessing-functions-from-loaded-dlls:
80
81Accessing functions from loaded dlls
82^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
83
84Functions are accessed as attributes of dll objects::
85
86 >>> from ctypes import *
87 >>> libc.printf
88 <_FuncPtr object at 0x...>
Georg Brandl6911e3c2007-09-04 07:15:32 +000089 >>> print(windll.kernel32.GetModuleHandleA) # doctest: +WINDOWS
Georg Brandl116aa622007-08-15 14:28:22 +000090 <_FuncPtr object at 0x...>
Georg Brandl6911e3c2007-09-04 07:15:32 +000091 >>> print(windll.kernel32.MyOwnFunction) # doctest: +WINDOWS
Georg Brandl116aa622007-08-15 14:28:22 +000092 Traceback (most recent call last):
93 File "<stdin>", line 1, in ?
94 File "ctypes.py", line 239, in __getattr__
95 func = _StdcallFuncPtr(name, self)
96 AttributeError: function 'MyOwnFunction' not found
97 >>>
98
99Note that win32 system dlls like ``kernel32`` and ``user32`` often export ANSI
100as well as UNICODE versions of a function. The UNICODE version is exported with
101an ``W`` appended to the name, while the ANSI version is exported with an ``A``
102appended to the name. The win32 ``GetModuleHandle`` function, which returns a
103*module handle* for a given module name, has the following C prototype, and a
104macro is used to expose one of them as ``GetModuleHandle`` depending on whether
105UNICODE is defined or not::
106
107 /* ANSI version */
108 HMODULE GetModuleHandleA(LPCSTR lpModuleName);
109 /* UNICODE version */
110 HMODULE GetModuleHandleW(LPCWSTR lpModuleName);
111
112*windll* does not try to select one of them by magic, you must access the
113version you need by specifying ``GetModuleHandleA`` or ``GetModuleHandleW``
Georg Brandl8d8f1972009-06-08 13:27:23 +0000114explicitly, and then call it with bytes or string objects respectively.
Georg Brandl116aa622007-08-15 14:28:22 +0000115
116Sometimes, dlls export functions with names which aren't valid Python
Georg Brandl1d837bc2009-12-29 11:24:00 +0000117identifiers, like ``"??2@YAPAXI@Z"``. In this case you have to use
118:func:`getattr` to retrieve the function::
Georg Brandl116aa622007-08-15 14:28:22 +0000119
120 >>> getattr(cdll.msvcrt, "??2@YAPAXI@Z") # doctest: +WINDOWS
121 <_FuncPtr object at 0x...>
122 >>>
123
124On Windows, some dlls export functions not by name but by ordinal. These
125functions can be accessed by indexing the dll object with the ordinal number::
126
127 >>> cdll.kernel32[1] # doctest: +WINDOWS
128 <_FuncPtr object at 0x...>
129 >>> cdll.kernel32[0] # doctest: +WINDOWS
130 Traceback (most recent call last):
131 File "<stdin>", line 1, in ?
132 File "ctypes.py", line 310, in __getitem__
133 func = _StdcallFuncPtr(name, self)
134 AttributeError: function ordinal 0 not found
135 >>>
136
137
138.. _ctypes-calling-functions:
139
140Calling functions
141^^^^^^^^^^^^^^^^^
142
143You can call these functions like any other Python callable. This example uses
144the ``time()`` function, which returns system time in seconds since the Unix
145epoch, and the ``GetModuleHandleA()`` function, which returns a win32 module
146handle.
147
148This example calls both functions with a NULL pointer (``None`` should be used
149as the NULL pointer)::
150
Georg Brandl6911e3c2007-09-04 07:15:32 +0000151 >>> print(libc.time(None)) # doctest: +SKIP
Georg Brandl116aa622007-08-15 14:28:22 +0000152 1150640792
Georg Brandl6911e3c2007-09-04 07:15:32 +0000153 >>> print(hex(windll.kernel32.GetModuleHandleA(None))) # doctest: +WINDOWS
Georg Brandl116aa622007-08-15 14:28:22 +0000154 0x1d000000
155 >>>
156
Georg Brandl1d837bc2009-12-29 11:24:00 +0000157:mod:`ctypes` tries to protect you from calling functions with the wrong number
158of arguments or the wrong calling convention. Unfortunately this only works on
Georg Brandl116aa622007-08-15 14:28:22 +0000159Windows. It does this by examining the stack after the function returns, so
160although an error is raised the function *has* been called::
161
162 >>> windll.kernel32.GetModuleHandleA() # doctest: +WINDOWS
163 Traceback (most recent call last):
164 File "<stdin>", line 1, in ?
165 ValueError: Procedure probably called with not enough arguments (4 bytes missing)
166 >>> windll.kernel32.GetModuleHandleA(0, 0) # doctest: +WINDOWS
167 Traceback (most recent call last):
168 File "<stdin>", line 1, in ?
169 ValueError: Procedure probably called with too many arguments (4 bytes in excess)
170 >>>
171
172The same exception is raised when you call an ``stdcall`` function with the
173``cdecl`` calling convention, or vice versa::
174
175 >>> cdll.kernel32.GetModuleHandleA(None) # doctest: +WINDOWS
176 Traceback (most recent call last):
177 File "<stdin>", line 1, in ?
178 ValueError: Procedure probably called with not enough arguments (4 bytes missing)
179 >>>
180
Georg Brandl8d8f1972009-06-08 13:27:23 +0000181 >>> windll.msvcrt.printf(b"spam") # doctest: +WINDOWS
Georg Brandl116aa622007-08-15 14:28:22 +0000182 Traceback (most recent call last):
183 File "<stdin>", line 1, in ?
184 ValueError: Procedure probably called with too many arguments (4 bytes in excess)
185 >>>
186
187To find out the correct calling convention you have to look into the C header
188file or the documentation for the function you want to call.
189
Georg Brandl8d8f1972009-06-08 13:27:23 +0000190On Windows, :mod:`ctypes` uses win32 structured exception handling to prevent
Georg Brandl116aa622007-08-15 14:28:22 +0000191crashes from general protection faults when functions are called with invalid
192argument values::
193
194 >>> windll.kernel32.GetModuleHandleA(32) # doctest: +WINDOWS
195 Traceback (most recent call last):
196 File "<stdin>", line 1, in ?
Antoine Pitrou442ee032011-10-12 18:53:23 +0200197 OSError: exception: access violation reading 0x00000020
Georg Brandl116aa622007-08-15 14:28:22 +0000198 >>>
199
Georg Brandl1d837bc2009-12-29 11:24:00 +0000200There are, however, enough ways to crash Python with :mod:`ctypes`, so you
Georg Brandlb33c6eb2013-10-06 10:51:01 +0200201should be careful anyway. The :mod:`faulthandler` module can be helpful in
202debugging crashes (e.g. from segmentation faults produced by erroneous C library
203calls).
Georg Brandl116aa622007-08-15 14:28:22 +0000204
Georg Brandl8d8f1972009-06-08 13:27:23 +0000205``None``, integers, bytes objects and (unicode) strings are the only native
Georg Brandl116aa622007-08-15 14:28:22 +0000206Python objects that can directly be used as parameters in these function calls.
Georg Brandl1d837bc2009-12-29 11:24:00 +0000207``None`` is passed as a C ``NULL`` pointer, bytes objects and strings are passed
Georg Brandl60203b42010-10-06 10:11:56 +0000208as pointer to the memory block that contains their data (:c:type:`char *` or
209:c:type:`wchar_t *`). Python integers are passed as the platforms default C
210:c:type:`int` type, their value is masked to fit into the C type.
Georg Brandl116aa622007-08-15 14:28:22 +0000211
212Before we move on calling functions with other parameter types, we have to learn
Georg Brandl8d8f1972009-06-08 13:27:23 +0000213more about :mod:`ctypes` data types.
Georg Brandl116aa622007-08-15 14:28:22 +0000214
215
216.. _ctypes-fundamental-data-types:
217
218Fundamental data types
219^^^^^^^^^^^^^^^^^^^^^^
220
Serhiy Storchakaf47036c2013-12-24 11:04:36 +0200221:mod:`ctypes` defines a number of primitive C compatible data types:
Georg Brandl116aa622007-08-15 14:28:22 +0000222
Georg Brandl60203b42010-10-06 10:11:56 +0000223+----------------------+------------------------------------------+----------------------------+
224| ctypes type | C type | Python type |
225+======================+==========================================+============================+
Georg Brandlecdd63f2011-01-19 20:05:49 +0000226| :class:`c_bool` | :c:type:`_Bool` | bool (1) |
227+----------------------+------------------------------------------+----------------------------+
Georg Brandl60203b42010-10-06 10:11:56 +0000228| :class:`c_char` | :c:type:`char` | 1-character bytes object |
229+----------------------+------------------------------------------+----------------------------+
230| :class:`c_wchar` | :c:type:`wchar_t` | 1-character string |
231+----------------------+------------------------------------------+----------------------------+
232| :class:`c_byte` | :c:type:`char` | int |
233+----------------------+------------------------------------------+----------------------------+
234| :class:`c_ubyte` | :c:type:`unsigned char` | int |
235+----------------------+------------------------------------------+----------------------------+
236| :class:`c_short` | :c:type:`short` | int |
237+----------------------+------------------------------------------+----------------------------+
238| :class:`c_ushort` | :c:type:`unsigned short` | int |
239+----------------------+------------------------------------------+----------------------------+
240| :class:`c_int` | :c:type:`int` | int |
241+----------------------+------------------------------------------+----------------------------+
242| :class:`c_uint` | :c:type:`unsigned int` | int |
243+----------------------+------------------------------------------+----------------------------+
244| :class:`c_long` | :c:type:`long` | int |
245+----------------------+------------------------------------------+----------------------------+
246| :class:`c_ulong` | :c:type:`unsigned long` | int |
247+----------------------+------------------------------------------+----------------------------+
248| :class:`c_longlong` | :c:type:`__int64` or :c:type:`long long` | int |
249+----------------------+------------------------------------------+----------------------------+
250| :class:`c_ulonglong` | :c:type:`unsigned __int64` or | int |
251| | :c:type:`unsigned long long` | |
252+----------------------+------------------------------------------+----------------------------+
Antoine Pitrou52cc7222012-07-12 20:31:50 +0200253| :class:`c_size_t` | :c:type:`size_t` | int |
254+----------------------+------------------------------------------+----------------------------+
255| :class:`c_ssize_t` | :c:type:`ssize_t` or | int |
256| | :c:type:`Py_ssize_t` | |
257+----------------------+------------------------------------------+----------------------------+
Georg Brandl60203b42010-10-06 10:11:56 +0000258| :class:`c_float` | :c:type:`float` | float |
259+----------------------+------------------------------------------+----------------------------+
260| :class:`c_double` | :c:type:`double` | float |
261+----------------------+------------------------------------------+----------------------------+
262| :class:`c_longdouble`| :c:type:`long double` | float |
263+----------------------+------------------------------------------+----------------------------+
264| :class:`c_char_p` | :c:type:`char *` (NUL terminated) | bytes object or ``None`` |
265+----------------------+------------------------------------------+----------------------------+
266| :class:`c_wchar_p` | :c:type:`wchar_t *` (NUL terminated) | string or ``None`` |
267+----------------------+------------------------------------------+----------------------------+
268| :class:`c_void_p` | :c:type:`void *` | int or ``None`` |
269+----------------------+------------------------------------------+----------------------------+
Georg Brandl116aa622007-08-15 14:28:22 +0000270
Georg Brandlecdd63f2011-01-19 20:05:49 +0000271(1)
272 The constructor accepts any object with a truth value.
273
Georg Brandl116aa622007-08-15 14:28:22 +0000274All these types can be created by calling them with an optional initializer of
275the correct type and value::
276
277 >>> c_int()
278 c_long(0)
Georg Brandl8d8f1972009-06-08 13:27:23 +0000279 >>> c_wchar_p("Hello, World")
280 c_wchar_p('Hello, World')
Georg Brandl116aa622007-08-15 14:28:22 +0000281 >>> c_ushort(-3)
282 c_ushort(65533)
283 >>>
284
285Since these types are mutable, their value can also be changed afterwards::
286
287 >>> i = c_int(42)
Georg Brandl6911e3c2007-09-04 07:15:32 +0000288 >>> print(i)
Georg Brandl116aa622007-08-15 14:28:22 +0000289 c_long(42)
Georg Brandl6911e3c2007-09-04 07:15:32 +0000290 >>> print(i.value)
Georg Brandl116aa622007-08-15 14:28:22 +0000291 42
292 >>> i.value = -99
Georg Brandl6911e3c2007-09-04 07:15:32 +0000293 >>> print(i.value)
Georg Brandl116aa622007-08-15 14:28:22 +0000294 -99
295 >>>
296
297Assigning a new value to instances of the pointer types :class:`c_char_p`,
298:class:`c_wchar_p`, and :class:`c_void_p` changes the *memory location* they
299point to, *not the contents* of the memory block (of course not, because Python
Georg Brandl8d8f1972009-06-08 13:27:23 +0000300bytes objects are immutable)::
Georg Brandl116aa622007-08-15 14:28:22 +0000301
302 >>> s = "Hello, World"
Georg Brandl8d8f1972009-06-08 13:27:23 +0000303 >>> c_s = c_wchar_p(s)
Georg Brandl6911e3c2007-09-04 07:15:32 +0000304 >>> print(c_s)
Georg Brandl8d8f1972009-06-08 13:27:23 +0000305 c_wchar_p('Hello, World')
Georg Brandl116aa622007-08-15 14:28:22 +0000306 >>> c_s.value = "Hi, there"
Georg Brandl6911e3c2007-09-04 07:15:32 +0000307 >>> print(c_s)
Georg Brandl8d8f1972009-06-08 13:27:23 +0000308 c_wchar_p('Hi, there')
309 >>> print(s) # first object is unchanged
Georg Brandl116aa622007-08-15 14:28:22 +0000310 Hello, World
311 >>>
312
313You should be careful, however, not to pass them to functions expecting pointers
314to mutable memory. If you need mutable memory blocks, ctypes has a
Georg Brandl8d8f1972009-06-08 13:27:23 +0000315:func:`create_string_buffer` function which creates these in various ways. The
Georg Brandl116aa622007-08-15 14:28:22 +0000316current memory block contents can be accessed (or changed) with the ``raw``
317property; if you want to access it as NUL terminated string, use the ``value``
318property::
319
320 >>> from ctypes import *
Georg Brandl8d8f1972009-06-08 13:27:23 +0000321 >>> p = create_string_buffer(3) # create a 3 byte buffer, initialized to NUL bytes
Georg Brandl6911e3c2007-09-04 07:15:32 +0000322 >>> print(sizeof(p), repr(p.raw))
Georg Brandl8d8f1972009-06-08 13:27:23 +0000323 3 b'\x00\x00\x00'
324 >>> p = create_string_buffer(b"Hello") # create a buffer containing a NUL terminated string
Georg Brandl6911e3c2007-09-04 07:15:32 +0000325 >>> print(sizeof(p), repr(p.raw))
Georg Brandl8d8f1972009-06-08 13:27:23 +0000326 6 b'Hello\x00'
Georg Brandl6911e3c2007-09-04 07:15:32 +0000327 >>> print(repr(p.value))
Georg Brandl8d8f1972009-06-08 13:27:23 +0000328 b'Hello'
329 >>> p = create_string_buffer(b"Hello", 10) # create a 10 byte buffer
Georg Brandl6911e3c2007-09-04 07:15:32 +0000330 >>> print(sizeof(p), repr(p.raw))
Georg Brandl8d8f1972009-06-08 13:27:23 +0000331 10 b'Hello\x00\x00\x00\x00\x00'
332 >>> p.value = b"Hi"
Georg Brandl6911e3c2007-09-04 07:15:32 +0000333 >>> print(sizeof(p), repr(p.raw))
Georg Brandl8d8f1972009-06-08 13:27:23 +0000334 10 b'Hi\x00lo\x00\x00\x00\x00\x00'
Georg Brandl116aa622007-08-15 14:28:22 +0000335 >>>
336
Georg Brandl1d837bc2009-12-29 11:24:00 +0000337The :func:`create_string_buffer` function replaces the :func:`c_buffer` function
338(which is still available as an alias), as well as the :func:`c_string` function
Georg Brandl8d8f1972009-06-08 13:27:23 +0000339from earlier ctypes releases. To create a mutable memory block containing
Georg Brandl60203b42010-10-06 10:11:56 +0000340unicode characters of the C type :c:type:`wchar_t` use the
Georg Brandl8d8f1972009-06-08 13:27:23 +0000341:func:`create_unicode_buffer` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000342
343
344.. _ctypes-calling-functions-continued:
345
346Calling functions, continued
347^^^^^^^^^^^^^^^^^^^^^^^^^^^^
348
349Note that printf prints to the real standard output channel, *not* to
Georg Brandl8d8f1972009-06-08 13:27:23 +0000350:data:`sys.stdout`, so these examples will only work at the console prompt, not
351from within *IDLE* or *PythonWin*::
Georg Brandl116aa622007-08-15 14:28:22 +0000352
353 >>> printf = libc.printf
Georg Brandl8d8f1972009-06-08 13:27:23 +0000354 >>> printf(b"Hello, %s\n", b"World!")
Georg Brandl116aa622007-08-15 14:28:22 +0000355 Hello, World!
356 14
Georg Brandl8d8f1972009-06-08 13:27:23 +0000357 >>> printf(b"Hello, %S\n", "World!")
Georg Brandl116aa622007-08-15 14:28:22 +0000358 Hello, World!
Georg Brandl8a1e4c42009-05-25 21:13:36 +0000359 14
Georg Brandl8d8f1972009-06-08 13:27:23 +0000360 >>> printf(b"%d bottles of beer\n", 42)
Georg Brandl116aa622007-08-15 14:28:22 +0000361 42 bottles of beer
362 19
Georg Brandl8d8f1972009-06-08 13:27:23 +0000363 >>> printf(b"%f bottles of beer\n", 42.5)
Georg Brandl116aa622007-08-15 14:28:22 +0000364 Traceback (most recent call last):
365 File "<stdin>", line 1, in ?
366 ArgumentError: argument 2: exceptions.TypeError: Don't know how to convert parameter 2
367 >>>
368
369As has been mentioned before, all Python types except integers, strings, and
Georg Brandl8d8f1972009-06-08 13:27:23 +0000370bytes objects have to be wrapped in their corresponding :mod:`ctypes` type, so
Georg Brandl116aa622007-08-15 14:28:22 +0000371that they can be converted to the required C data type::
372
Georg Brandl8d8f1972009-06-08 13:27:23 +0000373 >>> printf(b"An int %d, a double %f\n", 1234, c_double(3.14))
Georg Brandl8a1e4c42009-05-25 21:13:36 +0000374 An int 1234, a double 3.140000
Georg Brandl116aa622007-08-15 14:28:22 +0000375 31
376 >>>
377
378
379.. _ctypes-calling-functions-with-own-custom-data-types:
380
381Calling functions with your own custom data types
382^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
383
Georg Brandl1d837bc2009-12-29 11:24:00 +0000384You can also customize :mod:`ctypes` argument conversion to allow instances of
385your own classes be used as function arguments. :mod:`ctypes` looks for an
386:attr:`_as_parameter_` attribute and uses this as the function argument. Of
Georg Brandl8d8f1972009-06-08 13:27:23 +0000387course, it must be one of integer, string, or bytes::
Georg Brandl116aa622007-08-15 14:28:22 +0000388
Éric Araujo28053fb2010-11-22 03:09:19 +0000389 >>> class Bottles:
Georg Brandl116aa622007-08-15 14:28:22 +0000390 ... def __init__(self, number):
391 ... self._as_parameter_ = number
392 ...
393 >>> bottles = Bottles(42)
Georg Brandl8d8f1972009-06-08 13:27:23 +0000394 >>> printf(b"%d bottles of beer\n", bottles)
Georg Brandl116aa622007-08-15 14:28:22 +0000395 42 bottles of beer
396 19
397 >>>
398
399If you don't want to store the instance's data in the :attr:`_as_parameter_`
Georg Brandl8d8f1972009-06-08 13:27:23 +0000400instance variable, you could define a :class:`property` which makes the
401attribute available on request.
Georg Brandl116aa622007-08-15 14:28:22 +0000402
403
404.. _ctypes-specifying-required-argument-types:
405
406Specifying the required argument types (function prototypes)
407^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
408
409It is possible to specify the required argument types of functions exported from
410DLLs by setting the :attr:`argtypes` attribute.
411
412:attr:`argtypes` must be a sequence of C data types (the ``printf`` function is
413probably not a good example here, because it takes a variable number and
414different types of parameters depending on the format string, on the other hand
415this is quite handy to experiment with this feature)::
416
417 >>> printf.argtypes = [c_char_p, c_char_p, c_int, c_double]
Georg Brandl8d8f1972009-06-08 13:27:23 +0000418 >>> printf(b"String '%s', Int %d, Double %f\n", b"Hi", 10, 2.2)
Georg Brandl116aa622007-08-15 14:28:22 +0000419 String 'Hi', Int 10, Double 2.200000
420 37
421 >>>
422
423Specifying a format protects against incompatible argument types (just as a
424prototype for a C function), and tries to convert the arguments to valid types::
425
Georg Brandl8d8f1972009-06-08 13:27:23 +0000426 >>> printf(b"%d %d %d", 1, 2, 3)
Georg Brandl116aa622007-08-15 14:28:22 +0000427 Traceback (most recent call last):
428 File "<stdin>", line 1, in ?
429 ArgumentError: argument 2: exceptions.TypeError: wrong type
Georg Brandl8d8f1972009-06-08 13:27:23 +0000430 >>> printf(b"%s %d %f\n", b"X", 2, 3)
Georg Brandl8a1e4c42009-05-25 21:13:36 +0000431 X 2 3.000000
432 13
Georg Brandl116aa622007-08-15 14:28:22 +0000433 >>>
434
435If you have defined your own classes which you pass to function calls, you have
436to implement a :meth:`from_param` class method for them to be able to use them
437in the :attr:`argtypes` sequence. The :meth:`from_param` class method receives
438the Python object passed to the function call, it should do a typecheck or
439whatever is needed to make sure this object is acceptable, and then return the
Thomas Heller2fadaa22008-06-16 19:56:33 +0000440object itself, its :attr:`_as_parameter_` attribute, or whatever you want to
Georg Brandl116aa622007-08-15 14:28:22 +0000441pass as the C function argument in this case. Again, the result should be an
Georg Brandl8d8f1972009-06-08 13:27:23 +0000442integer, string, bytes, a :mod:`ctypes` instance, or an object with an
Georg Brandl116aa622007-08-15 14:28:22 +0000443:attr:`_as_parameter_` attribute.
444
445
446.. _ctypes-return-types:
447
448Return types
449^^^^^^^^^^^^
450
Georg Brandl60203b42010-10-06 10:11:56 +0000451By default functions are assumed to return the C :c:type:`int` type. Other
Georg Brandl1d837bc2009-12-29 11:24:00 +0000452return types can be specified by setting the :attr:`restype` attribute of the
453function object.
Georg Brandl116aa622007-08-15 14:28:22 +0000454
455Here is a more advanced example, it uses the ``strchr`` function, which expects
456a string pointer and a char, and returns a pointer to a string::
457
458 >>> strchr = libc.strchr
Georg Brandl8d8f1972009-06-08 13:27:23 +0000459 >>> strchr(b"abcdef", ord("d")) # doctest: +SKIP
Georg Brandl116aa622007-08-15 14:28:22 +0000460 8059983
Georg Brandl8d8f1972009-06-08 13:27:23 +0000461 >>> strchr.restype = c_char_p # c_char_p is a pointer to a string
462 >>> strchr(b"abcdef", ord("d"))
463 b'def'
464 >>> print(strchr(b"abcdef", ord("x")))
Georg Brandl116aa622007-08-15 14:28:22 +0000465 None
466 >>>
467
468If you want to avoid the ``ord("x")`` calls above, you can set the
469:attr:`argtypes` attribute, and the second argument will be converted from a
Georg Brandl8d8f1972009-06-08 13:27:23 +0000470single character Python bytes object into a C char::
Georg Brandl116aa622007-08-15 14:28:22 +0000471
472 >>> strchr.restype = c_char_p
473 >>> strchr.argtypes = [c_char_p, c_char]
Georg Brandl8d8f1972009-06-08 13:27:23 +0000474 >>> strchr(b"abcdef", b"d")
Georg Brandl116aa622007-08-15 14:28:22 +0000475 'def'
Georg Brandl8d8f1972009-06-08 13:27:23 +0000476 >>> strchr(b"abcdef", b"def")
Georg Brandl116aa622007-08-15 14:28:22 +0000477 Traceback (most recent call last):
478 File "<stdin>", line 1, in ?
479 ArgumentError: argument 2: exceptions.TypeError: one character string expected
Georg Brandl8d8f1972009-06-08 13:27:23 +0000480 >>> print(strchr(b"abcdef", b"x"))
Georg Brandl116aa622007-08-15 14:28:22 +0000481 None
Georg Brandl8d8f1972009-06-08 13:27:23 +0000482 >>> strchr(b"abcdef", b"d")
Georg Brandl116aa622007-08-15 14:28:22 +0000483 'def'
484 >>>
485
486You can also use a callable Python object (a function or a class for example) as
487the :attr:`restype` attribute, if the foreign function returns an integer. The
Georg Brandl1d837bc2009-12-29 11:24:00 +0000488callable will be called with the *integer* the C function returns, and the
Georg Brandl116aa622007-08-15 14:28:22 +0000489result of this call will be used as the result of your function call. This is
490useful to check for error return values and automatically raise an exception::
491
492 >>> GetModuleHandle = windll.kernel32.GetModuleHandleA # doctest: +WINDOWS
493 >>> def ValidHandle(value):
494 ... if value == 0:
495 ... raise WinError()
496 ... return value
497 ...
498 >>>
499 >>> GetModuleHandle.restype = ValidHandle # doctest: +WINDOWS
500 >>> GetModuleHandle(None) # doctest: +WINDOWS
501 486539264
502 >>> GetModuleHandle("something silly") # doctest: +WINDOWS
503 Traceback (most recent call last):
504 File "<stdin>", line 1, in ?
505 File "<stdin>", line 3, in ValidHandle
Antoine Pitrou442ee032011-10-12 18:53:23 +0200506 OSError: [Errno 126] The specified module could not be found.
Georg Brandl116aa622007-08-15 14:28:22 +0000507 >>>
508
509``WinError`` is a function which will call Windows ``FormatMessage()`` api to
510get the string representation of an error code, and *returns* an exception.
511``WinError`` takes an optional error code parameter, if no one is used, it calls
512:func:`GetLastError` to retrieve it.
513
514Please note that a much more powerful error checking mechanism is available
515through the :attr:`errcheck` attribute; see the reference manual for details.
516
517
518.. _ctypes-passing-pointers:
519
520Passing pointers (or: passing parameters by reference)
521^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
522
523Sometimes a C api function expects a *pointer* to a data type as parameter,
524probably to write into the corresponding location, or if the data is too large
525to be passed by value. This is also known as *passing parameters by reference*.
526
Georg Brandl8d8f1972009-06-08 13:27:23 +0000527:mod:`ctypes` exports the :func:`byref` function which is used to pass parameters
528by reference. The same effect can be achieved with the :func:`pointer` function,
529although :func:`pointer` does a lot more work since it constructs a real pointer
Georg Brandl116aa622007-08-15 14:28:22 +0000530object, so it is faster to use :func:`byref` if you don't need the pointer
531object in Python itself::
532
533 >>> i = c_int()
534 >>> f = c_float()
Georg Brandl8d8f1972009-06-08 13:27:23 +0000535 >>> s = create_string_buffer(b'\000' * 32)
Georg Brandl6911e3c2007-09-04 07:15:32 +0000536 >>> print(i.value, f.value, repr(s.value))
Georg Brandl8d8f1972009-06-08 13:27:23 +0000537 0 0.0 b''
538 >>> libc.sscanf(b"1 3.14 Hello", b"%d %f %s",
Georg Brandl116aa622007-08-15 14:28:22 +0000539 ... byref(i), byref(f), s)
540 3
Georg Brandl6911e3c2007-09-04 07:15:32 +0000541 >>> print(i.value, f.value, repr(s.value))
Georg Brandl8d8f1972009-06-08 13:27:23 +0000542 1 3.1400001049 b'Hello'
Georg Brandl116aa622007-08-15 14:28:22 +0000543 >>>
544
545
546.. _ctypes-structures-unions:
547
548Structures and unions
549^^^^^^^^^^^^^^^^^^^^^
550
551Structures and unions must derive from the :class:`Structure` and :class:`Union`
Georg Brandl8d8f1972009-06-08 13:27:23 +0000552base classes which are defined in the :mod:`ctypes` module. Each subclass must
Georg Brandl116aa622007-08-15 14:28:22 +0000553define a :attr:`_fields_` attribute. :attr:`_fields_` must be a list of
554*2-tuples*, containing a *field name* and a *field type*.
555
Georg Brandl8d8f1972009-06-08 13:27:23 +0000556The field type must be a :mod:`ctypes` type like :class:`c_int`, or any other
557derived :mod:`ctypes` type: structure, union, array, pointer.
Georg Brandl116aa622007-08-15 14:28:22 +0000558
559Here is a simple example of a POINT structure, which contains two integers named
Georg Brandl8d8f1972009-06-08 13:27:23 +0000560*x* and *y*, and also shows how to initialize a structure in the constructor::
Georg Brandl116aa622007-08-15 14:28:22 +0000561
562 >>> from ctypes import *
563 >>> class POINT(Structure):
564 ... _fields_ = [("x", c_int),
565 ... ("y", c_int)]
566 ...
567 >>> point = POINT(10, 20)
Georg Brandl6911e3c2007-09-04 07:15:32 +0000568 >>> print(point.x, point.y)
Georg Brandl116aa622007-08-15 14:28:22 +0000569 10 20
570 >>> point = POINT(y=5)
Georg Brandl6911e3c2007-09-04 07:15:32 +0000571 >>> print(point.x, point.y)
Georg Brandl116aa622007-08-15 14:28:22 +0000572 0 5
573 >>> POINT(1, 2, 3)
574 Traceback (most recent call last):
575 File "<stdin>", line 1, in ?
576 ValueError: too many initializers
577 >>>
578
Eli Benderskyf9164e12013-03-06 06:48:57 -0800579You can, however, build much more complicated structures. A structure can
580itself contain other structures by using a structure as a field type.
Georg Brandl116aa622007-08-15 14:28:22 +0000581
Georg Brandl1d837bc2009-12-29 11:24:00 +0000582Here is a RECT structure which contains two POINTs named *upperleft* and
583*lowerright*::
Georg Brandl116aa622007-08-15 14:28:22 +0000584
585 >>> class RECT(Structure):
586 ... _fields_ = [("upperleft", POINT),
587 ... ("lowerright", POINT)]
588 ...
589 >>> rc = RECT(point)
Georg Brandl6911e3c2007-09-04 07:15:32 +0000590 >>> print(rc.upperleft.x, rc.upperleft.y)
Georg Brandl116aa622007-08-15 14:28:22 +0000591 0 5
Georg Brandl6911e3c2007-09-04 07:15:32 +0000592 >>> print(rc.lowerright.x, rc.lowerright.y)
Georg Brandl116aa622007-08-15 14:28:22 +0000593 0 0
594 >>>
595
596Nested structures can also be initialized in the constructor in several ways::
597
598 >>> r = RECT(POINT(1, 2), POINT(3, 4))
599 >>> r = RECT((1, 2), (3, 4))
600
Georg Brandl9afde1c2007-11-01 20:32:30 +0000601Field :term:`descriptor`\s can be retrieved from the *class*, they are useful
602for debugging because they can provide useful information::
Georg Brandl116aa622007-08-15 14:28:22 +0000603
Georg Brandl6911e3c2007-09-04 07:15:32 +0000604 >>> print(POINT.x)
Georg Brandl116aa622007-08-15 14:28:22 +0000605 <Field type=c_long, ofs=0, size=4>
Georg Brandl6911e3c2007-09-04 07:15:32 +0000606 >>> print(POINT.y)
Georg Brandl116aa622007-08-15 14:28:22 +0000607 <Field type=c_long, ofs=4, size=4>
608 >>>
609
610
611.. _ctypes-structureunion-alignment-byte-order:
612
Eli Bendersky490cf442013-03-09 05:54:00 -0800613.. warning::
614
615 :mod:`ctypes` does not support passing unions or structures with bit-fields
616 to functions by value. While this may work on 32-bit x86, it's not
617 guaranteed by the library to work in the general case. Unions and
618 structures with bit-fields should always be passed to functions by pointer.
619
Georg Brandl116aa622007-08-15 14:28:22 +0000620Structure/union alignment and byte order
621^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
622
623By default, Structure and Union fields are aligned in the same way the C
Thomas Woutersed03b412007-08-28 21:37:11 +0000624compiler does it. It is possible to override this behavior be specifying a
Georg Brandl116aa622007-08-15 14:28:22 +0000625:attr:`_pack_` class attribute in the subclass definition. This must be set to a
626positive integer and specifies the maximum alignment for the fields. This is
627what ``#pragma pack(n)`` also does in MSVC.
628
Georg Brandl8d8f1972009-06-08 13:27:23 +0000629:mod:`ctypes` uses the native byte order for Structures and Unions. To build
Georg Brandl116aa622007-08-15 14:28:22 +0000630structures with non-native byte order, you can use one of the
Georg Brandl1d837bc2009-12-29 11:24:00 +0000631:class:`BigEndianStructure`, :class:`LittleEndianStructure`,
632:class:`BigEndianUnion`, and :class:`LittleEndianUnion` base classes. These
633classes cannot contain pointer fields.
Georg Brandl116aa622007-08-15 14:28:22 +0000634
635
636.. _ctypes-bit-fields-in-structures-unions:
637
638Bit fields in structures and unions
639^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
640
641It is possible to create structures and unions containing bit fields. Bit fields
642are only possible for integer fields, the bit width is specified as the third
643item in the :attr:`_fields_` tuples::
644
645 >>> class Int(Structure):
646 ... _fields_ = [("first_16", c_int, 16),
647 ... ("second_16", c_int, 16)]
648 ...
Georg Brandl6911e3c2007-09-04 07:15:32 +0000649 >>> print(Int.first_16)
Georg Brandl116aa622007-08-15 14:28:22 +0000650 <Field type=c_long, ofs=0:0, bits=16>
Georg Brandl6911e3c2007-09-04 07:15:32 +0000651 >>> print(Int.second_16)
Georg Brandl116aa622007-08-15 14:28:22 +0000652 <Field type=c_long, ofs=0:16, bits=16>
653 >>>
654
655
656.. _ctypes-arrays:
657
658Arrays
659^^^^^^
660
661Arrays are sequences, containing a fixed number of instances of the same type.
662
663The recommended way to create array types is by multiplying a data type with a
664positive integer::
665
666 TenPointsArrayType = POINT * 10
667
Thomas Woutersed03b412007-08-28 21:37:11 +0000668Here is an example of an somewhat artificial data type, a structure containing 4
Georg Brandl116aa622007-08-15 14:28:22 +0000669POINTs among other stuff::
670
671 >>> from ctypes import *
672 >>> class POINT(Structure):
673 ... _fields_ = ("x", c_int), ("y", c_int)
674 ...
675 >>> class MyStruct(Structure):
676 ... _fields_ = [("a", c_int),
677 ... ("b", c_float),
678 ... ("point_array", POINT * 4)]
679 >>>
Georg Brandl6911e3c2007-09-04 07:15:32 +0000680 >>> print(len(MyStruct().point_array))
Georg Brandl116aa622007-08-15 14:28:22 +0000681 4
682 >>>
683
684Instances are created in the usual way, by calling the class::
685
686 arr = TenPointsArrayType()
687 for pt in arr:
Georg Brandl6911e3c2007-09-04 07:15:32 +0000688 print(pt.x, pt.y)
Georg Brandl116aa622007-08-15 14:28:22 +0000689
690The above code print a series of ``0 0`` lines, because the array contents is
691initialized to zeros.
692
693Initializers of the correct type can also be specified::
694
695 >>> from ctypes import *
696 >>> TenIntegers = c_int * 10
697 >>> ii = TenIntegers(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Georg Brandl6911e3c2007-09-04 07:15:32 +0000698 >>> print(ii)
Georg Brandl116aa622007-08-15 14:28:22 +0000699 <c_long_Array_10 object at 0x...>
Georg Brandl6911e3c2007-09-04 07:15:32 +0000700 >>> for i in ii: print(i, end=" ")
Georg Brandl116aa622007-08-15 14:28:22 +0000701 ...
702 1 2 3 4 5 6 7 8 9 10
703 >>>
704
705
706.. _ctypes-pointers:
707
708Pointers
709^^^^^^^^
710
Georg Brandl8d8f1972009-06-08 13:27:23 +0000711Pointer instances are created by calling the :func:`pointer` function on a
712:mod:`ctypes` type::
Georg Brandl116aa622007-08-15 14:28:22 +0000713
714 >>> from ctypes import *
715 >>> i = c_int(42)
716 >>> pi = pointer(i)
717 >>>
718
Georg Brandl1d837bc2009-12-29 11:24:00 +0000719Pointer instances have a :attr:`contents` attribute which returns the object to
Georg Brandl116aa622007-08-15 14:28:22 +0000720which the pointer points, the ``i`` object above::
721
722 >>> pi.contents
723 c_long(42)
724 >>>
725
Georg Brandl8d8f1972009-06-08 13:27:23 +0000726Note that :mod:`ctypes` does not have OOR (original object return), it constructs a
Georg Brandl116aa622007-08-15 14:28:22 +0000727new, equivalent object each time you retrieve an attribute::
728
729 >>> pi.contents is i
730 False
731 >>> pi.contents is pi.contents
732 False
733 >>>
734
735Assigning another :class:`c_int` instance to the pointer's contents attribute
736would cause the pointer to point to the memory location where this is stored::
737
738 >>> i = c_int(99)
739 >>> pi.contents = i
740 >>> pi.contents
741 c_long(99)
742 >>>
743
Georg Brandl1d837bc2009-12-29 11:24:00 +0000744.. XXX Document dereferencing pointers, and that it is preferred over the
745 .contents attribute.
Thomas Heller2fadaa22008-06-16 19:56:33 +0000746
Georg Brandl116aa622007-08-15 14:28:22 +0000747Pointer instances can also be indexed with integers::
748
749 >>> pi[0]
750 99
751 >>>
752
753Assigning to an integer index changes the pointed to value::
754
Georg Brandl6911e3c2007-09-04 07:15:32 +0000755 >>> print(i)
Georg Brandl116aa622007-08-15 14:28:22 +0000756 c_long(99)
757 >>> pi[0] = 22
Georg Brandl6911e3c2007-09-04 07:15:32 +0000758 >>> print(i)
Georg Brandl116aa622007-08-15 14:28:22 +0000759 c_long(22)
760 >>>
761
762It is also possible to use indexes different from 0, but you must know what
763you're doing, just as in C: You can access or change arbitrary memory locations.
764Generally you only use this feature if you receive a pointer from a C function,
765and you *know* that the pointer actually points to an array instead of a single
766item.
767
Georg Brandl8d8f1972009-06-08 13:27:23 +0000768Behind the scenes, the :func:`pointer` function does more than simply create
769pointer instances, it has to create pointer *types* first. This is done with the
770:func:`POINTER` function, which accepts any :mod:`ctypes` type, and returns a
771new type::
Georg Brandl116aa622007-08-15 14:28:22 +0000772
773 >>> PI = POINTER(c_int)
774 >>> PI
775 <class 'ctypes.LP_c_long'>
776 >>> PI(42)
777 Traceback (most recent call last):
778 File "<stdin>", line 1, in ?
779 TypeError: expected c_long instead of int
780 >>> PI(c_int(42))
781 <ctypes.LP_c_long object at 0x...>
782 >>>
783
784Calling the pointer type without an argument creates a ``NULL`` pointer.
785``NULL`` pointers have a ``False`` boolean value::
786
787 >>> null_ptr = POINTER(c_int)()
Georg Brandl6911e3c2007-09-04 07:15:32 +0000788 >>> print(bool(null_ptr))
Georg Brandl116aa622007-08-15 14:28:22 +0000789 False
790 >>>
791
Georg Brandl8d8f1972009-06-08 13:27:23 +0000792:mod:`ctypes` checks for ``NULL`` when dereferencing pointers (but dereferencing
Thomas Heller2fadaa22008-06-16 19:56:33 +0000793invalid non-\ ``NULL`` pointers would crash Python)::
Georg Brandl116aa622007-08-15 14:28:22 +0000794
795 >>> null_ptr[0]
796 Traceback (most recent call last):
797 ....
798 ValueError: NULL pointer access
799 >>>
800
801 >>> null_ptr[0] = 1234
802 Traceback (most recent call last):
803 ....
804 ValueError: NULL pointer access
805 >>>
806
807
808.. _ctypes-type-conversions:
809
810Type conversions
811^^^^^^^^^^^^^^^^
812
813Usually, ctypes does strict type checking. This means, if you have
814``POINTER(c_int)`` in the :attr:`argtypes` list of a function or as the type of
815a member field in a structure definition, only instances of exactly the same
816type are accepted. There are some exceptions to this rule, where ctypes accepts
817other objects. For example, you can pass compatible array instances instead of
818pointer types. So, for ``POINTER(c_int)``, ctypes accepts an array of c_int::
819
820 >>> class Bar(Structure):
821 ... _fields_ = [("count", c_int), ("values", POINTER(c_int))]
822 ...
823 >>> bar = Bar()
824 >>> bar.values = (c_int * 3)(1, 2, 3)
825 >>> bar.count = 3
826 >>> for i in range(bar.count):
Georg Brandl6911e3c2007-09-04 07:15:32 +0000827 ... print(bar.values[i])
Georg Brandl116aa622007-08-15 14:28:22 +0000828 ...
829 1
830 2
831 3
832 >>>
833
Eli Benderskyf81de8d2013-03-08 05:31:54 -0800834In addition, if a function argument is explicitly declared to be a pointer type
835(such as ``POINTER(c_int)``) in :attr:`argtypes`, an object of the pointed
836type (``c_int`` in this case) can be passed to the function. ctypes will apply
837the required :func:`byref` conversion in this case automatically.
838
Georg Brandl116aa622007-08-15 14:28:22 +0000839To set a POINTER type field to ``NULL``, you can assign ``None``::
840
841 >>> bar.values = None
842 >>>
843
Thomas Heller2fadaa22008-06-16 19:56:33 +0000844.. XXX list other conversions...
Georg Brandl116aa622007-08-15 14:28:22 +0000845
Georg Brandl8d8f1972009-06-08 13:27:23 +0000846Sometimes you have instances of incompatible types. In C, you can cast one type
847into another type. :mod:`ctypes` provides a :func:`cast` function which can be
Georg Brandl116aa622007-08-15 14:28:22 +0000848used in the same way. The ``Bar`` structure defined above accepts
849``POINTER(c_int)`` pointers or :class:`c_int` arrays for its ``values`` field,
850but not instances of other types::
851
852 >>> bar.values = (c_byte * 4)()
853 Traceback (most recent call last):
854 File "<stdin>", line 1, in ?
855 TypeError: incompatible types, c_byte_Array_4 instance instead of LP_c_long instance
856 >>>
857
Georg Brandl8d8f1972009-06-08 13:27:23 +0000858For these cases, the :func:`cast` function is handy.
Georg Brandl116aa622007-08-15 14:28:22 +0000859
Georg Brandl8d8f1972009-06-08 13:27:23 +0000860The :func:`cast` function can be used to cast a ctypes instance into a pointer
861to a different ctypes data type. :func:`cast` takes two parameters, a ctypes
862object that is or can be converted to a pointer of some kind, and a ctypes
863pointer type. It returns an instance of the second argument, which references
864the same memory block as the first argument::
Georg Brandl116aa622007-08-15 14:28:22 +0000865
866 >>> a = (c_byte * 4)()
867 >>> cast(a, POINTER(c_int))
868 <ctypes.LP_c_long object at ...>
869 >>>
870
Georg Brandl8d8f1972009-06-08 13:27:23 +0000871So, :func:`cast` can be used to assign to the ``values`` field of ``Bar`` the
Georg Brandl116aa622007-08-15 14:28:22 +0000872structure::
873
874 >>> bar = Bar()
875 >>> bar.values = cast((c_byte * 4)(), POINTER(c_int))
Georg Brandl6911e3c2007-09-04 07:15:32 +0000876 >>> print(bar.values[0])
Georg Brandl116aa622007-08-15 14:28:22 +0000877 0
878 >>>
879
880
881.. _ctypes-incomplete-types:
882
883Incomplete Types
884^^^^^^^^^^^^^^^^
885
886*Incomplete Types* are structures, unions or arrays whose members are not yet
887specified. In C, they are specified by forward declarations, which are defined
888later::
889
890 struct cell; /* forward declaration */
891
Sandro Tosi692dba22011-08-02 16:17:14 +0200892 struct cell {
Georg Brandl116aa622007-08-15 14:28:22 +0000893 char *name;
894 struct cell *next;
Sandro Tosi692dba22011-08-02 16:17:14 +0200895 };
Georg Brandl116aa622007-08-15 14:28:22 +0000896
897The straightforward translation into ctypes code would be this, but it does not
898work::
899
900 >>> class cell(Structure):
901 ... _fields_ = [("name", c_char_p),
902 ... ("next", POINTER(cell))]
903 ...
904 Traceback (most recent call last):
905 File "<stdin>", line 1, in ?
906 File "<stdin>", line 2, in cell
907 NameError: name 'cell' is not defined
908 >>>
909
910because the new ``class cell`` is not available in the class statement itself.
Georg Brandl8d8f1972009-06-08 13:27:23 +0000911In :mod:`ctypes`, we can define the ``cell`` class and set the :attr:`_fields_`
Georg Brandl116aa622007-08-15 14:28:22 +0000912attribute later, after the class statement::
913
914 >>> from ctypes import *
915 >>> class cell(Structure):
916 ... pass
917 ...
918 >>> cell._fields_ = [("name", c_char_p),
919 ... ("next", POINTER(cell))]
920 >>>
921
922Lets try it. We create two instances of ``cell``, and let them point to each
923other, and finally follow the pointer chain a few times::
924
925 >>> c1 = cell()
926 >>> c1.name = "foo"
927 >>> c2 = cell()
928 >>> c2.name = "bar"
929 >>> c1.next = pointer(c2)
930 >>> c2.next = pointer(c1)
931 >>> p = c1
932 >>> for i in range(8):
Georg Brandl6911e3c2007-09-04 07:15:32 +0000933 ... print(p.name, end=" ")
Georg Brandl116aa622007-08-15 14:28:22 +0000934 ... p = p.next[0]
935 ...
936 foo bar foo bar foo bar foo bar
Benjamin Peterson3e4f0552008-09-02 00:31:15 +0000937 >>>
Georg Brandl116aa622007-08-15 14:28:22 +0000938
939
940.. _ctypes-callback-functions:
941
942Callback functions
943^^^^^^^^^^^^^^^^^^
944
Georg Brandl8d8f1972009-06-08 13:27:23 +0000945:mod:`ctypes` allows to create C callable function pointers from Python callables.
Georg Brandl116aa622007-08-15 14:28:22 +0000946These are sometimes called *callback functions*.
947
Eli Bendersky2a1e74a2012-03-16 09:17:43 +0200948First, you must create a class for the callback function. The class knows the
Georg Brandl116aa622007-08-15 14:28:22 +0000949calling convention, the return type, and the number and types of arguments this
950function will receive.
951
Eli Bendersky2a1e74a2012-03-16 09:17:43 +0200952The :func:`CFUNCTYPE` factory function creates types for callback functions
953using the ``cdecl`` calling convention. On Windows, the :func:`WINFUNCTYPE`
954factory function creates types for callback functions using the ``stdcall``
955calling convention.
Georg Brandl116aa622007-08-15 14:28:22 +0000956
957Both of these factory functions are called with the result type as first
958argument, and the callback functions expected argument types as the remaining
959arguments.
960
Georg Brandl8d8f1972009-06-08 13:27:23 +0000961I will present an example here which uses the standard C library's
Eli Bendersky2a1e74a2012-03-16 09:17:43 +0200962:c:func:`qsort` function, that is used to sort items with the help of a callback
Georg Brandl60203b42010-10-06 10:11:56 +0000963function. :c:func:`qsort` will be used to sort an array of integers::
Georg Brandl116aa622007-08-15 14:28:22 +0000964
965 >>> IntArray5 = c_int * 5
966 >>> ia = IntArray5(5, 1, 7, 33, 99)
967 >>> qsort = libc.qsort
968 >>> qsort.restype = None
969 >>>
970
971:func:`qsort` must be called with a pointer to the data to sort, the number of
972items in the data array, the size of one item, and a pointer to the comparison
973function, the callback. The callback will then be called with two pointers to
974items, and it must return a negative integer if the first item is smaller than
Eli Bendersky2a1e74a2012-03-16 09:17:43 +0200975the second, a zero if they are equal, and a positive integer otherwise.
Georg Brandl116aa622007-08-15 14:28:22 +0000976
977So our callback function receives pointers to integers, and must return an
978integer. First we create the ``type`` for the callback function::
979
980 >>> CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))
981 >>>
982
Eli Bendersky2a1e74a2012-03-16 09:17:43 +0200983To get started, here is a simple callback that shows the values it gets
984passed::
Georg Brandl116aa622007-08-15 14:28:22 +0000985
986 >>> def py_cmp_func(a, b):
Georg Brandl6911e3c2007-09-04 07:15:32 +0000987 ... print("py_cmp_func", a[0], b[0])
Georg Brandl116aa622007-08-15 14:28:22 +0000988 ... return 0
989 ...
990 >>> cmp_func = CMPFUNC(py_cmp_func)
991 >>>
992
Eli Bendersky2a1e74a2012-03-16 09:17:43 +0200993The result::
Georg Brandl116aa622007-08-15 14:28:22 +0000994
995 >>> qsort(ia, len(ia), sizeof(c_int), cmp_func) # doctest: +LINUX
996 py_cmp_func 5 1
997 py_cmp_func 33 99
998 py_cmp_func 7 33
999 py_cmp_func 5 7
1000 py_cmp_func 1 7
1001 >>>
1002
Eli Bendersky2a1e74a2012-03-16 09:17:43 +02001003Now we can actually compare the two items and return a useful result::
Georg Brandl116aa622007-08-15 14:28:22 +00001004
1005 >>> def py_cmp_func(a, b):
Georg Brandl6911e3c2007-09-04 07:15:32 +00001006 ... print("py_cmp_func", a[0], b[0])
Georg Brandl116aa622007-08-15 14:28:22 +00001007 ... return a[0] - b[0]
1008 ...
1009 >>>
Georg Brandl116aa622007-08-15 14:28:22 +00001010 >>> qsort(ia, len(ia), sizeof(c_int), CMPFUNC(py_cmp_func)) # doctest: +LINUX
1011 py_cmp_func 5 1
1012 py_cmp_func 33 99
1013 py_cmp_func 7 33
1014 py_cmp_func 1 7
1015 py_cmp_func 5 7
1016 >>>
1017
Georg Brandl116aa622007-08-15 14:28:22 +00001018As we can easily check, our array is sorted now::
1019
Georg Brandl6911e3c2007-09-04 07:15:32 +00001020 >>> for i in ia: print(i, end=" ")
Georg Brandl116aa622007-08-15 14:28:22 +00001021 ...
1022 1 5 7 33 99
1023 >>>
1024
Benjamin Peterson1cfe0092014-01-20 00:10:23 -05001025.. note::
Georg Brandl116aa622007-08-15 14:28:22 +00001026
Benjamin Peterson1cfe0092014-01-20 00:10:23 -05001027 Make sure you keep references to :func:`CFUNCTYPE` objects as long as they
1028 are used from C code. :mod:`ctypes` doesn't, and if you don't, they may be
1029 garbage collected, crashing your program when a callback is made.
Georg Brandl116aa622007-08-15 14:28:22 +00001030
Benjamin Peterson1cfe0092014-01-20 00:10:23 -05001031 Also, note that if the callback function is called in a thread created
1032 outside of Python's control (e.g. by the foreign code that calls the
1033 callback), ctypes creates a new dummy Python thread on every invocation. This
1034 behavior is correct for most purposes, but it means that values stored with
Georg Brandl6b4c8472014-10-30 22:26:26 +01001035 :class:`threading.local` will *not* survive across different callbacks, even when
Benjamin Peterson1cfe0092014-01-20 00:10:23 -05001036 those calls are made from the same C thread.
Georg Brandl116aa622007-08-15 14:28:22 +00001037
1038.. _ctypes-accessing-values-exported-from-dlls:
1039
1040Accessing values exported from dlls
1041^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1042
Thomas Heller2fadaa22008-06-16 19:56:33 +00001043Some shared libraries not only export functions, they also export variables. An
Georg Brandl60203b42010-10-06 10:11:56 +00001044example in the Python library itself is the :c:data:`Py_OptimizeFlag`, an integer
Georg Brandl8d8f1972009-06-08 13:27:23 +00001045set to 0, 1, or 2, depending on the :option:`-O` or :option:`-OO` flag given on
Georg Brandl116aa622007-08-15 14:28:22 +00001046startup.
1047
Georg Brandl8d8f1972009-06-08 13:27:23 +00001048:mod:`ctypes` can access values like this with the :meth:`in_dll` class methods of
Georg Brandl116aa622007-08-15 14:28:22 +00001049the type. *pythonapi* is a predefined symbol giving access to the Python C
1050api::
1051
1052 >>> opt_flag = c_int.in_dll(pythonapi, "Py_OptimizeFlag")
Georg Brandl6911e3c2007-09-04 07:15:32 +00001053 >>> print(opt_flag)
Georg Brandl116aa622007-08-15 14:28:22 +00001054 c_long(0)
1055 >>>
1056
1057If the interpreter would have been started with :option:`-O`, the sample would
1058have printed ``c_long(1)``, or ``c_long(2)`` if :option:`-OO` would have been
1059specified.
1060
1061An extended example which also demonstrates the use of pointers accesses the
Georg Brandl60203b42010-10-06 10:11:56 +00001062:c:data:`PyImport_FrozenModules` pointer exported by Python.
Georg Brandl116aa622007-08-15 14:28:22 +00001063
Georg Brandl8d8f1972009-06-08 13:27:23 +00001064Quoting the docs for that value:
1065
Georg Brandl60203b42010-10-06 10:11:56 +00001066 This pointer is initialized to point to an array of :c:type:`struct _frozen`
Georg Brandl8d8f1972009-06-08 13:27:23 +00001067 records, terminated by one whose members are all *NULL* or zero. When a frozen
1068 module is imported, it is searched in this table. Third-party code could play
1069 tricks with this to provide a dynamically created collection of frozen modules.
Georg Brandl116aa622007-08-15 14:28:22 +00001070
1071So manipulating this pointer could even prove useful. To restrict the example
Georg Brandl8d8f1972009-06-08 13:27:23 +00001072size, we show only how this table can be read with :mod:`ctypes`::
Georg Brandl116aa622007-08-15 14:28:22 +00001073
1074 >>> from ctypes import *
1075 >>>
1076 >>> class struct_frozen(Structure):
1077 ... _fields_ = [("name", c_char_p),
1078 ... ("code", POINTER(c_ubyte)),
1079 ... ("size", c_int)]
1080 ...
1081 >>>
1082
Georg Brandl60203b42010-10-06 10:11:56 +00001083We have defined the :c:type:`struct _frozen` data type, so we can get the pointer
Georg Brandl8d8f1972009-06-08 13:27:23 +00001084to the table::
Georg Brandl116aa622007-08-15 14:28:22 +00001085
1086 >>> FrozenTable = POINTER(struct_frozen)
1087 >>> table = FrozenTable.in_dll(pythonapi, "PyImport_FrozenModules")
1088 >>>
1089
1090Since ``table`` is a ``pointer`` to the array of ``struct_frozen`` records, we
1091can iterate over it, but we just have to make sure that our loop terminates,
1092because pointers have no size. Sooner or later it would probably crash with an
1093access violation or whatever, so it's better to break out of the loop when we
1094hit the NULL entry::
1095
1096 >>> for item in table:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001097 ... print(item.name, item.size)
Georg Brandl116aa622007-08-15 14:28:22 +00001098 ... if item.name is None:
1099 ... break
1100 ...
1101 __hello__ 104
1102 __phello__ -104
1103 __phello__.spam 104
1104 None 0
1105 >>>
1106
1107The fact that standard Python has a frozen module and a frozen package
Thomas Woutersed03b412007-08-28 21:37:11 +00001108(indicated by the negative size member) is not well known, it is only used for
Georg Brandl116aa622007-08-15 14:28:22 +00001109testing. Try it out with ``import __hello__`` for example.
1110
1111
1112.. _ctypes-surprises:
1113
1114Surprises
1115^^^^^^^^^
1116
R David Murraya2959ce2012-10-31 10:50:27 -04001117There are some edges in :mod:`ctypes` where you might expect something other
1118than what actually happens.
Georg Brandl116aa622007-08-15 14:28:22 +00001119
1120Consider the following example::
1121
1122 >>> from ctypes import *
1123 >>> class POINT(Structure):
1124 ... _fields_ = ("x", c_int), ("y", c_int)
1125 ...
1126 >>> class RECT(Structure):
1127 ... _fields_ = ("a", POINT), ("b", POINT)
1128 ...
1129 >>> p1 = POINT(1, 2)
1130 >>> p2 = POINT(3, 4)
1131 >>> rc = RECT(p1, p2)
Georg Brandl6911e3c2007-09-04 07:15:32 +00001132 >>> print(rc.a.x, rc.a.y, rc.b.x, rc.b.y)
Georg Brandl116aa622007-08-15 14:28:22 +00001133 1 2 3 4
1134 >>> # now swap the two points
1135 >>> rc.a, rc.b = rc.b, rc.a
Georg Brandl6911e3c2007-09-04 07:15:32 +00001136 >>> print(rc.a.x, rc.a.y, rc.b.x, rc.b.y)
Georg Brandl116aa622007-08-15 14:28:22 +00001137 3 4 3 4
1138 >>>
1139
1140Hm. We certainly expected the last statement to print ``3 4 1 2``. What
Thomas Woutersed03b412007-08-28 21:37:11 +00001141happened? Here are the steps of the ``rc.a, rc.b = rc.b, rc.a`` line above::
Georg Brandl116aa622007-08-15 14:28:22 +00001142
1143 >>> temp0, temp1 = rc.b, rc.a
1144 >>> rc.a = temp0
1145 >>> rc.b = temp1
1146 >>>
1147
1148Note that ``temp0`` and ``temp1`` are objects still using the internal buffer of
1149the ``rc`` object above. So executing ``rc.a = temp0`` copies the buffer
1150contents of ``temp0`` into ``rc`` 's buffer. This, in turn, changes the
1151contents of ``temp1``. So, the last assignment ``rc.b = temp1``, doesn't have
1152the expected effect.
1153
Thomas Woutersed03b412007-08-28 21:37:11 +00001154Keep in mind that retrieving sub-objects from Structure, Unions, and Arrays
1155doesn't *copy* the sub-object, instead it retrieves a wrapper object accessing
Georg Brandl116aa622007-08-15 14:28:22 +00001156the root-object's underlying buffer.
1157
1158Another example that may behave different from what one would expect is this::
1159
1160 >>> s = c_char_p()
1161 >>> s.value = "abc def ghi"
1162 >>> s.value
1163 'abc def ghi'
1164 >>> s.value is s.value
1165 False
1166 >>>
1167
1168Why is it printing ``False``? ctypes instances are objects containing a memory
Georg Brandl9afde1c2007-11-01 20:32:30 +00001169block plus some :term:`descriptor`\s accessing the contents of the memory.
1170Storing a Python object in the memory block does not store the object itself,
1171instead the ``contents`` of the object is stored. Accessing the contents again
1172constructs a new Python object each time!
Georg Brandl116aa622007-08-15 14:28:22 +00001173
1174
1175.. _ctypes-variable-sized-data-types:
1176
1177Variable-sized data types
1178^^^^^^^^^^^^^^^^^^^^^^^^^
1179
Georg Brandl8d8f1972009-06-08 13:27:23 +00001180:mod:`ctypes` provides some support for variable-sized arrays and structures.
Georg Brandl116aa622007-08-15 14:28:22 +00001181
Georg Brandl8d8f1972009-06-08 13:27:23 +00001182The :func:`resize` function can be used to resize the memory buffer of an
1183existing ctypes object. The function takes the object as first argument, and
1184the requested size in bytes as the second argument. The memory block cannot be
1185made smaller than the natural memory block specified by the objects type, a
1186:exc:`ValueError` is raised if this is tried::
Georg Brandl116aa622007-08-15 14:28:22 +00001187
1188 >>> short_array = (c_short * 4)()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001189 >>> print(sizeof(short_array))
Georg Brandl116aa622007-08-15 14:28:22 +00001190 8
1191 >>> resize(short_array, 4)
1192 Traceback (most recent call last):
1193 ...
1194 ValueError: minimum size is 8
1195 >>> resize(short_array, 32)
1196 >>> sizeof(short_array)
1197 32
1198 >>> sizeof(type(short_array))
1199 8
1200 >>>
1201
1202This is nice and fine, but how would one access the additional elements
1203contained in this array? Since the type still only knows about 4 elements, we
1204get errors accessing other elements::
1205
1206 >>> short_array[:]
1207 [0, 0, 0, 0]
1208 >>> short_array[7]
1209 Traceback (most recent call last):
1210 ...
1211 IndexError: invalid index
1212 >>>
1213
Georg Brandl8d8f1972009-06-08 13:27:23 +00001214Another way to use variable-sized data types with :mod:`ctypes` is to use the
Georg Brandl116aa622007-08-15 14:28:22 +00001215dynamic nature of Python, and (re-)define the data type after the required size
1216is already known, on a case by case basis.
1217
1218
Georg Brandl116aa622007-08-15 14:28:22 +00001219.. _ctypes-ctypes-reference:
1220
1221ctypes reference
1222----------------
1223
1224
1225.. _ctypes-finding-shared-libraries:
1226
1227Finding shared libraries
1228^^^^^^^^^^^^^^^^^^^^^^^^
1229
1230When programming in a compiled language, shared libraries are accessed when
1231compiling/linking a program, and when the program is run.
1232
Georg Brandl8d8f1972009-06-08 13:27:23 +00001233The purpose of the :func:`find_library` function is to locate a library in a way
Georg Brandl116aa622007-08-15 14:28:22 +00001234similar to what the compiler does (on platforms with several versions of a
1235shared library the most recent should be loaded), while the ctypes library
1236loaders act like when a program is run, and call the runtime loader directly.
1237
Georg Brandl8d8f1972009-06-08 13:27:23 +00001238The :mod:`ctypes.util` module provides a function which can help to determine
1239the library to load.
Georg Brandl116aa622007-08-15 14:28:22 +00001240
1241
1242.. data:: find_library(name)
Benjamin Peterson5c6d7872009-02-06 02:40:07 +00001243 :module: ctypes.util
Georg Brandl116aa622007-08-15 14:28:22 +00001244 :noindex:
1245
1246 Try to find a library and return a pathname. *name* is the library name without
1247 any prefix like *lib*, suffix like ``.so``, ``.dylib`` or version number (this
1248 is the form used for the posix linker option :option:`-l`). If no library can
1249 be found, returns ``None``.
1250
Thomas Woutersed03b412007-08-28 21:37:11 +00001251The exact functionality is system dependent.
Georg Brandl116aa622007-08-15 14:28:22 +00001252
Georg Brandl1d837bc2009-12-29 11:24:00 +00001253On Linux, :func:`find_library` tries to run external programs
1254(``/sbin/ldconfig``, ``gcc``, and ``objdump``) to find the library file. It
1255returns the filename of the library file. Here are some examples::
Georg Brandl116aa622007-08-15 14:28:22 +00001256
1257 >>> from ctypes.util import find_library
1258 >>> find_library("m")
1259 'libm.so.6'
1260 >>> find_library("c")
1261 'libc.so.6'
1262 >>> find_library("bz2")
1263 'libbz2.so.1.0'
1264 >>>
1265
Georg Brandl8d8f1972009-06-08 13:27:23 +00001266On OS X, :func:`find_library` tries several predefined naming schemes and paths
1267to locate the library, and returns a full pathname if successful::
Georg Brandl116aa622007-08-15 14:28:22 +00001268
1269 >>> from ctypes.util import find_library
1270 >>> find_library("c")
1271 '/usr/lib/libc.dylib'
1272 >>> find_library("m")
1273 '/usr/lib/libm.dylib'
1274 >>> find_library("bz2")
1275 '/usr/lib/libbz2.dylib'
1276 >>> find_library("AGL")
1277 '/System/Library/Frameworks/AGL.framework/AGL'
1278 >>>
1279
Georg Brandl8d8f1972009-06-08 13:27:23 +00001280On Windows, :func:`find_library` searches along the system search path, and
1281returns the full pathname, but since there is no predefined naming scheme a call
1282like ``find_library("c")`` will fail and return ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +00001283
Georg Brandl8d8f1972009-06-08 13:27:23 +00001284If wrapping a shared library with :mod:`ctypes`, it *may* be better to determine
Ned Deilyea3cfc52013-05-20 14:29:44 -07001285the shared library name at development time, and hardcode that into the wrapper
Georg Brandl8d8f1972009-06-08 13:27:23 +00001286module instead of using :func:`find_library` to locate the library at runtime.
Georg Brandl116aa622007-08-15 14:28:22 +00001287
1288
1289.. _ctypes-loading-shared-libraries:
1290
1291Loading shared libraries
1292^^^^^^^^^^^^^^^^^^^^^^^^
1293
1294There are several ways to loaded shared libraries into the Python process. One
1295way is to instantiate one of the following classes:
1296
1297
Thomas Hellerb795f5282008-06-10 15:26:58 +00001298.. class:: CDLL(name, mode=DEFAULT_MODE, handle=None, use_errno=False, use_last_error=False)
Georg Brandl116aa622007-08-15 14:28:22 +00001299
1300 Instances of this class represent loaded shared libraries. Functions in these
1301 libraries use the standard C calling convention, and are assumed to return
Georg Brandl60203b42010-10-06 10:11:56 +00001302 :c:type:`int`.
Georg Brandl116aa622007-08-15 14:28:22 +00001303
1304
Thomas Hellerb795f5282008-06-10 15:26:58 +00001305.. class:: OleDLL(name, mode=DEFAULT_MODE, handle=None, use_errno=False, use_last_error=False)
Georg Brandl116aa622007-08-15 14:28:22 +00001306
1307 Windows only: Instances of this class represent loaded shared libraries,
1308 functions in these libraries use the ``stdcall`` calling convention, and are
1309 assumed to return the windows specific :class:`HRESULT` code. :class:`HRESULT`
1310 values contain information specifying whether the function call failed or
1311 succeeded, together with additional error code. If the return value signals a
Antoine Pitrou442ee032011-10-12 18:53:23 +02001312 failure, an :class:`OSError` is automatically raised.
1313
1314 .. versionchanged:: 3.3
1315 :exc:`WindowsError` used to be raised.
Georg Brandl116aa622007-08-15 14:28:22 +00001316
1317
Thomas Hellerb795f5282008-06-10 15:26:58 +00001318.. class:: WinDLL(name, mode=DEFAULT_MODE, handle=None, use_errno=False, use_last_error=False)
Georg Brandl116aa622007-08-15 14:28:22 +00001319
1320 Windows only: Instances of this class represent loaded shared libraries,
1321 functions in these libraries use the ``stdcall`` calling convention, and are
Georg Brandl60203b42010-10-06 10:11:56 +00001322 assumed to return :c:type:`int` by default.
Georg Brandl116aa622007-08-15 14:28:22 +00001323
1324 On Windows CE only the standard calling convention is used, for convenience the
1325 :class:`WinDLL` and :class:`OleDLL` use the standard calling convention on this
1326 platform.
1327
Georg Brandl9afde1c2007-11-01 20:32:30 +00001328The Python :term:`global interpreter lock` is released before calling any
1329function exported by these libraries, and reacquired afterwards.
Georg Brandl116aa622007-08-15 14:28:22 +00001330
1331
1332.. class:: PyDLL(name, mode=DEFAULT_MODE, handle=None)
1333
1334 Instances of this class behave like :class:`CDLL` instances, except that the
1335 Python GIL is *not* released during the function call, and after the function
1336 execution the Python error flag is checked. If the error flag is set, a Python
1337 exception is raised.
1338
1339 Thus, this is only useful to call Python C api functions directly.
1340
1341All these classes can be instantiated by calling them with at least one
1342argument, the pathname of the shared library. If you have an existing handle to
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00001343an already loaded shared library, it can be passed as the ``handle`` named
Georg Brandl1d837bc2009-12-29 11:24:00 +00001344parameter, otherwise the underlying platforms ``dlopen`` or ``LoadLibrary``
Georg Brandl116aa622007-08-15 14:28:22 +00001345function is used to load the library into the process, and to get a handle to
1346it.
1347
1348The *mode* parameter can be used to specify how the library is loaded. For
Georg Brandl1d837bc2009-12-29 11:24:00 +00001349details, consult the :manpage:`dlopen(3)` manpage, on Windows, *mode* is
1350ignored.
Georg Brandl116aa622007-08-15 14:28:22 +00001351
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001352The *use_errno* parameter, when set to True, enables a ctypes mechanism that
1353allows to access the system :data:`errno` error number in a safe way.
1354:mod:`ctypes` maintains a thread-local copy of the systems :data:`errno`
1355variable; if you call foreign functions created with ``use_errno=True`` then the
1356:data:`errno` value before the function call is swapped with the ctypes private
1357copy, the same happens immediately after the function call.
Thomas Hellerb795f5282008-06-10 15:26:58 +00001358
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001359The function :func:`ctypes.get_errno` returns the value of the ctypes private
1360copy, and the function :func:`ctypes.set_errno` changes the ctypes private copy
1361to a new value and returns the former value.
Thomas Hellerb795f5282008-06-10 15:26:58 +00001362
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001363The *use_last_error* parameter, when set to True, enables the same mechanism for
1364the Windows error code which is managed by the :func:`GetLastError` and
1365:func:`SetLastError` Windows API functions; :func:`ctypes.get_last_error` and
1366:func:`ctypes.set_last_error` are used to request and change the ctypes private
1367copy of the windows error code.
Thomas Hellerb795f5282008-06-10 15:26:58 +00001368
Georg Brandl116aa622007-08-15 14:28:22 +00001369.. data:: RTLD_GLOBAL
1370 :noindex:
1371
1372 Flag to use as *mode* parameter. On platforms where this flag is not available,
1373 it is defined as the integer zero.
1374
1375
1376.. data:: RTLD_LOCAL
1377 :noindex:
1378
1379 Flag to use as *mode* parameter. On platforms where this is not available, it
1380 is the same as *RTLD_GLOBAL*.
1381
1382
1383.. data:: DEFAULT_MODE
1384 :noindex:
1385
1386 The default mode which is used to load shared libraries. On OSX 10.3, this is
1387 *RTLD_GLOBAL*, otherwise it is the same as *RTLD_LOCAL*.
1388
R David Murray9db487b2014-10-04 18:25:07 -04001389Instances of these classes have no public methods. Functions exported by the
1390shared library can be accessed as attributes or by index. Please note that
1391accessing the function through an attribute caches the result and therefore
1392accessing it repeatedly returns the same object each time. On the other hand,
1393accessing it through an index returns a new object each time:
1394
1395 >>> libc.time == libc.time
1396 True
1397 >>> libc['time'] == libc['time']
1398 False
Georg Brandl116aa622007-08-15 14:28:22 +00001399
1400The following public attributes are available, their name starts with an
1401underscore to not clash with exported function names:
1402
1403
1404.. attribute:: PyDLL._handle
1405
1406 The system handle used to access the library.
1407
1408
1409.. attribute:: PyDLL._name
1410
Thomas Woutersed03b412007-08-28 21:37:11 +00001411 The name of the library passed in the constructor.
Georg Brandl116aa622007-08-15 14:28:22 +00001412
1413Shared libraries can also be loaded by using one of the prefabricated objects,
1414which are instances of the :class:`LibraryLoader` class, either by calling the
1415:meth:`LoadLibrary` method, or by retrieving the library as attribute of the
1416loader instance.
1417
1418
1419.. class:: LibraryLoader(dlltype)
1420
Georg Brandl1d837bc2009-12-29 11:24:00 +00001421 Class which loads shared libraries. *dlltype* should be one of the
Georg Brandl116aa622007-08-15 14:28:22 +00001422 :class:`CDLL`, :class:`PyDLL`, :class:`WinDLL`, or :class:`OleDLL` types.
1423
Thomas Woutersed03b412007-08-28 21:37:11 +00001424 :meth:`__getattr__` has special behavior: It allows to load a shared library by
Georg Brandl116aa622007-08-15 14:28:22 +00001425 accessing it as attribute of a library loader instance. The result is cached,
1426 so repeated attribute accesses return the same library each time.
1427
Benjamin Petersone41251e2008-04-25 01:59:09 +00001428 .. method:: LoadLibrary(name)
Georg Brandl116aa622007-08-15 14:28:22 +00001429
Benjamin Petersone41251e2008-04-25 01:59:09 +00001430 Load a shared library into the process and return it. This method always
1431 returns a new instance of the library.
Georg Brandl116aa622007-08-15 14:28:22 +00001432
Georg Brandl116aa622007-08-15 14:28:22 +00001433
Georg Brandl8d8f1972009-06-08 13:27:23 +00001434These prefabricated library loaders are available:
Georg Brandl116aa622007-08-15 14:28:22 +00001435
1436.. data:: cdll
1437 :noindex:
1438
1439 Creates :class:`CDLL` instances.
1440
1441
1442.. data:: windll
1443 :noindex:
1444
1445 Windows only: Creates :class:`WinDLL` instances.
1446
1447
1448.. data:: oledll
1449 :noindex:
1450
1451 Windows only: Creates :class:`OleDLL` instances.
1452
1453
1454.. data:: pydll
1455 :noindex:
1456
1457 Creates :class:`PyDLL` instances.
1458
Georg Brandl8d8f1972009-06-08 13:27:23 +00001459
Georg Brandl116aa622007-08-15 14:28:22 +00001460For accessing the C Python api directly, a ready-to-use Python shared library
1461object is available:
1462
Georg Brandl116aa622007-08-15 14:28:22 +00001463.. data:: pythonapi
1464 :noindex:
1465
Georg Brandl1d837bc2009-12-29 11:24:00 +00001466 An instance of :class:`PyDLL` that exposes Python C API functions as
1467 attributes. Note that all these functions are assumed to return C
Georg Brandl60203b42010-10-06 10:11:56 +00001468 :c:type:`int`, which is of course not always the truth, so you have to assign
Georg Brandl1d837bc2009-12-29 11:24:00 +00001469 the correct :attr:`restype` attribute to use these functions.
Georg Brandl116aa622007-08-15 14:28:22 +00001470
1471
1472.. _ctypes-foreign-functions:
1473
1474Foreign functions
1475^^^^^^^^^^^^^^^^^
1476
1477As explained in the previous section, foreign functions can be accessed as
1478attributes of loaded shared libraries. The function objects created in this way
1479by default accept any number of arguments, accept any ctypes data instances as
1480arguments, and return the default result type specified by the library loader.
1481They are instances of a private class:
1482
1483
1484.. class:: _FuncPtr
1485
1486 Base class for C callable foreign functions.
1487
Benjamin Petersone41251e2008-04-25 01:59:09 +00001488 Instances of foreign functions are also C compatible data types; they
1489 represent C function pointers.
Georg Brandl116aa622007-08-15 14:28:22 +00001490
Benjamin Petersone41251e2008-04-25 01:59:09 +00001491 This behavior can be customized by assigning to special attributes of the
1492 foreign function object.
Georg Brandl116aa622007-08-15 14:28:22 +00001493
Benjamin Petersone41251e2008-04-25 01:59:09 +00001494 .. attribute:: restype
Georg Brandl116aa622007-08-15 14:28:22 +00001495
Benjamin Petersone41251e2008-04-25 01:59:09 +00001496 Assign a ctypes type to specify the result type of the foreign function.
Georg Brandl60203b42010-10-06 10:11:56 +00001497 Use ``None`` for :c:type:`void`, a function not returning anything.
Georg Brandl116aa622007-08-15 14:28:22 +00001498
Benjamin Petersone41251e2008-04-25 01:59:09 +00001499 It is possible to assign a callable Python object that is not a ctypes
Georg Brandl60203b42010-10-06 10:11:56 +00001500 type, in this case the function is assumed to return a C :c:type:`int`, and
Georg Brandl1d837bc2009-12-29 11:24:00 +00001501 the callable will be called with this integer, allowing to do further
Benjamin Petersone41251e2008-04-25 01:59:09 +00001502 processing or error checking. Using this is deprecated, for more flexible
1503 post processing or error checking use a ctypes data type as
1504 :attr:`restype` and assign a callable to the :attr:`errcheck` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +00001505
Benjamin Petersone41251e2008-04-25 01:59:09 +00001506 .. attribute:: argtypes
Georg Brandl116aa622007-08-15 14:28:22 +00001507
Benjamin Petersone41251e2008-04-25 01:59:09 +00001508 Assign a tuple of ctypes types to specify the argument types that the
1509 function accepts. Functions using the ``stdcall`` calling convention can
1510 only be called with the same number of arguments as the length of this
1511 tuple; functions using the C calling convention accept additional,
1512 unspecified arguments as well.
Georg Brandl116aa622007-08-15 14:28:22 +00001513
Benjamin Petersone41251e2008-04-25 01:59:09 +00001514 When a foreign function is called, each actual argument is passed to the
1515 :meth:`from_param` class method of the items in the :attr:`argtypes`
1516 tuple, this method allows to adapt the actual argument to an object that
1517 the foreign function accepts. For example, a :class:`c_char_p` item in
Georg Brandl8d8f1972009-06-08 13:27:23 +00001518 the :attr:`argtypes` tuple will convert a string passed as argument into
1519 a bytes object using ctypes conversion rules.
Georg Brandl116aa622007-08-15 14:28:22 +00001520
Benjamin Petersone41251e2008-04-25 01:59:09 +00001521 New: It is now possible to put items in argtypes which are not ctypes
1522 types, but each item must have a :meth:`from_param` method which returns a
1523 value usable as argument (integer, string, ctypes instance). This allows
1524 to define adapters that can adapt custom objects as function parameters.
Georg Brandl116aa622007-08-15 14:28:22 +00001525
Benjamin Petersone41251e2008-04-25 01:59:09 +00001526 .. attribute:: errcheck
Georg Brandl116aa622007-08-15 14:28:22 +00001527
Benjamin Petersone41251e2008-04-25 01:59:09 +00001528 Assign a Python function or another callable to this attribute. The
1529 callable will be called with three or more arguments:
Georg Brandl116aa622007-08-15 14:28:22 +00001530
Amaury Forgeot d'Arcfdfe62d2008-06-17 20:36:03 +00001531 .. function:: callable(result, func, arguments)
1532 :noindex:
Georg Brandl8d8f1972009-06-08 13:27:23 +00001533 :module:
Georg Brandl116aa622007-08-15 14:28:22 +00001534
Georg Brandl1d837bc2009-12-29 11:24:00 +00001535 *result* is what the foreign function returns, as specified by the
1536 :attr:`restype` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +00001537
Georg Brandl1d837bc2009-12-29 11:24:00 +00001538 *func* is the foreign function object itself, this allows to reuse the
1539 same callable object to check or post process the results of several
1540 functions.
Georg Brandl116aa622007-08-15 14:28:22 +00001541
Georg Brandl1d837bc2009-12-29 11:24:00 +00001542 *arguments* is a tuple containing the parameters originally passed to
1543 the function call, this allows to specialize the behavior on the
1544 arguments used.
Georg Brandl116aa622007-08-15 14:28:22 +00001545
Amaury Forgeot d'Arcfdfe62d2008-06-17 20:36:03 +00001546 The object that this function returns will be returned from the
1547 foreign function call, but it can also check the result value
1548 and raise an exception if the foreign function call failed.
Georg Brandl116aa622007-08-15 14:28:22 +00001549
1550
Georg Brandl8d8f1972009-06-08 13:27:23 +00001551.. exception:: ArgumentError
Georg Brandl116aa622007-08-15 14:28:22 +00001552
1553 This exception is raised when a foreign function call cannot convert one of the
1554 passed arguments.
1555
1556
1557.. _ctypes-function-prototypes:
1558
1559Function prototypes
1560^^^^^^^^^^^^^^^^^^^
1561
1562Foreign functions can also be created by instantiating function prototypes.
1563Function prototypes are similar to function prototypes in C; they describe a
1564function (return type, argument types, calling convention) without defining an
1565implementation. The factory functions must be called with the desired result
1566type and the argument types of the function.
1567
1568
Thomas Hellerb795f5282008-06-10 15:26:58 +00001569.. function:: CFUNCTYPE(restype, *argtypes, use_errno=False, use_last_error=False)
Georg Brandl116aa622007-08-15 14:28:22 +00001570
1571 The returned function prototype creates functions that use the standard C
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001572 calling convention. The function will release the GIL during the call. If
1573 *use_errno* is set to True, the ctypes private copy of the system
Georg Brandla6053b42009-09-01 08:11:14 +00001574 :data:`errno` variable is exchanged with the real :data:`errno` value before
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001575 and after the call; *use_last_error* does the same for the Windows error
1576 code.
Thomas Hellerb795f5282008-06-10 15:26:58 +00001577
Georg Brandl116aa622007-08-15 14:28:22 +00001578
Thomas Hellerb795f5282008-06-10 15:26:58 +00001579.. function:: WINFUNCTYPE(restype, *argtypes, use_errno=False, use_last_error=False)
Georg Brandl116aa622007-08-15 14:28:22 +00001580
1581 Windows only: The returned function prototype creates functions that use the
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001582 ``stdcall`` calling convention, except on Windows CE where
1583 :func:`WINFUNCTYPE` is the same as :func:`CFUNCTYPE`. The function will
1584 release the GIL during the call. *use_errno* and *use_last_error* have the
1585 same meaning as above.
Georg Brandl116aa622007-08-15 14:28:22 +00001586
1587
1588.. function:: PYFUNCTYPE(restype, *argtypes)
1589
1590 The returned function prototype creates functions that use the Python calling
1591 convention. The function will *not* release the GIL during the call.
1592
Thomas Heller2fadaa22008-06-16 19:56:33 +00001593Function prototypes created by these factory functions can be instantiated in
1594different ways, depending on the type and number of the parameters in the call:
Georg Brandl116aa622007-08-15 14:28:22 +00001595
1596
Thomas Heller2fadaa22008-06-16 19:56:33 +00001597 .. function:: prototype(address)
1598 :noindex:
1599 :module:
Georg Brandl116aa622007-08-15 14:28:22 +00001600
Thomas Heller2fadaa22008-06-16 19:56:33 +00001601 Returns a foreign function at the specified address which must be an integer.
Georg Brandl116aa622007-08-15 14:28:22 +00001602
1603
Thomas Heller2fadaa22008-06-16 19:56:33 +00001604 .. function:: prototype(callable)
1605 :noindex:
1606 :module:
Georg Brandl116aa622007-08-15 14:28:22 +00001607
Georg Brandl8d8f1972009-06-08 13:27:23 +00001608 Create a C callable function (a callback function) from a Python *callable*.
Georg Brandl116aa622007-08-15 14:28:22 +00001609
1610
Thomas Heller2fadaa22008-06-16 19:56:33 +00001611 .. function:: prototype(func_spec[, paramflags])
1612 :noindex:
1613 :module:
Georg Brandl116aa622007-08-15 14:28:22 +00001614
Georg Brandl1d837bc2009-12-29 11:24:00 +00001615 Returns a foreign function exported by a shared library. *func_spec* must
1616 be a 2-tuple ``(name_or_ordinal, library)``. The first item is the name of
1617 the exported function as string, or the ordinal of the exported function
1618 as small integer. The second item is the shared library instance.
Georg Brandl116aa622007-08-15 14:28:22 +00001619
1620
Thomas Heller2fadaa22008-06-16 19:56:33 +00001621 .. function:: prototype(vtbl_index, name[, paramflags[, iid]])
1622 :noindex:
1623 :module:
Georg Brandl116aa622007-08-15 14:28:22 +00001624
Georg Brandl8d8f1972009-06-08 13:27:23 +00001625 Returns a foreign function that will call a COM method. *vtbl_index* is
1626 the index into the virtual function table, a small non-negative
1627 integer. *name* is name of the COM method. *iid* is an optional pointer to
1628 the interface identifier which is used in extended error reporting.
Georg Brandl116aa622007-08-15 14:28:22 +00001629
Georg Brandl8d8f1972009-06-08 13:27:23 +00001630 COM methods use a special calling convention: They require a pointer to
1631 the COM interface as first argument, in addition to those parameters that
1632 are specified in the :attr:`argtypes` tuple.
Georg Brandl116aa622007-08-15 14:28:22 +00001633
Thomas Heller2fadaa22008-06-16 19:56:33 +00001634 The optional *paramflags* parameter creates foreign function wrappers with much
1635 more functionality than the features described above.
Georg Brandl116aa622007-08-15 14:28:22 +00001636
Thomas Heller2fadaa22008-06-16 19:56:33 +00001637 *paramflags* must be a tuple of the same length as :attr:`argtypes`.
Georg Brandl116aa622007-08-15 14:28:22 +00001638
Thomas Heller2fadaa22008-06-16 19:56:33 +00001639 Each item in this tuple contains further information about a parameter, it must
1640 be a tuple containing one, two, or three items.
Georg Brandl116aa622007-08-15 14:28:22 +00001641
Thomas Heller2fadaa22008-06-16 19:56:33 +00001642 The first item is an integer containing a combination of direction
1643 flags for the parameter:
Georg Brandl116aa622007-08-15 14:28:22 +00001644
Thomas Heller2fadaa22008-06-16 19:56:33 +00001645 1
1646 Specifies an input parameter to the function.
Georg Brandl116aa622007-08-15 14:28:22 +00001647
Thomas Heller2fadaa22008-06-16 19:56:33 +00001648 2
1649 Output parameter. The foreign function fills in a value.
Georg Brandl116aa622007-08-15 14:28:22 +00001650
Thomas Heller2fadaa22008-06-16 19:56:33 +00001651 4
1652 Input parameter which defaults to the integer zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001653
Thomas Heller2fadaa22008-06-16 19:56:33 +00001654 The optional second item is the parameter name as string. If this is specified,
1655 the foreign function can be called with named parameters.
Georg Brandl116aa622007-08-15 14:28:22 +00001656
Thomas Heller2fadaa22008-06-16 19:56:33 +00001657 The optional third item is the default value for this parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00001658
1659This example demonstrates how to wrap the Windows ``MessageBoxA`` function so
1660that it supports default parameters and named arguments. The C declaration from
1661the windows header file is this::
1662
1663 WINUSERAPI int WINAPI
1664 MessageBoxA(
Serhiy Storchakaa4d170d2013-12-23 18:20:51 +02001665 HWND hWnd,
Georg Brandl116aa622007-08-15 14:28:22 +00001666 LPCSTR lpText,
1667 LPCSTR lpCaption,
1668 UINT uType);
1669
Georg Brandl8d8f1972009-06-08 13:27:23 +00001670Here is the wrapping with :mod:`ctypes`::
Georg Brandl116aa622007-08-15 14:28:22 +00001671
Thomas Heller2fadaa22008-06-16 19:56:33 +00001672 >>> from ctypes import c_int, WINFUNCTYPE, windll
1673 >>> from ctypes.wintypes import HWND, LPCSTR, UINT
1674 >>> prototype = WINFUNCTYPE(c_int, HWND, LPCSTR, LPCSTR, UINT)
1675 >>> paramflags = (1, "hwnd", 0), (1, "text", "Hi"), (1, "caption", None), (1, "flags", 0)
1676 >>> MessageBox = prototype(("MessageBoxA", windll.user32), paramflags)
1677 >>>
Georg Brandl116aa622007-08-15 14:28:22 +00001678
1679The MessageBox foreign function can now be called in these ways::
1680
1681 >>> MessageBox()
1682 >>> MessageBox(text="Spam, spam, spam")
1683 >>> MessageBox(flags=2, text="foo bar")
1684 >>>
1685
1686A second example demonstrates output parameters. The win32 ``GetWindowRect``
1687function retrieves the dimensions of a specified window by copying them into
1688``RECT`` structure that the caller has to supply. Here is the C declaration::
1689
1690 WINUSERAPI BOOL WINAPI
1691 GetWindowRect(
1692 HWND hWnd,
1693 LPRECT lpRect);
1694
Georg Brandl8d8f1972009-06-08 13:27:23 +00001695Here is the wrapping with :mod:`ctypes`::
Georg Brandl116aa622007-08-15 14:28:22 +00001696
Thomas Heller2fadaa22008-06-16 19:56:33 +00001697 >>> from ctypes import POINTER, WINFUNCTYPE, windll, WinError
1698 >>> from ctypes.wintypes import BOOL, HWND, RECT
1699 >>> prototype = WINFUNCTYPE(BOOL, HWND, POINTER(RECT))
1700 >>> paramflags = (1, "hwnd"), (2, "lprect")
1701 >>> GetWindowRect = prototype(("GetWindowRect", windll.user32), paramflags)
1702 >>>
Georg Brandl116aa622007-08-15 14:28:22 +00001703
1704Functions with output parameters will automatically return the output parameter
1705value if there is a single one, or a tuple containing the output parameter
1706values when there are more than one, so the GetWindowRect function now returns a
1707RECT instance, when called.
1708
1709Output parameters can be combined with the :attr:`errcheck` protocol to do
1710further output processing and error checking. The win32 ``GetWindowRect`` api
1711function returns a ``BOOL`` to signal success or failure, so this function could
1712do the error checking, and raises an exception when the api call failed::
1713
1714 >>> def errcheck(result, func, args):
1715 ... if not result:
1716 ... raise WinError()
1717 ... return args
Thomas Heller2fadaa22008-06-16 19:56:33 +00001718 ...
Georg Brandl116aa622007-08-15 14:28:22 +00001719 >>> GetWindowRect.errcheck = errcheck
1720 >>>
1721
1722If the :attr:`errcheck` function returns the argument tuple it receives
Georg Brandl8d8f1972009-06-08 13:27:23 +00001723unchanged, :mod:`ctypes` continues the normal processing it does on the output
Georg Brandl116aa622007-08-15 14:28:22 +00001724parameters. If you want to return a tuple of window coordinates instead of a
1725``RECT`` instance, you can retrieve the fields in the function and return them
1726instead, the normal processing will no longer take place::
1727
1728 >>> def errcheck(result, func, args):
1729 ... if not result:
1730 ... raise WinError()
1731 ... rc = args[1]
1732 ... return rc.left, rc.top, rc.bottom, rc.right
Thomas Heller2fadaa22008-06-16 19:56:33 +00001733 ...
Georg Brandl116aa622007-08-15 14:28:22 +00001734 >>> GetWindowRect.errcheck = errcheck
1735 >>>
1736
1737
1738.. _ctypes-utility-functions:
1739
1740Utility functions
1741^^^^^^^^^^^^^^^^^
1742
Georg Brandl116aa622007-08-15 14:28:22 +00001743.. function:: addressof(obj)
1744
Georg Brandl8d8f1972009-06-08 13:27:23 +00001745 Returns the address of the memory buffer as integer. *obj* must be an
Georg Brandl116aa622007-08-15 14:28:22 +00001746 instance of a ctypes type.
1747
1748
1749.. function:: alignment(obj_or_type)
1750
Georg Brandl8d8f1972009-06-08 13:27:23 +00001751 Returns the alignment requirements of a ctypes type. *obj_or_type* must be a
Georg Brandl116aa622007-08-15 14:28:22 +00001752 ctypes type or instance.
1753
1754
Amaury Forgeot d'Arcfdfe62d2008-06-17 20:36:03 +00001755.. function:: byref(obj[, offset])
Georg Brandl116aa622007-08-15 14:28:22 +00001756
Georg Brandl1d837bc2009-12-29 11:24:00 +00001757 Returns a light-weight pointer to *obj*, which must be an instance of a
1758 ctypes type. *offset* defaults to zero, and must be an integer that will be
1759 added to the internal pointer value.
Amaury Forgeot d'Arcfdfe62d2008-06-17 20:36:03 +00001760
1761 ``byref(obj, offset)`` corresponds to this C code::
1762
1763 (((char *)&obj) + offset)
1764
Georg Brandl1d837bc2009-12-29 11:24:00 +00001765 The returned object can only be used as a foreign function call parameter.
1766 It behaves similar to ``pointer(obj)``, but the construction is a lot faster.
Georg Brandl116aa622007-08-15 14:28:22 +00001767
1768
1769.. function:: cast(obj, type)
1770
Georg Brandl8d8f1972009-06-08 13:27:23 +00001771 This function is similar to the cast operator in C. It returns a new instance
Georg Brandl1d837bc2009-12-29 11:24:00 +00001772 of *type* which points to the same memory block as *obj*. *type* must be a
Georg Brandl8d8f1972009-06-08 13:27:23 +00001773 pointer type, and *obj* must be an object that can be interpreted as a
Georg Brandl116aa622007-08-15 14:28:22 +00001774 pointer.
1775
1776
Georg Brandl8d8f1972009-06-08 13:27:23 +00001777.. function:: create_string_buffer(init_or_size, size=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001778
1779 This function creates a mutable character buffer. The returned object is a
1780 ctypes array of :class:`c_char`.
1781
Georg Brandl8d8f1972009-06-08 13:27:23 +00001782 *init_or_size* must be an integer which specifies the size of the array, or a
1783 bytes object which will be used to initialize the array items.
Georg Brandl116aa622007-08-15 14:28:22 +00001784
Georg Brandl8d8f1972009-06-08 13:27:23 +00001785 If a bytes object is specified as first argument, the buffer is made one item
1786 larger than its length so that the last element in the array is a NUL
Georg Brandl116aa622007-08-15 14:28:22 +00001787 termination character. An integer can be passed as second argument which allows
Georg Brandl8d8f1972009-06-08 13:27:23 +00001788 to specify the size of the array if the length of the bytes should not be used.
Georg Brandl116aa622007-08-15 14:28:22 +00001789
Georg Brandl116aa622007-08-15 14:28:22 +00001790
1791
Georg Brandl8d8f1972009-06-08 13:27:23 +00001792.. function:: create_unicode_buffer(init_or_size, size=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001793
1794 This function creates a mutable unicode character buffer. The returned object is
1795 a ctypes array of :class:`c_wchar`.
1796
Georg Brandl8d8f1972009-06-08 13:27:23 +00001797 *init_or_size* must be an integer which specifies the size of the array, or a
1798 string which will be used to initialize the array items.
Georg Brandl116aa622007-08-15 14:28:22 +00001799
Georg Brandl8d8f1972009-06-08 13:27:23 +00001800 If a string is specified as first argument, the buffer is made one item
Georg Brandl116aa622007-08-15 14:28:22 +00001801 larger than the length of the string so that the last element in the array is a
1802 NUL termination character. An integer can be passed as second argument which
1803 allows to specify the size of the array if the length of the string should not
1804 be used.
1805
Georg Brandl116aa622007-08-15 14:28:22 +00001806
1807
1808.. function:: DllCanUnloadNow()
1809
Georg Brandl1d837bc2009-12-29 11:24:00 +00001810 Windows only: This function is a hook which allows to implement in-process
1811 COM servers with ctypes. It is called from the DllCanUnloadNow function that
1812 the _ctypes extension dll exports.
Georg Brandl116aa622007-08-15 14:28:22 +00001813
1814
1815.. function:: DllGetClassObject()
1816
Georg Brandl1d837bc2009-12-29 11:24:00 +00001817 Windows only: This function is a hook which allows to implement in-process
1818 COM servers with ctypes. It is called from the DllGetClassObject function
1819 that the ``_ctypes`` extension dll exports.
1820
Georg Brandl116aa622007-08-15 14:28:22 +00001821
Thomas Heller2fadaa22008-06-16 19:56:33 +00001822.. function:: find_library(name)
1823 :module: ctypes.util
1824
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001825 Try to find a library and return a pathname. *name* is the library name
Benjamin Peterson28d88b42009-01-09 03:03:23 +00001826 without any prefix like ``lib``, suffix like ``.so``, ``.dylib`` or version
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001827 number (this is the form used for the posix linker option :option:`-l`). If
1828 no library can be found, returns ``None``.
Thomas Heller2fadaa22008-06-16 19:56:33 +00001829
1830 The exact functionality is system dependent.
1831
Thomas Heller2fadaa22008-06-16 19:56:33 +00001832
1833.. function:: find_msvcrt()
1834 :module: ctypes.util
1835
Georg Brandl8ed75cd2014-10-31 10:25:48 +01001836 Windows only: return the filename of the VC runtime library used by Python,
Georg Brandl1d837bc2009-12-29 11:24:00 +00001837 and by the extension modules. If the name of the library cannot be
1838 determined, ``None`` is returned.
Thomas Heller2fadaa22008-06-16 19:56:33 +00001839
Georg Brandl1d837bc2009-12-29 11:24:00 +00001840 If you need to free memory, for example, allocated by an extension module
1841 with a call to the ``free(void *)``, it is important that you use the
1842 function in the same library that allocated the memory.
1843
Thomas Heller2fadaa22008-06-16 19:56:33 +00001844
Georg Brandl116aa622007-08-15 14:28:22 +00001845.. function:: FormatError([code])
1846
Georg Brandl1d837bc2009-12-29 11:24:00 +00001847 Windows only: Returns a textual description of the error code *code*. If no
1848 error code is specified, the last error code is used by calling the Windows
1849 api function GetLastError.
Georg Brandl116aa622007-08-15 14:28:22 +00001850
1851
1852.. function:: GetLastError()
1853
1854 Windows only: Returns the last error code set by Windows in the calling thread.
Thomas Hellerb795f5282008-06-10 15:26:58 +00001855 This function calls the Windows `GetLastError()` function directly,
1856 it does not return the ctypes-private copy of the error code.
Georg Brandl116aa622007-08-15 14:28:22 +00001857
Thomas Hellerb795f5282008-06-10 15:26:58 +00001858.. function:: get_errno()
1859
1860 Returns the current value of the ctypes-private copy of the system
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001861 :data:`errno` variable in the calling thread.
Thomas Hellerb795f5282008-06-10 15:26:58 +00001862
Thomas Hellerb795f5282008-06-10 15:26:58 +00001863.. function:: get_last_error()
1864
1865 Windows only: returns the current value of the ctypes-private copy of the system
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001866 :data:`LastError` variable in the calling thread.
Thomas Hellerb795f5282008-06-10 15:26:58 +00001867
Georg Brandl116aa622007-08-15 14:28:22 +00001868.. function:: memmove(dst, src, count)
1869
1870 Same as the standard C memmove library function: copies *count* bytes from
Georg Brandl1d837bc2009-12-29 11:24:00 +00001871 *src* to *dst*. *dst* and *src* must be integers or ctypes instances that can
1872 be converted to pointers.
Georg Brandl116aa622007-08-15 14:28:22 +00001873
1874
1875.. function:: memset(dst, c, count)
1876
1877 Same as the standard C memset library function: fills the memory block at
1878 address *dst* with *count* bytes of value *c*. *dst* must be an integer
1879 specifying an address, or a ctypes instance.
1880
1881
1882.. function:: POINTER(type)
1883
1884 This factory function creates and returns a new ctypes pointer type. Pointer
1885 types are cached an reused internally, so calling this function repeatedly is
Georg Brandl1d837bc2009-12-29 11:24:00 +00001886 cheap. *type* must be a ctypes type.
Georg Brandl116aa622007-08-15 14:28:22 +00001887
1888
1889.. function:: pointer(obj)
1890
Georg Brandl8d8f1972009-06-08 13:27:23 +00001891 This function creates a new pointer instance, pointing to *obj*. The returned
Georg Brandl1d837bc2009-12-29 11:24:00 +00001892 object is of the type ``POINTER(type(obj))``.
Georg Brandl116aa622007-08-15 14:28:22 +00001893
1894 Note: If you just want to pass a pointer to an object to a foreign function
1895 call, you should use ``byref(obj)`` which is much faster.
1896
1897
1898.. function:: resize(obj, size)
1899
Georg Brandl1d837bc2009-12-29 11:24:00 +00001900 This function resizes the internal memory buffer of *obj*, which must be an
1901 instance of a ctypes type. It is not possible to make the buffer smaller
1902 than the native size of the objects type, as given by ``sizeof(type(obj))``,
1903 but it is possible to enlarge the buffer.
Georg Brandl116aa622007-08-15 14:28:22 +00001904
1905
Thomas Hellerb795f5282008-06-10 15:26:58 +00001906.. function:: set_errno(value)
1907
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001908 Set the current value of the ctypes-private copy of the system :data:`errno`
1909 variable in the calling thread to *value* and return the previous value.
Thomas Hellerb795f5282008-06-10 15:26:58 +00001910
Georg Brandl8d8f1972009-06-08 13:27:23 +00001911
Georg Brandl1d837bc2009-12-29 11:24:00 +00001912
Thomas Hellerb795f5282008-06-10 15:26:58 +00001913.. function:: set_last_error(value)
1914
Georg Brandl36ab1ef2009-01-03 21:17:04 +00001915 Windows only: set the current value of the ctypes-private copy of the system
1916 :data:`LastError` variable in the calling thread to *value* and return the
1917 previous value.
Thomas Hellerb795f5282008-06-10 15:26:58 +00001918
Georg Brandl8d8f1972009-06-08 13:27:23 +00001919
Georg Brandl1d837bc2009-12-29 11:24:00 +00001920
Georg Brandl116aa622007-08-15 14:28:22 +00001921.. function:: sizeof(obj_or_type)
1922
Ezio Melottie4597502013-10-21 04:41:40 +03001923 Returns the size in bytes of a ctypes type or instance memory buffer.
1924 Does the same as the C ``sizeof`` operator.
Georg Brandl116aa622007-08-15 14:28:22 +00001925
1926
Georg Brandl8d8f1972009-06-08 13:27:23 +00001927.. function:: string_at(address, size=-1)
Georg Brandl116aa622007-08-15 14:28:22 +00001928
Ezio Melottie130a522011-10-19 10:58:56 +03001929 This function returns the C string starting at memory address *address* as a bytes
Georg Brandl8d8f1972009-06-08 13:27:23 +00001930 object. If size is specified, it is used as size, otherwise the string is assumed
1931 to be zero-terminated.
Georg Brandl116aa622007-08-15 14:28:22 +00001932
1933
1934.. function:: WinError(code=None, descr=None)
1935
1936 Windows only: this function is probably the worst-named thing in ctypes. It
Antoine Pitrou442ee032011-10-12 18:53:23 +02001937 creates an instance of OSError. If *code* is not specified,
Georg Brandl1d837bc2009-12-29 11:24:00 +00001938 ``GetLastError`` is called to determine the error code. If *descr* is not
Thomas Woutersed03b412007-08-28 21:37:11 +00001939 specified, :func:`FormatError` is called to get a textual description of the
Georg Brandl116aa622007-08-15 14:28:22 +00001940 error.
1941
Antoine Pitrou442ee032011-10-12 18:53:23 +02001942 .. versionchanged:: 3.3
1943 An instance of :exc:`WindowsError` used to be created.
1944
Georg Brandl116aa622007-08-15 14:28:22 +00001945
Georg Brandl8d8f1972009-06-08 13:27:23 +00001946.. function:: wstring_at(address, size=-1)
Georg Brandl116aa622007-08-15 14:28:22 +00001947
1948 This function returns the wide character string starting at memory address
Georg Brandl1d837bc2009-12-29 11:24:00 +00001949 *address* as a string. If *size* is specified, it is used as the number of
1950 characters of the string, otherwise the string is assumed to be
Georg Brandl116aa622007-08-15 14:28:22 +00001951 zero-terminated.
1952
1953
1954.. _ctypes-data-types:
1955
1956Data types
1957^^^^^^^^^^
1958
1959
1960.. class:: _CData
1961
Georg Brandl1d837bc2009-12-29 11:24:00 +00001962 This non-public class is the common base class of all ctypes data types.
1963 Among other things, all ctypes type instances contain a memory block that
1964 hold C compatible data; the address of the memory block is returned by the
Georg Brandl8d8f1972009-06-08 13:27:23 +00001965 :func:`addressof` helper function. Another instance variable is exposed as
Georg Brandl1d837bc2009-12-29 11:24:00 +00001966 :attr:`_objects`; this contains other Python objects that need to be kept
1967 alive in case the memory block contains pointers.
Georg Brandl116aa622007-08-15 14:28:22 +00001968
Benjamin Petersone41251e2008-04-25 01:59:09 +00001969 Common methods of ctypes data types, these are all class methods (to be
1970 exact, they are methods of the :term:`metaclass`):
Georg Brandl116aa622007-08-15 14:28:22 +00001971
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001972 .. method:: _CData.from_buffer(source[, offset])
1973
Georg Brandl1d837bc2009-12-29 11:24:00 +00001974 This method returns a ctypes instance that shares the buffer of the
1975 *source* object. The *source* object must support the writeable buffer
1976 interface. The optional *offset* parameter specifies an offset into the
1977 source buffer in bytes; the default is zero. If the source buffer is not
1978 large enough a :exc:`ValueError` is raised.
1979
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001980
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001981 .. method:: _CData.from_buffer_copy(source[, offset])
1982
Georg Brandl1d837bc2009-12-29 11:24:00 +00001983 This method creates a ctypes instance, copying the buffer from the
1984 *source* object buffer which must be readable. The optional *offset*
1985 parameter specifies an offset into the source buffer in bytes; the default
1986 is zero. If the source buffer is not large enough a :exc:`ValueError` is
1987 raised.
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001988
Benjamin Petersone41251e2008-04-25 01:59:09 +00001989 .. method:: from_address(address)
Georg Brandl116aa622007-08-15 14:28:22 +00001990
Benjamin Petersone41251e2008-04-25 01:59:09 +00001991 This method returns a ctypes type instance using the memory specified by
Georg Brandl1d837bc2009-12-29 11:24:00 +00001992 *address* which must be an integer.
Georg Brandl116aa622007-08-15 14:28:22 +00001993
Benjamin Petersone41251e2008-04-25 01:59:09 +00001994 .. method:: from_param(obj)
Georg Brandl116aa622007-08-15 14:28:22 +00001995
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00001996 This method adapts *obj* to a ctypes type. It is called with the actual
1997 object used in a foreign function call when the type is present in the
1998 foreign function's :attr:`argtypes` tuple; it must return an object that
1999 can be used as a function call parameter.
Georg Brandl116aa622007-08-15 14:28:22 +00002000
Benjamin Peterson3e4f0552008-09-02 00:31:15 +00002001 All ctypes data types have a default implementation of this classmethod
Georg Brandl8d8f1972009-06-08 13:27:23 +00002002 that normally returns *obj* if that is an instance of the type. Some
Benjamin Petersone41251e2008-04-25 01:59:09 +00002003 types accept other objects as well.
Georg Brandl116aa622007-08-15 14:28:22 +00002004
Benjamin Petersone41251e2008-04-25 01:59:09 +00002005 .. method:: in_dll(library, name)
Georg Brandl116aa622007-08-15 14:28:22 +00002006
Benjamin Petersone41251e2008-04-25 01:59:09 +00002007 This method returns a ctypes type instance exported by a shared
2008 library. *name* is the name of the symbol that exports the data, *library*
2009 is the loaded shared library.
Georg Brandl116aa622007-08-15 14:28:22 +00002010
Benjamin Petersone41251e2008-04-25 01:59:09 +00002011 Common instance variables of ctypes data types:
Georg Brandl116aa622007-08-15 14:28:22 +00002012
Benjamin Petersone41251e2008-04-25 01:59:09 +00002013 .. attribute:: _b_base_
Georg Brandl116aa622007-08-15 14:28:22 +00002014
Benjamin Petersone41251e2008-04-25 01:59:09 +00002015 Sometimes ctypes data instances do not own the memory block they contain,
2016 instead they share part of the memory block of a base object. The
2017 :attr:`_b_base_` read-only member is the root ctypes object that owns the
2018 memory block.
Georg Brandl116aa622007-08-15 14:28:22 +00002019
Benjamin Petersone41251e2008-04-25 01:59:09 +00002020 .. attribute:: _b_needsfree_
Georg Brandl116aa622007-08-15 14:28:22 +00002021
Benjamin Petersone41251e2008-04-25 01:59:09 +00002022 This read-only variable is true when the ctypes data instance has
2023 allocated the memory block itself, false otherwise.
2024
Benjamin Petersone41251e2008-04-25 01:59:09 +00002025 .. attribute:: _objects
2026
2027 This member is either ``None`` or a dictionary containing Python objects
2028 that need to be kept alive so that the memory block contents is kept
2029 valid. This object is only exposed for debugging; never modify the
2030 contents of this dictionary.
Georg Brandl116aa622007-08-15 14:28:22 +00002031
2032
2033.. _ctypes-fundamental-data-types-2:
2034
2035Fundamental data types
2036^^^^^^^^^^^^^^^^^^^^^^
2037
Georg Brandl116aa622007-08-15 14:28:22 +00002038.. class:: _SimpleCData
2039
Benjamin Peterson35e8c462008-04-24 02:34:53 +00002040 This non-public class is the base class of all fundamental ctypes data
2041 types. It is mentioned here because it contains the common attributes of the
Georg Brandl8d8f1972009-06-08 13:27:23 +00002042 fundamental ctypes data types. :class:`_SimpleCData` is a subclass of
2043 :class:`_CData`, so it inherits their methods and attributes. ctypes data
2044 types that are not and do not contain pointers can now be pickled.
Thomas Heller13394e92008-02-13 20:40:44 +00002045
Benjamin Petersone41251e2008-04-25 01:59:09 +00002046 Instances have a single attribute:
Georg Brandl116aa622007-08-15 14:28:22 +00002047
Benjamin Petersone41251e2008-04-25 01:59:09 +00002048 .. attribute:: value
Georg Brandl116aa622007-08-15 14:28:22 +00002049
Benjamin Petersone41251e2008-04-25 01:59:09 +00002050 This attribute contains the actual value of the instance. For integer and
2051 pointer types, it is an integer, for character types, it is a single
Georg Brandl8d8f1972009-06-08 13:27:23 +00002052 character bytes object or string, for character pointer types it is a
2053 Python bytes object or string.
Georg Brandl116aa622007-08-15 14:28:22 +00002054
Benjamin Petersone41251e2008-04-25 01:59:09 +00002055 When the ``value`` attribute is retrieved from a ctypes instance, usually
Georg Brandl8d8f1972009-06-08 13:27:23 +00002056 a new object is returned each time. :mod:`ctypes` does *not* implement
Benjamin Petersone41251e2008-04-25 01:59:09 +00002057 original object return, always a new object is constructed. The same is
2058 true for all other ctypes object instances.
Georg Brandl116aa622007-08-15 14:28:22 +00002059
Georg Brandl8d8f1972009-06-08 13:27:23 +00002060
Georg Brandl116aa622007-08-15 14:28:22 +00002061Fundamental data types, when returned as foreign function call results, or, for
2062example, by retrieving structure field members or array items, are transparently
2063converted to native Python types. In other words, if a foreign function has a
Georg Brandl8d8f1972009-06-08 13:27:23 +00002064:attr:`restype` of :class:`c_char_p`, you will always receive a Python bytes
2065object, *not* a :class:`c_char_p` instance.
2066
2067.. XXX above is false, it actually returns a Unicode string
Georg Brandl116aa622007-08-15 14:28:22 +00002068
Thomas Woutersed03b412007-08-28 21:37:11 +00002069Subclasses of fundamental data types do *not* inherit this behavior. So, if a
Georg Brandl116aa622007-08-15 14:28:22 +00002070foreign functions :attr:`restype` is a subclass of :class:`c_void_p`, you will
2071receive an instance of this subclass from the function call. Of course, you can
2072get the value of the pointer by accessing the ``value`` attribute.
2073
2074These are the fundamental ctypes data types:
2075
Georg Brandl116aa622007-08-15 14:28:22 +00002076.. class:: c_byte
2077
Georg Brandl60203b42010-10-06 10:11:56 +00002078 Represents the C :c:type:`signed char` datatype, and interprets the value as
Georg Brandl1d837bc2009-12-29 11:24:00 +00002079 small integer. The constructor accepts an optional integer initializer; no
2080 overflow checking is done.
Georg Brandl116aa622007-08-15 14:28:22 +00002081
2082
2083.. class:: c_char
2084
Georg Brandl60203b42010-10-06 10:11:56 +00002085 Represents the C :c:type:`char` datatype, and interprets the value as a single
Georg Brandl1d837bc2009-12-29 11:24:00 +00002086 character. The constructor accepts an optional string initializer, the
2087 length of the string must be exactly one character.
Georg Brandl116aa622007-08-15 14:28:22 +00002088
2089
2090.. class:: c_char_p
2091
Georg Brandl60203b42010-10-06 10:11:56 +00002092 Represents the C :c:type:`char *` datatype when it points to a zero-terminated
Georg Brandl1d837bc2009-12-29 11:24:00 +00002093 string. For a general character pointer that may also point to binary data,
2094 ``POINTER(c_char)`` must be used. The constructor accepts an integer
2095 address, or a bytes object.
Georg Brandl116aa622007-08-15 14:28:22 +00002096
2097
2098.. class:: c_double
2099
Georg Brandl60203b42010-10-06 10:11:56 +00002100 Represents the C :c:type:`double` datatype. The constructor accepts an
Georg Brandl1d837bc2009-12-29 11:24:00 +00002101 optional float initializer.
Georg Brandl116aa622007-08-15 14:28:22 +00002102
2103
Thomas Wouters89d996e2007-09-08 17:39:28 +00002104.. class:: c_longdouble
2105
Georg Brandl60203b42010-10-06 10:11:56 +00002106 Represents the C :c:type:`long double` datatype. The constructor accepts an
Georg Brandl1d837bc2009-12-29 11:24:00 +00002107 optional float initializer. On platforms where ``sizeof(long double) ==
2108 sizeof(double)`` it is an alias to :class:`c_double`.
Thomas Wouters89d996e2007-09-08 17:39:28 +00002109
Georg Brandl116aa622007-08-15 14:28:22 +00002110.. class:: c_float
2111
Georg Brandl60203b42010-10-06 10:11:56 +00002112 Represents the C :c:type:`float` datatype. The constructor accepts an
Georg Brandl1d837bc2009-12-29 11:24:00 +00002113 optional float initializer.
Georg Brandl116aa622007-08-15 14:28:22 +00002114
2115
2116.. class:: c_int
2117
Georg Brandl60203b42010-10-06 10:11:56 +00002118 Represents the C :c:type:`signed int` datatype. The constructor accepts an
Georg Brandl1d837bc2009-12-29 11:24:00 +00002119 optional integer initializer; no overflow checking is done. On platforms
2120 where ``sizeof(int) == sizeof(long)`` it is an alias to :class:`c_long`.
Georg Brandl116aa622007-08-15 14:28:22 +00002121
2122
2123.. class:: c_int8
2124
Georg Brandl60203b42010-10-06 10:11:56 +00002125 Represents the C 8-bit :c:type:`signed int` datatype. Usually an alias for
Georg Brandl116aa622007-08-15 14:28:22 +00002126 :class:`c_byte`.
2127
2128
2129.. class:: c_int16
2130
Georg Brandl60203b42010-10-06 10:11:56 +00002131 Represents the C 16-bit :c:type:`signed int` datatype. Usually an alias for
Georg Brandl116aa622007-08-15 14:28:22 +00002132 :class:`c_short`.
2133
2134
2135.. class:: c_int32
2136
Georg Brandl60203b42010-10-06 10:11:56 +00002137 Represents the C 32-bit :c:type:`signed int` datatype. Usually an alias for
Georg Brandl116aa622007-08-15 14:28:22 +00002138 :class:`c_int`.
2139
2140
2141.. class:: c_int64
2142
Georg Brandl60203b42010-10-06 10:11:56 +00002143 Represents the C 64-bit :c:type:`signed int` datatype. Usually an alias for
Georg Brandl116aa622007-08-15 14:28:22 +00002144 :class:`c_longlong`.
2145
2146
2147.. class:: c_long
2148
Georg Brandl60203b42010-10-06 10:11:56 +00002149 Represents the C :c:type:`signed long` datatype. The constructor accepts an
Georg Brandl1d837bc2009-12-29 11:24:00 +00002150 optional integer initializer; no overflow checking is done.
Georg Brandl116aa622007-08-15 14:28:22 +00002151
2152
2153.. class:: c_longlong
2154
Georg Brandl60203b42010-10-06 10:11:56 +00002155 Represents the C :c:type:`signed long long` datatype. The constructor accepts
Georg Brandl1d837bc2009-12-29 11:24:00 +00002156 an optional integer initializer; no overflow checking is done.
Georg Brandl116aa622007-08-15 14:28:22 +00002157
2158
2159.. class:: c_short
2160
Georg Brandl60203b42010-10-06 10:11:56 +00002161 Represents the C :c:type:`signed short` datatype. The constructor accepts an
Georg Brandl1d837bc2009-12-29 11:24:00 +00002162 optional integer initializer; no overflow checking is done.
Georg Brandl116aa622007-08-15 14:28:22 +00002163
2164
2165.. class:: c_size_t
2166
Georg Brandl60203b42010-10-06 10:11:56 +00002167 Represents the C :c:type:`size_t` datatype.
Georg Brandl116aa622007-08-15 14:28:22 +00002168
2169
Gregory P. Smith1a530912010-03-01 04:59:27 +00002170.. class:: c_ssize_t
2171
Georg Brandl60203b42010-10-06 10:11:56 +00002172 Represents the C :c:type:`ssize_t` datatype.
Gregory P. Smith1a530912010-03-01 04:59:27 +00002173
2174 .. versionadded:: 3.2
2175
2176
Georg Brandl116aa622007-08-15 14:28:22 +00002177.. class:: c_ubyte
2178
Georg Brandl60203b42010-10-06 10:11:56 +00002179 Represents the C :c:type:`unsigned char` datatype, it interprets the value as
Georg Brandl1d837bc2009-12-29 11:24:00 +00002180 small integer. The constructor accepts an optional integer initializer; no
2181 overflow checking is done.
Georg Brandl116aa622007-08-15 14:28:22 +00002182
2183
2184.. class:: c_uint
2185
Georg Brandl60203b42010-10-06 10:11:56 +00002186 Represents the C :c:type:`unsigned int` datatype. The constructor accepts an
Georg Brandl1d837bc2009-12-29 11:24:00 +00002187 optional integer initializer; no overflow checking is done. On platforms
2188 where ``sizeof(int) == sizeof(long)`` it is an alias for :class:`c_ulong`.
Georg Brandl116aa622007-08-15 14:28:22 +00002189
2190
2191.. class:: c_uint8
2192
Georg Brandl60203b42010-10-06 10:11:56 +00002193 Represents the C 8-bit :c:type:`unsigned int` datatype. Usually an alias for
Georg Brandl116aa622007-08-15 14:28:22 +00002194 :class:`c_ubyte`.
2195
2196
2197.. class:: c_uint16
2198
Georg Brandl60203b42010-10-06 10:11:56 +00002199 Represents the C 16-bit :c:type:`unsigned int` datatype. Usually an alias for
Georg Brandl116aa622007-08-15 14:28:22 +00002200 :class:`c_ushort`.
2201
2202
2203.. class:: c_uint32
2204
Georg Brandl60203b42010-10-06 10:11:56 +00002205 Represents the C 32-bit :c:type:`unsigned int` datatype. Usually an alias for
Georg Brandl116aa622007-08-15 14:28:22 +00002206 :class:`c_uint`.
2207
2208
2209.. class:: c_uint64
2210
Georg Brandl60203b42010-10-06 10:11:56 +00002211 Represents the C 64-bit :c:type:`unsigned int` datatype. Usually an alias for
Georg Brandl116aa622007-08-15 14:28:22 +00002212 :class:`c_ulonglong`.
2213
2214
2215.. class:: c_ulong
2216
Georg Brandl60203b42010-10-06 10:11:56 +00002217 Represents the C :c:type:`unsigned long` datatype. The constructor accepts an
Georg Brandl1d837bc2009-12-29 11:24:00 +00002218 optional integer initializer; no overflow checking is done.
Georg Brandl116aa622007-08-15 14:28:22 +00002219
2220
2221.. class:: c_ulonglong
2222
Georg Brandl60203b42010-10-06 10:11:56 +00002223 Represents the C :c:type:`unsigned long long` datatype. The constructor
Georg Brandl1d837bc2009-12-29 11:24:00 +00002224 accepts an optional integer initializer; no overflow checking is done.
Georg Brandl116aa622007-08-15 14:28:22 +00002225
2226
2227.. class:: c_ushort
2228
Georg Brandl60203b42010-10-06 10:11:56 +00002229 Represents the C :c:type:`unsigned short` datatype. The constructor accepts
Georg Brandl1d837bc2009-12-29 11:24:00 +00002230 an optional integer initializer; no overflow checking is done.
Georg Brandl116aa622007-08-15 14:28:22 +00002231
2232
2233.. class:: c_void_p
2234
Georg Brandl60203b42010-10-06 10:11:56 +00002235 Represents the C :c:type:`void *` type. The value is represented as integer.
Georg Brandl1d837bc2009-12-29 11:24:00 +00002236 The constructor accepts an optional integer initializer.
Georg Brandl116aa622007-08-15 14:28:22 +00002237
2238
2239.. class:: c_wchar
2240
Georg Brandl60203b42010-10-06 10:11:56 +00002241 Represents the C :c:type:`wchar_t` datatype, and interprets the value as a
Georg Brandl1d837bc2009-12-29 11:24:00 +00002242 single character unicode string. The constructor accepts an optional string
Georg Brandl116aa622007-08-15 14:28:22 +00002243 initializer, the length of the string must be exactly one character.
2244
2245
2246.. class:: c_wchar_p
2247
Georg Brandl60203b42010-10-06 10:11:56 +00002248 Represents the C :c:type:`wchar_t *` datatype, which must be a pointer to a
Georg Brandl1d837bc2009-12-29 11:24:00 +00002249 zero-terminated wide character string. The constructor accepts an integer
Georg Brandl116aa622007-08-15 14:28:22 +00002250 address, or a string.
2251
2252
2253.. class:: c_bool
2254
Georg Brandl60203b42010-10-06 10:11:56 +00002255 Represent the C :c:type:`bool` datatype (more accurately, :c:type:`_Bool` from
Serhiy Storchakafbc1c262013-11-29 12:17:13 +02002256 C99). Its value can be ``True`` or ``False``, and the constructor accepts any object
Georg Brandl1d837bc2009-12-29 11:24:00 +00002257 that has a truth value.
Georg Brandl116aa622007-08-15 14:28:22 +00002258
Georg Brandl116aa622007-08-15 14:28:22 +00002259
2260.. class:: HRESULT
2261
Georg Brandl60203b42010-10-06 10:11:56 +00002262 Windows only: Represents a :c:type:`HRESULT` value, which contains success or
Georg Brandl116aa622007-08-15 14:28:22 +00002263 error information for a function or method call.
2264
2265
2266.. class:: py_object
2267
Georg Brandl60203b42010-10-06 10:11:56 +00002268 Represents the C :c:type:`PyObject *` datatype. Calling this without an
2269 argument creates a ``NULL`` :c:type:`PyObject *` pointer.
Georg Brandl116aa622007-08-15 14:28:22 +00002270
Georg Brandl1d837bc2009-12-29 11:24:00 +00002271The :mod:`ctypes.wintypes` module provides quite some other Windows specific
Georg Brandl60203b42010-10-06 10:11:56 +00002272data types, for example :c:type:`HWND`, :c:type:`WPARAM`, or :c:type:`DWORD`. Some
2273useful structures like :c:type:`MSG` or :c:type:`RECT` are also defined.
Georg Brandl116aa622007-08-15 14:28:22 +00002274
2275
2276.. _ctypes-structured-data-types:
2277
2278Structured data types
2279^^^^^^^^^^^^^^^^^^^^^
2280
2281
2282.. class:: Union(*args, **kw)
2283
2284 Abstract base class for unions in native byte order.
2285
2286
2287.. class:: BigEndianStructure(*args, **kw)
2288
2289 Abstract base class for structures in *big endian* byte order.
2290
2291
2292.. class:: LittleEndianStructure(*args, **kw)
2293
2294 Abstract base class for structures in *little endian* byte order.
2295
2296Structures with non-native byte order cannot contain pointer type fields, or any
2297other data types containing pointer type fields.
2298
2299
2300.. class:: Structure(*args, **kw)
2301
2302 Abstract base class for structures in *native* byte order.
2303
Benjamin Petersone41251e2008-04-25 01:59:09 +00002304 Concrete structure and union types must be created by subclassing one of these
Georg Brandl8d8f1972009-06-08 13:27:23 +00002305 types, and at least define a :attr:`_fields_` class variable. :mod:`ctypes` will
Benjamin Petersone41251e2008-04-25 01:59:09 +00002306 create :term:`descriptor`\s which allow reading and writing the fields by direct
2307 attribute accesses. These are the
Georg Brandl116aa622007-08-15 14:28:22 +00002308
2309
Benjamin Petersone41251e2008-04-25 01:59:09 +00002310 .. attribute:: _fields_
Georg Brandl116aa622007-08-15 14:28:22 +00002311
Benjamin Petersone41251e2008-04-25 01:59:09 +00002312 A sequence defining the structure fields. The items must be 2-tuples or
2313 3-tuples. The first item is the name of the field, the second item
2314 specifies the type of the field; it can be any ctypes data type.
Georg Brandl116aa622007-08-15 14:28:22 +00002315
Benjamin Petersone41251e2008-04-25 01:59:09 +00002316 For integer type fields like :class:`c_int`, a third optional item can be
2317 given. It must be a small positive integer defining the bit width of the
2318 field.
Georg Brandl116aa622007-08-15 14:28:22 +00002319
Benjamin Petersone41251e2008-04-25 01:59:09 +00002320 Field names must be unique within one structure or union. This is not
2321 checked, only one field can be accessed when names are repeated.
Georg Brandl116aa622007-08-15 14:28:22 +00002322
Benjamin Petersone41251e2008-04-25 01:59:09 +00002323 It is possible to define the :attr:`_fields_` class variable *after* the
2324 class statement that defines the Structure subclass, this allows to create
2325 data types that directly or indirectly reference themselves::
Georg Brandl116aa622007-08-15 14:28:22 +00002326
Benjamin Petersone41251e2008-04-25 01:59:09 +00002327 class List(Structure):
2328 pass
2329 List._fields_ = [("pnext", POINTER(List)),
2330 ...
2331 ]
Georg Brandl116aa622007-08-15 14:28:22 +00002332
Benjamin Petersone41251e2008-04-25 01:59:09 +00002333 The :attr:`_fields_` class variable must, however, be defined before the
Georg Brandl8d8f1972009-06-08 13:27:23 +00002334 type is first used (an instance is created, :func:`sizeof` is called on it,
Benjamin Petersone41251e2008-04-25 01:59:09 +00002335 and so on). Later assignments to the :attr:`_fields_` class variable will
2336 raise an AttributeError.
Georg Brandl116aa622007-08-15 14:28:22 +00002337
Benjamin Petersone41251e2008-04-25 01:59:09 +00002338 It is possible to defined sub-subclasses of structure types, they inherit
2339 the fields of the base class plus the :attr:`_fields_` defined in the
2340 sub-subclass, if any.
Georg Brandl116aa622007-08-15 14:28:22 +00002341
2342
Benjamin Petersone41251e2008-04-25 01:59:09 +00002343 .. attribute:: _pack_
Georg Brandl116aa622007-08-15 14:28:22 +00002344
Benjamin Petersone41251e2008-04-25 01:59:09 +00002345 An optional small integer that allows to override the alignment of
2346 structure fields in the instance. :attr:`_pack_` must already be defined
2347 when :attr:`_fields_` is assigned, otherwise it will have no effect.
Georg Brandl116aa622007-08-15 14:28:22 +00002348
2349
Benjamin Petersone41251e2008-04-25 01:59:09 +00002350 .. attribute:: _anonymous_
Georg Brandl116aa622007-08-15 14:28:22 +00002351
Benjamin Petersone41251e2008-04-25 01:59:09 +00002352 An optional sequence that lists the names of unnamed (anonymous) fields.
Georg Brandl1d837bc2009-12-29 11:24:00 +00002353 :attr:`_anonymous_` must be already defined when :attr:`_fields_` is
2354 assigned, otherwise it will have no effect.
Georg Brandl116aa622007-08-15 14:28:22 +00002355
Benjamin Petersone41251e2008-04-25 01:59:09 +00002356 The fields listed in this variable must be structure or union type fields.
Georg Brandl8d8f1972009-06-08 13:27:23 +00002357 :mod:`ctypes` will create descriptors in the structure type that allows to
Benjamin Petersone41251e2008-04-25 01:59:09 +00002358 access the nested fields directly, without the need to create the
2359 structure or union field.
Georg Brandl116aa622007-08-15 14:28:22 +00002360
Benjamin Petersone41251e2008-04-25 01:59:09 +00002361 Here is an example type (Windows)::
Georg Brandl116aa622007-08-15 14:28:22 +00002362
Benjamin Petersone41251e2008-04-25 01:59:09 +00002363 class _U(Union):
2364 _fields_ = [("lptdesc", POINTER(TYPEDESC)),
2365 ("lpadesc", POINTER(ARRAYDESC)),
2366 ("hreftype", HREFTYPE)]
Georg Brandl116aa622007-08-15 14:28:22 +00002367
Benjamin Petersone41251e2008-04-25 01:59:09 +00002368 class TYPEDESC(Structure):
Benjamin Petersonb58dda72009-01-18 22:27:04 +00002369 _anonymous_ = ("u",)
Benjamin Petersone41251e2008-04-25 01:59:09 +00002370 _fields_ = [("u", _U),
2371 ("vt", VARTYPE)]
Georg Brandl116aa622007-08-15 14:28:22 +00002372
Georg Brandl116aa622007-08-15 14:28:22 +00002373
Benjamin Petersone41251e2008-04-25 01:59:09 +00002374 The ``TYPEDESC`` structure describes a COM data type, the ``vt`` field
2375 specifies which one of the union fields is valid. Since the ``u`` field
2376 is defined as anonymous field, it is now possible to access the members
2377 directly off the TYPEDESC instance. ``td.lptdesc`` and ``td.u.lptdesc``
2378 are equivalent, but the former is faster since it does not need to create
2379 a temporary union instance::
Georg Brandl116aa622007-08-15 14:28:22 +00002380
Benjamin Petersone41251e2008-04-25 01:59:09 +00002381 td = TYPEDESC()
2382 td.vt = VT_PTR
2383 td.lptdesc = POINTER(some_type)
2384 td.u.lptdesc = POINTER(some_type)
Georg Brandl116aa622007-08-15 14:28:22 +00002385
Georg Brandl1d837bc2009-12-29 11:24:00 +00002386 It is possible to defined sub-subclasses of structures, they inherit the
2387 fields of the base class. If the subclass definition has a separate
2388 :attr:`_fields_` variable, the fields specified in this are appended to the
2389 fields of the base class.
Georg Brandl116aa622007-08-15 14:28:22 +00002390
Georg Brandl1d837bc2009-12-29 11:24:00 +00002391 Structure and union constructors accept both positional and keyword
2392 arguments. Positional arguments are used to initialize member fields in the
2393 same order as they are appear in :attr:`_fields_`. Keyword arguments in the
2394 constructor are interpreted as attribute assignments, so they will initialize
2395 :attr:`_fields_` with the same name, or create new attributes for names not
2396 present in :attr:`_fields_`.
Georg Brandl116aa622007-08-15 14:28:22 +00002397
2398
2399.. _ctypes-arrays-pointers:
2400
2401Arrays and pointers
2402^^^^^^^^^^^^^^^^^^^
2403
Georg Brandl1d837bc2009-12-29 11:24:00 +00002404Not yet written - please see the sections :ref:`ctypes-pointers` and section
2405:ref:`ctypes-arrays` in the tutorial.
Georg Brandl116aa622007-08-15 14:28:22 +00002406