Я пытаюсь получить полную реализацию "только для Python" * конкретного ioctl.
Это включает создание упакованной структуры. Структура C-Equivalent не имеет типизированных указателей, а хранит адреса указателей как 64-разрядные целые числа без знака. В буфере, указанном по этим адресам, будут храниться данные возврата из вызова. В настоящий момент я пытаюсь заставить упакованную структуру правильно построить.
В качестве нерабочего примера
ret_buf = ctypes.create_string_buffer(4096)
struct.pack("I", ctypes.POINTER(ret_buf))
Это жалуется на то, что аргумент не является целым числом. Варианты использования по ссылке, c_char_p и т. Д. Также не работают.
Есть ли способ получить адрес, возвращаемый как целое число? Или аналогично серии приведений, которые могут сработать?
* Я знаю, что мы могли бы сделать это с помощью C-Bindings и некоторых оболочек, но, если это возможно, мы бы хотели сохранить в Python столько же, сколько и мыможет упростить процесс сборки и интеграции.