Harmony18090's picture
Add source batch 2/11
76f9669 verified
raw
history blame
1.45 kB
# 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 = <uintptr_t>_LoadLibraryExW(
wpath,
hFile,
dwFlags
)
PyMem_Free(wpath)
return result
cdef inline FARPROC GetProcAddress(uintptr_t hModule, const char* lpProcName) nogil:
return _GetProcAddress(<HMODULE>hModule, lpProcName)
cdef inline BOOL FreeLibrary(uintptr_t hLibModule) nogil:
return _FreeLibrary(<HMODULE>hLibModule)