我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用ctypes.FormatError()。
def FormatError(code): code = int(long(code)) try: if GuessStringType.t_default == GuessStringType.t_ansi: FormatMessage = windll.kernel32.FormatMessageA FormatMessage.argtypes = [DWORD, LPVOID, DWORD, DWORD, LPSTR, DWORD] FormatMessage.restype = DWORD lpBuffer = ctypes.create_string_buffer(1024) else: FormatMessage = windll.kernel32.FormatMessageW FormatMessage.argtypes = [DWORD, LPVOID, DWORD, DWORD, LPWSTR, DWORD] FormatMessage.restype = DWORD lpBuffer = ctypes.create_unicode_buffer(1024) ##FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000 ##FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200 success = FormatMessage(0x1200, None, code, 0, lpBuffer, 1024) if success: return lpBuffer.value except Exception: pass if GuessStringType.t_default == GuessStringType.t_ansi: return "Error code 0x%.8X" % code return u"Error code 0x%.8X" % code
def inet_pton(address_family, ip_string): if address_family == socket.AF_INET: return socket.inet_aton(ip_string) addr = sockaddr() addr.sa_family = address_family addr_size = ctypes.c_int(ctypes.sizeof(addr)) if WSAStringToAddressA( ip_string, address_family, None, ctypes.byref(addr), ctypes.byref(addr_size) ) != 0: raise socket.error(ctypes.FormatError()) if address_family == socket.AF_INET6: return ctypes.string_at(addr.ipv6_addr, 16) raise socket.error('unknown address family')
def win_service_report_event(service_name, msg, is_error=True): with open('C:/sshkeys/log', 'a', encoding='utf-8') as f: f.write(msg + '\n') event_log = advapi32.RegisterEventSourceW(None, service_name) if not event_log: raise OSError('Could not report event: %s' % ctypes.FormatError()) try: type_id = 0x0001 if is_error else 0x0004 event_id = 0xc0000000 if is_error else 0x40000000 lines = _ctypes_array(LPTSTR, [msg]) if not advapi32.ReportEventW( event_log, type_id, 0, event_id, None, len(lines), 0, lines, None): raise OSError('Event reporting failed: %s' % ctypes.FormatError()) finally: advapi32.DeregisterEventSource(event_log)
def win_service_main(service_name, real_main, argc, argv_raw): try: # args = [argv_raw[i].value for i in range(argc)] stop_event = threading.Event() handler = HandlerEx(functools.partial(stop_event, win_service_handler)) h = advapi32.RegisterServiceCtrlHandlerExW(service_name, handler, None) if not h: raise OSError('Handler registration failed: %s' % ctypes.FormatError()) TODO except Exception as e: tb = traceback.format_exc() msg = str(e) + '\n' + tb win_service_report_event(service_name, msg, is_error=True) raise
def open(self): """ Open device to query properties :return: context """ handle = _setupapi.SetupDiCreateDeviceInfoList(None, None) if handle == -1: err_no = ctypes.GetLastError() raise WindowsError(err_no, ctypes.FormatError(err_no)) try: dev_info = DeviceInfoData() if not _setupapi.SetupDiOpenDeviceInfoW(handle, ctypes.create_unicode_buffer(self._instance_id), None, DIOD_INHERIT_CLASSDRVS, ctypes.byref(dev_info)): err_no = ctypes.GetLastError() raise WindowsError(err_no, ctypes.FormatError(err_no)) self._handle = (handle, dev_info, self._handle) # Stack yield self finally: if self._handle is not None and \ self._handle[0] == handle: # If last handle is opened in this function, pop it self._handle = self._handle[2] _setupapi.SetupDiDestroyDeviceInfoList(handle) # Close handle
def get_property_keys(self): """ Get all device property keys :return: Iterable of device property keys """ if self._handle is None: with self.open(): return self.get_property_keys() handle, dev_info, _ = self._handle required_size = ctypes.c_ulong() if not _setupapi.SetupDiGetDevicePropertyKeys(handle, ctypes.byref(dev_info), None, 0, ctypes.byref(required_size), 0): err_no = ctypes.GetLastError() if err_no == 122: # ERROR_INSUFFICIENT_BUFFER # noinspection SpellCheckingInspection devpkeys = (DevicePropertyKey * required_size.value)() if _setupapi.SetupDiGetDevicePropertyKeys(handle, ctypes.byref(dev_info), ctypes.byref(devpkeys), required_size.value, None, 0): return list(devpkeys) err_no = ctypes.GetLastError() raise WindowsError(err_no, ctypes.FormatError(err_no)) return []
def inet_pton(address_family, ip_string): addr = sockaddr() addr.sa_family = address_family addr_size = ctypes.c_int(ctypes.sizeof(addr)) if WSAStringToAddressA( ip_string, address_family, None, ctypes.byref(addr), ctypes.byref(addr_size) ) != 0: raise socket.error(ctypes.FormatError()) if address_family == socket.AF_INET: return ctypes.string_at(addr.ipv4_addr, 4) if address_family == socket.AF_INET6: return ctypes.string_at(addr.ipv6_addr, 16) raise socket.error('unknown address family')
def _read_remote_string(self, address, as_unicode=True): """Reads a string from Winamp's memory address space.""" if not self.wa_hproc: #print("Trying to read Winamp's memory without having found any instance!") return None buflen = 1024 if as_unicode: buffer = ctypes.create_unicode_buffer(buflen) else: buffer = ctypes.create_string_buffer(buflen) bytes_read = ctypes.c_size_t(0) if not ctypes.windll.kernel32.ReadProcessMemory( self.wa_hproc, address, buffer, buflen, ctypes.byref(bytes_read)): winerr = ctypes.GetLastError() #print( # "Failed to read memory from Winamp's memory space:", # ctypes.FormatError(winerr)) return None return buffer.value
def inet_ntop(address_family, packed_ip): if address_family == socket.AF_INET: return socket.inet_ntoa(packed_ip) addr = sockaddr() addr.sa_family = address_family addr_size = ctypes.c_int(ctypes.sizeof(addr)) ip_string = ctypes.create_string_buffer(128) ip_string_size = ctypes.c_int(ctypes.sizeof(ip_string)) if address_family == socket.AF_INET6: if len(packed_ip) != ctypes.sizeof(addr.ipv6_addr): raise socket.error('packed IP wrong length for inet_ntoa') ctypes.memmove(addr.ipv6_addr, packed_ip, 16) else: raise socket.error('unknown address family') if WSAAddressToStringA( ctypes.byref(addr), addr_size, None, ip_string, ctypes.byref(ip_string_size) ) != 0: raise socket.error(ctypes.FormatError()) return ip_string[:ip_string_size.value - 1]
def _lock_file(f, exclusive): overlapped = OVERLAPPED() overlapped.Offset = 0 overlapped.OffsetHigh = 0 overlapped.hEvent = 0 f._lock_file_overlapped_p = ctypes.pointer(overlapped) handle = msvcrt.get_osfhandle(f.fileno()) if not LockFileEx(handle, 0x2 if exclusive else 0x0, 0, whole_low, whole_high, f._lock_file_overlapped_p): raise OSError('Locking file failed: %r' % ctypes.FormatError())
def _unlock_file(f): assert f._lock_file_overlapped_p handle = msvcrt.get_osfhandle(f.fileno()) if not UnlockFileEx(handle, 0, whole_low, whole_high, f._lock_file_overlapped_p): raise OSError('Unlocking file failed: %r' % ctypes.FormatError())
def win_error(error, filename): exc = WindowsError(error, ctypes.FormatError(error)) exc.filename = filename return exc
def win_install_service(service_name, cmdline): manager = win_OpenSCManager() try: h = advapi32.CreateServiceW( manager, service_name, None, SC_MANAGER_CREATE_SERVICE, SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, cmdline, None, None, None, None, None) if not h: raise OSError('Service creation failed: %s' % ctypes.FormatError()) advapi32.CloseServiceHandle(h) finally: advapi32.CloseServiceHandle(manager)
def win_uninstall_service(service_name): manager = win_OpenSCManager() try: h = advapi32.OpenServiceW(manager, service_name, DELETE) if not h: raise OSError('Could not find service %s: %s' % ( service_name, ctypes.FormatError())) try: if not advapi32.DeleteService(h): raise OSError('Deletion failed: %s' % ctypes.FormatError()) finally: advapi32.CloseServiceHandle(h) finally: advapi32.CloseServiceHandle(manager)
def win_service_set_status(handle, status_code): svcStatus = SERVICE_STATUS() svcStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS svcStatus.dwCurrentState = status_code svcStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP svcStatus.dwServiceSpecificExitCode = 0 if not advapi32.SetServiceStatus(handle, ctypes.byref(svcStatus)): raise OSError('SetServiceStatus failed: %r' % ctypes.FormatError())
def inet_pton(address_family, ip_string): addr = _sockaddr() ip_string = ip_string.encode('ascii') addr.sa_family = address_family addr_size = ctypes.c_int(ctypes.sizeof(addr)) if WSAStringToAddressA(ip_string, address_family, None, ctypes.byref(addr), ctypes.byref(addr_size)) != 0: raise socket.error(ctypes.FormatError()) if address_family == socket.AF_INET: return ctypes.string_at(addr.ipv4_addr, 4) if address_family == socket.AF_INET6: return ctypes.string_at(addr.ipv6_addr, 16) raise socket.error('unknown address family')
def __init__(self, guid="{00000000-0000-0000-0000-000000000000}"): super().__init__() if isinstance(guid, str): ret = _ole32.CLSIDFromString(ctypes.create_unicode_buffer(guid), ctypes.byref(self)) if ret < 0: err_no = ctypes.GetLastError() raise WindowsError(err_no, ctypes.FormatError(err_no), guid) else: ctypes.memmove(ctypes.byref(self), bytes(guid), ctypes.sizeof(self))
def __str__(self): s = ctypes.c_wchar_p() ret = _ole32.StringFromCLSID(ctypes.byref(self), ctypes.byref(s)) if ret < 0: err_no = ctypes.GetLastError() raise WindowsError(err_no, ctypes.FormatError(err_no)) ret = str(s.value) _ole32.CoTaskMemFree(s) return ret
def inet_ntop(address_family, packed_ip): addr = sockaddr() addr.sa_family = address_family addr_size = ctypes.c_int(ctypes.sizeof(addr)) ip_string = ctypes.create_string_buffer(128) ip_string_size = ctypes.c_int(ctypes.sizeof(ip_string)) if address_family == socket.AF_INET: if len(packed_ip) != ctypes.sizeof(addr.ipv4_addr): raise socket.error('packed IP wrong length for inet_ntoa') ctypes.memmove(addr.ipv4_addr, packed_ip, 4) elif address_family == socket.AF_INET6: if len(packed_ip) != ctypes.sizeof(addr.ipv6_addr): raise socket.error('packed IP wrong length for inet_ntoa') ctypes.memmove(addr.ipv6_addr, packed_ip, 16) else: raise socket.error('unknown address family') if WSAAddressToStringA( ctypes.byref(addr), addr_size, None, ip_string, ctypes.byref(ip_string_size) ) != 0: raise socket.error(ctypes.FormatError()) return ip_string[:ip_string_size.value - 1] # Adding our two functions to the socket library
def get_exception_description(self): """ @rtype: str @return: User-friendly name of the exception. """ code = self.get_exception_code() description = self.__exceptionDescription.get(code, None) if description is None: try: description = 'Exception code %s (%s)' description = description % (HexDump.integer(code), ctypes.FormatError(code)) except OverflowError: description = 'Exception code %s' % HexDump.integer(code) return description
def WinError(code=None, descr=None): if code is None: code = ctypes.GetLastError() if descr is None: descr = ctypes.FormatError(code).strip() return WindowsError(code, descr)
def updateStringBundleInExe( exe_filename, stringtable_id_name, all_strings ): stringtable_id = resource_ids[ stringtable_id_name ] while len(all_strings) != STRINGTABLE_BUNDLE_SIZE: all_strings.append( '' ) all_strtab_data = [] for s in all_strings: count = struct.pack( '<H', len( s ) ) all_strtab_data.append( count ) if len(s) > 0: data = s.encode( 'utf-16' )[2:] all_strtab_data.append( data ) strtab_data = b''.join( all_strtab_data ) language = 0 strtab_id = stringtable_id//STRINGTABLE_BUNDLE_SIZE + 1 h = BeginUpdateResource( exe_filename, False ) #print( h, ctypes.FormatError() ) rc = UpdateResource( h, RT_STRING, strtab_id, language, strtab_data, len(strtab_data) ) #print( rc, ctypes.FormatError() ) rc = EndUpdateResource( h, False ); #print( rc, ctypes.FormatError() ) return 0
def updateVersionInfoInExe( exe_filename, version, description ): h = BeginUpdateResource( exe_filename, False ) language = 0 rc = UpdateResource( h, RT_VERSION, 1, language, data, len(data) ) print( rc, ctypes.FormatError() ) rc = EndUpdateResource( h, False ); print( rc, ctypes.FormatError() ) return 0