필자는 Python을 사용하여 상당히 간단한 USB 장치에서 읽고 쓰는 간단한 프로그램을 만들려고 노력하고 있습니다. 내가 가지고있는 문제는 PyWinUSB와 PyUSB가 필요로하는 것 (장치에 쓰기를 시도하는 것)이 없어 보이기 때문에, 나는 ctypes 파이썬 모듈과 원시 dll 함수를 사용하여 처음부터 작업해야한다. WinUSB 및 SetupAPI.SetupAPI.DLL.SetupDiEnumDeviceInterfaces() 함수에 마지막 값으로 전달할 대상은 무엇입니까?
저는 함수에 전달하는 구조체를 정의하는 방법에 대한 제 질문에 대한 답변을 얻을 수 있었지만 지금 가지고있는 문제는 함수의 사양에 따라 ... 글쎄, 나는 단지 그것을 인용 할 것이다.
"DeviceInterfaceData [out]
A pointer to a caller-allocated buffer that contains, on successful return, a
completed SP_DEVICE_INTERFACE_DATA structure that identifies an interface that meets
the search parameters. The caller must set DeviceInterfaceData.cbSize to
sizeof(SP_DEVICE_INTERFACE_DATA) before calling this function."
어떻게 이러한 요구 사항을 파이썬으로 변환합니까? 내가 이전 질문에 대한 답변으로 통보 있었는지에 따르면
class _SP_DEVINFO_DATA(ctypes.Structure):
_fields_ = [("cbSize", wintypes.DWORD),
("ClassGuid", (ctypes.c_char * 16)),
("DevInst", wintypes.DWORD),
("Reserved", wintypes.LPVOID)]
def __init__(self, guid, inst):
self.cbSize = ctypes.sizeof(self)
self.ClassGuid = uuid.UUID(guid).get_bytes()
self.DevInst = (wintypes.DWORD)(inst)
self.Reserved = None
def __repr__(self):
return "_SP_DEV_INFO_DATA(cbsize={}, ClassGuid={}, DevInst={})".format(
self.cbSize, uuid.UUID(bytes=self.ClassGuid), hex(self.DevInst))
:
내가 지금 함께 일하고 있어요 구조 클래스는 다음과 같습니다.
감사합니다.
않을까요 아니라면 SetupDIEnumDeviceInterfaces을() 함수가 실패했을 때 0을 반환하면 True가됩니까? 내가 [이] (http://pastebin.com/ygcUWWPM)을 실행 해 보았는데, 내가 정의한 객체에 아무 것도 나타나지 않아 키보드가 중단되기 전에 1000 번 이상 반복되었다. 다시 한 번 감사드립니다. – Will
코드를 볼 수 없습니다. 그것은 그것이 개인적인 풀이었다고 말했다. 예, 함수가 실패하면 if가 true이고 루프에서 벗어납니다. 색인을 증가시키는 것을 잊었습니까? –
죄송합니다. 다시 한번 살펴보십시오. 색인을 증가시키는 것을 기억했지만 문제는 매번 함수가 실패한다는 것입니다. – Will