Beispiel #1
0
 def _set_voice(self, val):
     try:
         val = GUID(val)
     except:
         val = self._enginesList[0].gModeID
     mode = None
     for mode in self._enginesList:
         if mode.gModeID == val:
             break
     if mode is None:
         raise ValueError("no such mode: %s" % val)
     self._currentMode = mode
     self._ttsAudio = CoCreateInstance(CLSID_MMAudioDest,
                                       IAudioMultiMediaDevice)
     self._ttsAudio.DeviceNumSet(
         nvwave.outputDeviceNameToID(config.conf["speech"]["outputDevice"],
                                     True))
     self._ttsCentral = POINTER(ITTSCentralW)()
     self._ttsEngines.Select(self._currentMode.gModeID,
                             byref(self._ttsCentral), self._ttsAudio)
     self._ttsAttrs = self._ttsCentral.QueryInterface(ITTSAttributes)
     #Find out rate limits
     hasRate = bool(mode.dwFeatures & TTSFEATURE_SPEED)
     if hasRate:
         try:
             oldVal = DWORD()
             self._ttsAttrs.SpeedGet(byref(oldVal))
             self._ttsAttrs.SpeedSet(TTSATTR_MINSPEED)
             newVal = DWORD()
             self._ttsAttrs.SpeedGet(byref(newVal))
             self._minRate = newVal.value
             self._ttsAttrs.SpeedSet(TTSATTR_MAXSPEED)
             self._ttsAttrs.SpeedGet(byref(newVal))
             # ViaVoice (and perhaps other synths) doesn't seem to like the speed being set to maximum.
             self._maxRate = newVal.value - 1
             self._ttsAttrs.SpeedSet(oldVal.value)
             if self._maxRate <= self._minRate:
                 hasRate = False
         except COMError:
             hasRate = False
     if hasRate:
         if not self.isSupported('rate'):
             self.supportedSettings.insert(1, SynthDriver.RateSetting())
     else:
         if self.isSupported("rate"): self.removeSetting("rate")
     #Find out pitch limits
     hasPitch = bool(mode.dwFeatures & TTSFEATURE_PITCH)
     if hasPitch:
         try:
             oldVal = WORD()
             self._ttsAttrs.PitchGet(byref(oldVal))
             self._ttsAttrs.PitchSet(TTSATTR_MINPITCH)
             newVal = WORD()
             self._ttsAttrs.PitchGet(byref(newVal))
             self._minPitch = newVal.value
             self._ttsAttrs.PitchSet(TTSATTR_MAXPITCH)
             self._ttsAttrs.PitchGet(byref(newVal))
             self._maxPitch = newVal.value
             self._ttsAttrs.PitchSet(oldVal.value)
             if self._maxPitch <= self._minPitch:
                 hasPitch = False
         except COMError:
             hasPitch = False
     if hasPitch:
         if not self.isSupported('pitch'):
             self.supportedSettings.insert(2, SynthDriver.PitchSetting())
     else:
         if self.isSupported('pitch'): self.removeSetting('pitch')
     #Find volume limits
     hasVolume = bool(mode.dwFeatures & TTSFEATURE_VOLUME)
     if hasVolume:
         try:
             oldVal = DWORD()
             self._ttsAttrs.VolumeGet(byref(oldVal))
             self._ttsAttrs.VolumeSet(TTSATTR_MINVOLUME)
             newVal = DWORD()
             self._ttsAttrs.VolumeGet(byref(newVal))
             self._minVolume = newVal.value
             self._ttsAttrs.VolumeSet(TTSATTR_MAXVOLUME)
             self._ttsAttrs.VolumeGet(byref(newVal))
             self._maxVolume = newVal.value
             self._ttsAttrs.VolumeSet(oldVal.value)
             if self._maxVolume <= self._minVolume:
                 hasVolume = False
         except COMError:
             hasVolume = False
     if hasVolume:
         if not self.isSupported('volume'):
             self.supportedSettings.insert(3, SynthDriver.VolumeSetting())
     else:
         if self.isSupported('volume'): self.removeSetting('volume')
Beispiel #2
0
 def __init__(self, wlan_iface_info):
     self.description = wlan_iface_info.strInterfaceDescription
     self.guid = GUID(wlan_iface_info.InterfaceGuid)
     self.guid_string = str(wlan_iface_info.InterfaceGuid)
     self.state = wlan_iface_info.isState
     self.state_string = WLAN_INTERFACE_STATE_DICT[self.state]
Beispiel #3
0
class IRunningObjectTable(IUnknown):
    _iid_ = GUID('{00000010-0000-0000-C000-000000000046}')
    _idlflags_ = []

    def __iter__(self):
        return self.EnumRunning()
Beispiel #4
0
class ISupportErrorInfo(IUnknown):
    _iid_ = GUID("{DF0B3D60-548F-101B-8E65-08002B2BD119}")
    _methods_ = [
        COMMETHOD([], HRESULT, 'InterfaceSupportsErrorInfo',
                  (['in'], POINTER(GUID), 'riid'))
    ]
Beispiel #5
0
class FontEvents(IDispatch):
    _case_insensitive_ = True
    'Event interface for the Font object'
    _iid_ = GUID('{4EF6100A-AF88-11D0-9846-00C04FC29993}')
    _idlflags_ = ['hidden']
    _methods_ = []
class StdPicture(CoClass):
    _reg_clsid_ = GUID('{0BE35204-8F91-11CE-9DE3-00AA004BB851}')
    _idlflags_ = []
    _typelib_path_ = typelib_path
    _reg_typelib_ = ('{00020430-0000-0000-C000-000000000046}', 2, 0)
class TaskbarList(CoClass):
    _reg_clsid_ = GUID('{56FDF344-FD6D-11D0-958A-006097C9A090}')
    _idlflags_ = []
    _typelib_path_ = typelib_path
    _reg_typelib_ = ('{683BF642-E9CA-4124-BE43-67065B2FA653}', 1, 0)
Beispiel #8
0
class Picture(IDispatch):
    _case_insensitive_ = True
    _iid_ = GUID('{7BF80981-BF32-101A-8BBB-00AA00300CAB}')
    _idlflags_ = []
    _methods_ = []
Beispiel #9
0
class IShellLinkA(IUnknown):
    _iid_ = GUID('{000214EE-0000-0000-C000-000000000046}')
    _methods_ = [
        COMMETHOD([], HRESULT, 'GetPath',
                  ( ['in', 'out'], c_char_p, 'pszFile' ),
                  ( ['in'], c_int, 'cchMaxPath' ),
                  ( ['in', 'out'], POINTER(WIN32_FIND_DATAA), 'pfd' ),
                  ( ['in'], DWORD, 'fFlags' )),
        COMMETHOD([], HRESULT, 'GetIDList',
                  ( ['retval', 'out'], POINTER(LPITEMIDLIST), 'ppidl' )),
        COMMETHOD([], HRESULT, 'SetIDList',
                  ( ['in'], LPCITEMIDLIST, 'pidl' )),
        COMMETHOD([], HRESULT, 'GetDescription',
                  ( ['in', 'out'], c_char_p, 'pszName' ),
                  ( ['in'], c_int, 'cchMaxName' )),
        COMMETHOD([], HRESULT, 'SetDescription',
                  ( ['in'], c_char_p, 'pszName' )),
        COMMETHOD([], HRESULT, 'GetWorkingDirectory',
                  ( ['in', 'out'], c_char_p, 'pszDir' ),
                  ( ['in'], c_int, 'cchMaxPath' )),
        COMMETHOD([], HRESULT, 'SetWorkingDirectory',
                  ( ['in'], c_char_p, 'pszDir' )),
        COMMETHOD([], HRESULT, 'GetArguments',
                  ( ['in', 'out'], c_char_p, 'pszArgs' ),
                  ( ['in'], c_int, 'cchMaxPath' )),
        COMMETHOD([], HRESULT, 'SetArguments',
                  ( ['in'], c_char_p, 'pszArgs' )),
        COMMETHOD(['propget'], HRESULT, 'Hotkey',
                  ( ['retval', 'out'], POINTER(c_short), 'pwHotkey' )),
        COMMETHOD(['propput'], HRESULT, 'Hotkey',
                  ( ['in'], c_short, 'pwHotkey' )),
        COMMETHOD(['propget'], HRESULT, 'ShowCmd',
                  ( ['retval', 'out'], POINTER(c_int), 'piShowCmd' )),
        COMMETHOD(['propput'], HRESULT, 'ShowCmd',
                  ( ['in'], c_int, 'piShowCmd' )),
        COMMETHOD([], HRESULT, 'GetIconLocation',
                  ( ['in', 'out'], c_char_p, 'pszIconPath' ),
                  ( ['in'], c_int, 'cchIconPath' ),
                  ( ['in', 'out'], POINTER(c_int), 'piIcon' )),
        COMMETHOD([], HRESULT, 'SetIconLocation',
                  ( ['in'], c_char_p, 'pszIconPath' ),
                  ( ['in'], c_int, 'iIcon' )),
        COMMETHOD([], HRESULT, 'SetRelativePath',
                  ( ['in'], c_char_p, 'pszPathRel' ),
                  ( ['in'], DWORD, 'dwReserved' )),
        COMMETHOD([], HRESULT, 'Resolve',
                  ( ['in'], c_int, 'hwnd' ),
                  ( ['in'], DWORD, 'fFlags' )),
        COMMETHOD([], HRESULT, 'SetPath',
                  ( ['in'], c_char_p, 'pszFile' )),
        ]

    def GetPath(self, flags=SLGP_SHORTPATH):
        buf = create_string_buffer(MAX_PATH)
        # We're not interested in WIN32_FIND_DATA
        self.__com_GetPath(buf, MAX_PATH, None, flags)
        return buf.value

    def GetDescription(self):
        buf = create_string_buffer(1024)
        self.__com_GetDescription(buf, 1024)
        return buf.value

    def GetWorkingDirectory(self):
        buf = create_string_buffer(MAX_PATH)
        self.__com_GetWorkingDirectory(buf, MAX_PATH)
        return buf.value

    def GetArguments(self):
        buf = create_string_buffer(1024)
        self.__com_GetArguments(buf, 1024)
        return buf.value

    def GetIconLocation(self):
        iIcon = c_int()
        buf = create_string_buffer(MAX_PATH)
        self.__com_GetIconLocation(buf, MAX_PATH, byref(iIcon))
        return buf.value, iIcon.value
Beispiel #10
0
# Used in SPL add-on until merged into NVDA directly (Joseph Lee)

from nvdaBuiltin.gui.nvdaControls import *
from . import accPropServer
import oleacc
import winUser
import comtypes
from comtypes import GUID

# Apart from certain controls from check list box and friends, it is identical to NVDA Core version.

# GUIDS for IAccessible properties that can be overridden by means of annotation.
#Use these to look up the GUID needed when implementing a server.
#Number of digits Format: "{8-4-4-4-12}"
PROPID_ACC_NAME = GUID("{608d3df8-8128-4aa7-a428-f55e49267291}")
PROPID_ACC_VALUE = GUID("{123fe443-211a-4615-9527-c45a7e93717a}")
PROPID_ACC_DESCRIPTION = GUID("{4d48dfe4-bd3f-491f-a648-492d6f20c588}")
PROPID_ACC_ROLE = GUID("{CB905FF2-7BD1-4C05-B3C8-E6C241364D70}")
PROPID_ACC_STATE = GUID("{A8D4D5B0-0A21-42D0-A5C0-514E984F457B}")
PROPID_ACC_HELP = GUID("{c831e11f-44db-4a99-9768-cb8f978b7231}")
PROPID_ACC_KEYBOARDSHORTCUT = GUID("{7d9bceee-7d1e-4979-9382-5180f4172c34}")
PROPID_ACC_DEFAULTACTION = GUID("{180c072b-c27f-43c7-9922-f63562a4632b}")
PROPID_ACC_VALUEMAP = GUID("{da1c3d79-fc5c-420e-b399-9d1533549e75}")
PROPID_ACC_ROLEMAP = GUID("{f79acda2-140d-4fe6-8914-208476328269}")
PROPID_ACC_STATEMAP = GUID("{43946c5e-0ac0-4042-b525-07bbdbe17fa7}")
PROPID_ACC_FOCUS = GUID("{6eb335df-1c29-4127-b12c-dee9fd157f2b}")
PROPID_ACC_SELECTION = GUID("{b99d073c-d731-405b-9061-d95e8f842984}")
PROPID_ACC_PARENT = GUID("{474c22b6-ffc2-467a-b1b5-e958b4657330}")
PROPID_ACC_NAV_UP = GUID("{016e1a2b-1a4e-4767-8612-3386f66935ec}")
PROPID_ACC_NAV_LEFT = GUID("{228086cb-82f1-4a39-8705-dcdc0fff92f5}")
Beispiel #11
0
class ShellLink(CoClass):
    'ShellLink class'
    _reg_clsid_ = GUID('{00021401-0000-0000-C000-000000000046}')
    _idlflags_ = []
    _com_interfaces_ = [IShellLinkW, IShellLinkA]
Beispiel #12
0
class IStream(ISequentialStream):
    _iid_ = GUID('{0000000C-0000-0000-C000-000000000046}')
    _idlflags_ = []
Beispiel #13
0
class IEnumString(IUnknown):
    _iid_ = GUID('{00000101-0000-0000-C000-000000000046}')
    _idlflags_ = []
Beispiel #14
0
DISPATCH_METHOD = 1
DISPATCH_PROPERTYGET = 2
DISPATCH_PROPERTYPUT = 4
DISPATCH_PROPERTYPUTREF = 8

tagINVOKEKIND = c_int
INVOKE_FUNC = DISPATCH_METHOD
INVOKE_PROPERTYGET = DISPATCH_PROPERTYGET
INVOKE_PROPERTYPUT = DISPATCH_PROPERTYPUT
INVOKE_PROPERTYPUTREF = DISPATCH_PROPERTYPUTREF
INVOKEKIND = tagINVOKEKIND

################################
# helpers
IID_NULL = GUID()
riid_null = byref(IID_NULL)

# 30. December 1899, midnight.  For VT_DATE.
_com_null_date = datetime.datetime(1899, 12, 30, 0, 0, 0)

################################################################
# VARIANT, in all it's glory.
VARENUM = c_int  # enum
VT_EMPTY = 0
VT_NULL = 1
VT_I2 = 2
VT_I4 = 3
VT_R4 = 4
VT_R8 = 5
VT_CY = 6
class ITaskbarList(IUnknown):
    _case_insensitive_ = True
    _iid_ = GUID('{56FDF342-FD6D-11D0-958A-006097C9A090}')
    _idlflags_ = []
Beispiel #16
0
class IDispatch(IUnknown):
    _iid_ = GUID("{00020400-0000-0000-C000-000000000046}")
    _methods_ = [
        COMMETHOD([], HRESULT, 'GetTypeInfoCount', (['out'], POINTER(UINT))),
        COMMETHOD(
            [],
            HRESULT,
            'GetTypeInfo',
            (['in'], UINT, 'index'),
            (['in'], LCID, 'lcid', 0),
            ## Normally, we would declare this parameter in this way:
            ##                  (['out'], POINTER(POINTER(ITypeInfo)) ) ),
            ## but we cannot import comtypes.typeinfo at the top level (recursive imports!).
            (['out'], POINTER(POINTER(IUnknown)))),
        STDMETHOD(
            HRESULT, 'GetIDsOfNames',
            [POINTER(IID),
             POINTER(c_wchar_p), UINT, LCID,
             POINTER(DISPID)]),
        STDMETHOD(HRESULT, 'Invoke', [
            DISPID,
            POINTER(IID), LCID, WORD,
            POINTER(DISPPARAMS),
            POINTER(VARIANT),
            POINTER(EXCEPINFO),
            POINTER(UINT)
        ]),
    ]

    def GetTypeInfo(self, index, lcid=0):
        """Return type information.  Index 0 specifies typeinfo for IDispatch"""
        import comtypes.typeinfo
        result = self._GetTypeInfo(index, lcid)
        return result.QueryInterface(comtypes.typeinfo.ITypeInfo)

    def GetIDsOfNames(self, *names, **kw):
        """Map string names to integer ids."""
        lcid = kw.pop("lcid", 0)
        assert not kw
        arr = (c_wchar_p * len(names))(*names)
        ids = (DISPID * len(names))()
        self.__com_GetIDsOfNames(riid_null, arr, len(names), lcid, ids)
        return ids[:]

    def _invoke(self, memid, invkind, lcid, *args):
        var = VARIANT()
        argerr = c_uint()
        dp = DISPPARAMS()

        if args:
            array = (VARIANT * len(args))()

            for i, a in enumerate(args[::-1]):
                array[i].value = a

            dp.cArgs = len(args)
            if invkind in (DISPATCH_PROPERTYPUT, DISPATCH_PROPERTYPUTREF):
                dp.cNamedArgs = 1
                dp.rgdispidNamedArgs = pointer(DISPID(DISPID_PROPERTYPUT))
            dp.rgvarg = array

        self.__com_Invoke(memid, riid_null, lcid, invkind, dp, var, None,
                          argerr)
        return var._get_value(dynamic=True)

    def Invoke(self, dispid, *args, **kw):
        """Invoke a method or property."""

        # Memory management in Dispatch::Invoke calls:
        # http://msdn.microsoft.com/library/en-us/automat/htm/chap5_4x2q.asp
        # Quote:
        #     The *CALLING* code is responsible for releasing all strings and
        #     objects referred to by rgvarg[ ] or placed in *pVarResult.
        #
        # For comtypes this is handled in DISPPARAMS.__del__ and VARIANT.__del__.
        _invkind = kw.pop("_invkind", 1)  # DISPATCH_METHOD
        _lcid = kw.pop("_lcid", 0)
        if kw:
            raise ValueError("named parameters not yet implemented")

        result = VARIANT()
        excepinfo = EXCEPINFO()
        argerr = c_uint()

        if _invkind in (DISPATCH_PROPERTYPUT,
                        DISPATCH_PROPERTYPUTREF):  # propput
            array = (VARIANT * len(args))()

            for i, a in enumerate(args[::-1]):
                array[i].value = a

            dp = DISPPARAMS()
            dp.cArgs = len(args)
            dp.cNamedArgs = 1
            dp.rgvarg = array
            dp.rgdispidNamedArgs = pointer(DISPID(DISPID_PROPERTYPUT))
        else:
            array = (VARIANT * len(args))()

            for i, a in enumerate(args[::-1]):
                array[i].value = a

            dp = DISPPARAMS()
            dp.cArgs = len(args)
            dp.cNamedArgs = 0
            dp.rgvarg = array

        try:
            self.__com_Invoke(dispid, riid_null, _lcid, _invkind, byref(dp),
                              byref(result), byref(excepinfo), byref(argerr))
        except COMError, err:
            (hresult, text, details) = err.args
            if hresult == DISP_E_EXCEPTION:
                details = (excepinfo.bstrDescription, excepinfo.bstrSource,
                           excepinfo.bstrHelpFile, excepinfo.dwHelpContext,
                           excepinfo.scode)
                raise COMError(hresult, text, details)
            elif hresult == DISP_E_PARAMNOTFOUND:
                # MSDN says: You get the error DISP_E_PARAMNOTFOUND
                # when you try to set a property and you have not
                # initialized the cNamedArgs and rgdispidNamedArgs
                # elements of your DISPPARAMS structure.
                #
                # So, this looks like a bug.
                raise COMError(hresult, text, argerr.value)
            elif hresult == DISP_E_TYPEMISMATCH:
                # MSDN: One or more of the arguments could not be
                # coerced.
                #
                # Hm, should we raise TypeError, or COMError?
                raise COMError(hresult, text, ("TypeError: Parameter %s" %
                                               (argerr.value + 1), args))
            raise
        return result._get_value(dynamic=True)
class ITaskbarList2(ITaskbarList):
    _case_insensitive_ = True
    _iid_ = GUID('{602D4995-B13A-429B-A66E-1935E44F4317}')
    _idlflags_ = []
Beispiel #18
0
class Font(IDispatch):
    _case_insensitive_ = True
    _iid_ = GUID('{BEF6E003-A874-101A-8BBA-00AA00300CAB}')
    _idlflags_ = []
    _methods_ = []
class ITaskbarList3(ITaskbarList2):
    _case_insensitive_ = True
    _iid_ = GUID('{EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}')
    _idlflags_ = []
Beispiel #20
0
class IFont(IUnknown):
    _case_insensitive_ = True
    'Font Object'
    _iid_ = GUID('{BEF6E002-A874-101A-8BBA-00AA00300CAB}')
    _idlflags_ = ['hidden']
Beispiel #21
0
class DbgEngEventCallbacks(CoClass):
	
	_reg_clsid_ = GUID('{EAC5ACAA-7BD0-4f1f-8DEB-DF2862A7E85B}')
	_reg_threading_ = "Both"
	_reg_progid_ = "PyDbgEngLib.DbgEngEventCallbacks.1"
	_reg_novers_progid_ = "PyDbgEngLib.DbgEngEventCallbacks"
	_reg_desc_ = "Callback class!"
	_reg_clsctx_ = comtypes.CLSCTX_INPROC_SERVER
	
	_com_interfaces_ = [DbgEng.IDebugEventCallbacks, DbgEng.IDebugOutputCallbacks,
						comtypes.typeinfo.IProvideClassInfo2,
						comtypes.errorinfo.ISupportErrorInfo,
						comtypes.connectionpoints.IConnectionPointContainer]
	
	def IDebugOutputCallbacks_Output(self, arg1, arg2, arg3 = None):
		
		# >= v0.5.1
		if arg3 == None:
			unknown = None
			mask = arg1
			text = arg2
		# <= 0.4.2
		else:
			unknown = arg1
			mask = arg2
			text = arg3
		
		self._pyDbgEng = PyDbgEng.fuzzyWuzzy
		self._pyDbgEng.output_callbacks_sink.Output(unknown, mask, text)
		return S_OK
	
	def IDebugEventCallbacks_Breakpoint(self, unknown, bp = None):
		
		# >= v0.5.1
		if bp == None:
			bp = unknown
			unknown = None
		
		return self._pyDbgEng.Breakpoint(unknown, bp)
	
	def IDebugEventCallbacks_ChangeDebuggeeState(self, unknown, flags, arg = None):
		# >= v0.5.1
		if arg == None:
			arg = flags
			flags = unknown
			unknown = None
		
		return self._pyDbgEng.ChangeDebuggeeState(unknown, flags, arg)
	
	def IDebugEventCallbacks_ChangeEngineState(self, unknown, flags, arg = None):
		# >= v0.5.1
		if arg == None:
			arg = flags
			flags = unknown
			unknown = None
		
		return self._pyDbgEng.ChangeEngineState(unknown, flags, arg)
	
	def IDebugEventCallbacks_Exception(self, unknown, exception, firstChance = None):
		# >= v0.5.1:
		if firstChance == None:
			firstChance = exception
			exception = unknown
			unknown = None
		
		return self._pyDbgEng.Exception(unknown, exception, firstChance)
	
	def IDebugEventCallbacks_GetInterestMask(self, unknown = None, mask = None):
		# Superhack!
		self._pyDbgEng = PyDbgEng.fuzzyWuzzy
		
		# For v0.5.1 and on
		if unknown == None and mask == None:
			return self._pyDbgEng.GetInterestMask()
		
		# For v0.4 and lower
		mask[0] = self._pyDbgEng.GetInterestMask()
		return S_OK
	
	def IDebugEventCallbacks_LoadModule(self, unknown, imageFileHandle, baseOffset, moduleSize, moduleName, imageName, checkSum, timeDateStamp = None):
		# >= v0.5.1
		if timeDateStamp == None:
			timeDateStamp = checkSum
			checkSum = imageName
			imageName = moduleName
			moduleName = moduleSize
			moduleSize = baseOffset
			baseOffset = imageFileHandle
			imageFileHandle = unknown
			unknown = None
		
		return self._pyDbgEng.LoadModule(unknown, imageFileHandle, baseOffset, moduleSize, moduleName, imageName, checkSum, timeDateStamp)
	
	def IDebugEventCallbacks_UnloadModule(self, unknown, imageBaseName, baseOffset = None):
		# >= 0.5.1
		if baseOffset == None:
			baseOffset = imageBaseName
			imageBaseName = unknown
			unknown = None
		
		return self._pyDbgEng.UnloadModule(unknown, imageBaseName, baseOffset)
	
	def IDebugEventCallbacks_CreateProcess(self, unknown, imageFileHandle, handle, baseOffset, moduleSize,
										   moduleName, imageName, checkSum, timeDateStamp,
										   initialThreadHandle, threadDataOffset, startOffset = None):
		# >= 0.5.1
		if startOffset == None:
			startOffset = threadDataOffset
			threadDataOffset = initialThreadHandle
			initialThreadHandle = timeDateStamp
			timeDataStamp = checkSum
			checkSum = imageName
			imageName = moduleName
			moduleName = moduleSize
			moduleSize = baseOffset
			baseOffset = handle
			handle = imageFileHandle
			imageFileHandle = unknown
			unknown = None
			
		return self._pyDbgEng.CreateProcess(unknown, imageFileHandle, handle, baseOffset, moduleSize, moduleName, imageName, checkSum, timeDateStamp,
										   initialThreadHandle, threadDataOffset, startOffset)
	
	def IDebugEventCallbacks_ExitProcess(self, unknown, exitCode = None):
		# >= 0.5.1
		if exitCode == None:
			exitCode = unknown
			unknown = None
			
		return self._pyDbgEng.ExitProcess(unknown, exitCode)
	
	def IDebugEventCallbacks_SessionStatus(self, unknown, status = None):
		# >= 0.5.1
		if status == None:
			status = unknown
			unknown = None
			
		return self._pyDbgEng.SessionStatus(unknown, status)
	
	def IDebugEventCallbacks_ChangeSymbolState(self, unknown, flags, arg = None):
		# >= 0.5.1
		if arg == None:
			arg = flags
			flags = unknown
			unknown = None
		
		return self._pyDbgEng.ChangeSymbolState(unknown, flags, arg)
	
	def IDebugEventCallbacks_SystemError(self, unknown, error, level = None):
		# >= 0.5.1
		if level == None:
			level = error
			error = unknown
			unknown = None
			
		return self._pyDbgEng.SystemError(unknown, error, level)
	
	def IDebugEventCallbacks_CreateThread(self, unknown, handle, dataOffset, startOffset = None):
		# >= 0.5.1
		if startOffset == None:
			startOffset = dataOffset
			dataOffset = handle
			handle = unknown
			unknown = None
			
		return self._pyDbgEng.CreateThread(handle, unknown, dataOffset, startOffset)
	
	def IDebugEventCallbacks_ExitThread(self, unknown, exitCode = None):
		# >= 0.5.1
		if exitCode == None:
			exitCode = unknown
			unknown = None
			
		return self._pyDbgEng.ExitThread(unknown, exitCode)
class IPicture(IUnknown):
    _case_insensitive_ = True
    'Picture Object'
    _iid_ = GUID('{7BF80980-BF32-101A-8BBB-00AA00300CAB}')
    _idlflags_ = ['hidden']
Beispiel #23
0
    HANDLE,
    POINTER(SP_DEVICE_INTERFACE_DATA),
    POINTER(SP_DEVICE_INTERFACE_DETAIL_DATA), DWORD,
    POINTER(DWORD),
    POINTER(SP_DEVINFO_DATA)
]

CM_Get_Child = windll.CfgMgr32.CM_Get_Child
CM_Get_Child.restype = DWORD
CM_Get_Child.argtypes = [POINTER(DWORD), DWORD, ULONG]

CM_Get_Sibling = windll.CfgMgr32.CM_Get_Sibling
CM_Get_Sibling.restype = DWORD
CM_Get_Sibling.argtypes = [POINTER(DWORD), DWORD, ULONG]

GUID_DEVINTERFACE_USB_DEVICE = GUID('{A5DCBF10-6530-11D2-901F-00C04FB951ED}')
GUID_DEVINTERFACE_DISK = GUID('{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}')
DIGCF_PRESENT = 2
DIGCF_DEVICEINTERFACE = 16


class MscContext(BaseUsbContext):
    def __init__(self):
        super(MscContext, self).__init__('Windows-MSC', USB_CLASS_MSC)

    def listDevices(self, vendor):
        return (dev for dev in _listDevices() if dev.idVendor == vendor)

    def openDevice(self, device):
        return _MscDriver(device.handle)