# SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE from libc.stddef cimport wchar_t from libc.stdint cimport uintptr_t from cpython cimport PyUnicode_AsWideCharString, PyMem_Free cdef extern from "windows.h" nogil: ctypedef void* HMODULE ctypedef void* HANDLE ctypedef void* FARPROC ctypedef unsigned long DWORD ctypedef const wchar_t *LPCWSTR ctypedef const char *LPCSTR ctypedef int BOOL cdef DWORD LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800 HMODULE _LoadLibraryExW "LoadLibraryExW"( LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags ) FARPROC _GetProcAddress "GetProcAddress"(HMODULE hModule, LPCSTR lpProcName) BOOL _FreeLibrary "FreeLibrary"(HMODULE hLibModule) cdef inline uintptr_t LoadLibraryExW(str path, HANDLE hFile, DWORD dwFlags): cdef uintptr_t result cdef wchar_t* wpath = PyUnicode_AsWideCharString(path, NULL) with nogil: result = _LoadLibraryExW( wpath, hFile, dwFlags ) PyMem_Free(wpath) return result cdef inline FARPROC GetProcAddress(uintptr_t hModule, const char* lpProcName) nogil: return _GetProcAddress(hModule, lpProcName) cdef inline BOOL FreeLibrary(uintptr_t hLibModule) nogil: return _FreeLibrary(hLibModule)