Вызов DLL API не увенчался успехом – как решить проблемуPython

Программы на Python
Ответить
Anonymous
 Вызов DLL API не увенчался успехом – как решить проблему

Сообщение Anonymous »

У меня есть DLL, и я использовал инструмент дампа, чтобы получить в ней одно из имен API:

Код: Выделить всё

ordinal hint RVA       name

56         3D 00005BB0 GetUserPass
Возможно, эта DLL создана с использованием языка C++/C, но я не уверен. У меня есть доступ к файлу заголовка кода, и та же функция объявлена ​​примерно так:

Код: Выделить всё

USER_API USER::ResultCode DD_STDCALL GetUserPass();
Я использую приведенный ниже код для вызова API:

Код: Выделить всё

import ctypes
from ctypes import wintypes, byref, c_uint32, c_int, c_int32

dll_path = r"C:\\Program Files (x86)\\Software\\UserComm.dll"

user = ctypes.cdll.LoadLibrary(dll_path)
ResultCode = c_uint32

user.GetUserPass.restype = ResultCode

rc = user.GetUserPass()
print("GetUserPass:", "Success" if rc == 0 else f"Error {rc}")
Я получаю следующую ошибку при выполнении приведенного выше кода Python:

Код: Выделить всё

GetUserPass: Error 3758100487
Я снова не уверен, что DLL написана на языке C++/C, но выходные данные инструмента дампа не отображают и не обрабатываются имена функций.
Я не могу получить успешный код возврата из API - в случае успеха он должен вернуть 0.
Как я могу добиться того же и в чем проблема здесь, на моей стороне?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... -the-issue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»