gh-127255: Make CopyComPointer public and add to ctypes doc. (GH-127275)

This commit is contained in:
Jun Komoda 2024-12-04 00:35:08 +09:00 committed by GitHub
parent 979bf2489d
commit 412e11fe6e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 26 additions and 4 deletions

View file

@ -1949,6 +1949,24 @@ Utility functions
It behaves similar to ``pointer(obj)``, but the construction is a lot faster.
.. function:: CopyComPointer(src, dst)
Copies a COM pointer from *src* to *dst* and returns the Windows specific
:c:type:`!HRESULT` value.
If *src* is not ``NULL``, its ``AddRef`` method is called, incrementing the
reference count.
In contrast, the reference count of *dst* will not be decremented before
assigning the new value. Unless *dst* is ``NULL``, the caller is responsible
for decrementing the reference count by calling its ``Release`` method when
necessary.
.. availability:: Windows
.. versionadded:: next
.. function:: cast(obj, type)
This function is similar to the cast operator in C. It returns a new instance

View file

@ -313,9 +313,12 @@ ctypes
to help match a non-default ABI.
(Contributed by Petr Viktorin in :gh:`97702`.)
* The :exc:`~ctypes.COMError` exception is now public.
* On Windows, the :exc:`~ctypes.COMError` exception is now public.
(Contributed by Jun Komoda in :gh:`126686`.)
* On Windows, the :func:`~ctypes.CopyComPointer` function is now public.
(Contributed by Jun Komoda in :gh:`127275`.)
datetime
--------

View file

@ -19,7 +19,7 @@ if __version__ != _ctypes_version:
raise Exception("Version number mismatch", __version__, _ctypes_version)
if _os.name == "nt":
from _ctypes import COMError, FormatError
from _ctypes import COMError, CopyComPointer, FormatError
DEFAULT_MODE = RTLD_LOCAL
if _os.name == "posix" and _sys.platform == "darwin":

View file

@ -9,8 +9,7 @@ if sys.platform != "win32":
raise unittest.SkipTest("Windows-specific test")
from _ctypes import COMError, CopyComPointer
from ctypes import HRESULT
from ctypes import COMError, CopyComPointer, HRESULT
COINIT_APARTMENTTHREADED = 0x2

View file

@ -0,0 +1,2 @@
The :func:`~ctypes.CopyComPointer` function is now public.
Previously, this was private and only available in ``_ctypes``.