Ejemplo n.º 1
0
    def device_extension_size(self):

        buf = AllocateReadBuffer(sizeof_ulong())
        code = IOCTL_TRACER_CONTROL_DEVEXT_SIZE

        result = self.ioctl(code, None, buf)

        return ulong(result)
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
    def cr3(self):
        buf = AllocateReadBuffer(sizeof_ulonglong())
        code = IOCTL_TRACER_CONTROL_READ_CR3

        result = self.ioctl(code, None, buf)
        return ulonglong(result)