def device_extension_size(self): buf = AllocateReadBuffer(sizeof_ulong()) code = IOCTL_TRACER_CONTROL_DEVEXT_SIZE result = self.ioctl(code, None, buf) return ulong(result)
def ReceiveThread(self): from win32event import ( ResetEvent, MsgWaitForMultipleObjects, QS_ALLINPUT, WAIT_OBJECT_0, WAIT_TIMEOUT, ) from win32file import ReadFile, AllocateReadBuffer, GetOverlappedResult from win32api import GetLastError continueLoop = True overlapped = self.serial._overlappedRead hComPort = self.serial.hComPort hEvent = overlapped.hEvent stopEvent = self.stopEvent n = 1 waitingOnRead = False buf = AllocateReadBuffer(n) while continueLoop: if not waitingOnRead: ResetEvent(hEvent) hr, _ = ReadFile(hComPort, buf, overlapped) if hr == 997: waitingOnRead = True elif hr == 0: pass #n = GetOverlappedResult(hComPort, overlapped, 1) #self.HandleChar(str(buf)) else: self.PrintError("error") raise rc = MsgWaitForMultipleObjects( (hEvent, stopEvent), 0, 1000, QS_ALLINPUT ) if rc == WAIT_OBJECT_0: n = GetOverlappedResult(hComPort, overlapped, 1) if n: self.HandleChar(str(buf)) #else: # print "WAIT_OBJECT_0", n, str(buf[:n]) waitingOnRead = False elif rc == WAIT_OBJECT_0+1: continueLoop = False elif rc == WAIT_TIMEOUT: pass else: self.PrintError("unknown message")
def addWatch(self, path, mask=0): """Add watcher for path""" super(WinFileSysMonitor, self).addWatch(path, mask) handle = CreateFileW( path, FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE, None, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, None) buf = AllocateReadBuffer(self.buf_size) if not mask: mask = self.defaultMask self.__lock.acquire() self.ioComPort = CreateIoCompletionPort(handle, self.ioComPort, self.comKey, 0) self.watchList.append({'mask': mask, 'path': path, 'handle': handle, 'buffer': buf}) self.comKey += 1 self.__lock.release()
def cr3(self): buf = AllocateReadBuffer(sizeof_ulonglong()) code = IOCTL_TRACER_CONTROL_READ_CR3 result = self.ioctl(code, None, buf) return ulonglong(result)