bug due to wrong exemple in microsoft spec
This commit is contained in:
@@ -591,6 +591,7 @@ class SoundFlag(object):
|
|||||||
'''
|
'''
|
||||||
NONE = 0x0000
|
NONE = 0x0000
|
||||||
SOUND_BEEPS_FLAG = 0x0001
|
SOUND_BEEPS_FLAG = 0x0001
|
||||||
|
|
||||||
class RDPInfo(CompositeType):
|
class RDPInfo(CompositeType):
|
||||||
'''
|
'''
|
||||||
client informations
|
client informations
|
||||||
@@ -654,13 +655,13 @@ class ShareDataHeader(CompositeType):
|
|||||||
PDU share data header
|
PDU share data header
|
||||||
@see: http://msdn.microsoft.com/en-us/library/cc240577.aspx
|
@see: http://msdn.microsoft.com/en-us/library/cc240577.aspx
|
||||||
'''
|
'''
|
||||||
def __init__(self, size, pduType2, userId = UInt16Le()):
|
def __init__(self, size, pduType2, userId = UInt16Le(), shareId = UInt32Le()):
|
||||||
CompositeType.__init__(self)
|
CompositeType.__init__(self)
|
||||||
self.shareControlHeader = ShareControlHeader(size, PDUType.PDUTYPE_DATAPDU, userId)
|
self.shareControlHeader = ShareControlHeader(size, PDUType.PDUTYPE_DATAPDU, userId)
|
||||||
self.shareId = UInt32Le()
|
self.shareId = shareId
|
||||||
self.pad1 = UInt8()
|
self.pad1 = UInt8()
|
||||||
self.streamId = UInt8()
|
self.streamId = StreamId.STREAM_LOW
|
||||||
self.uncompressedLength = UInt16Le()
|
self.uncompressedLength = UInt16Le(lambda:(UInt16Le(size).value - 14))
|
||||||
self.pduType2 = UInt8(pduType2.value, constant = True)
|
self.pduType2 = UInt8(pduType2.value, constant = True)
|
||||||
self.compressedType = UInt8()
|
self.compressedType = UInt8()
|
||||||
self.compressedLength = UInt16Le()
|
self.compressedLength = UInt16Le()
|
||||||
@@ -1014,9 +1015,9 @@ class SynchronizePDU(CompositeType):
|
|||||||
'''
|
'''
|
||||||
@see http://msdn.microsoft.com/en-us/library/cc240490.aspx
|
@see http://msdn.microsoft.com/en-us/library/cc240490.aspx
|
||||||
'''
|
'''
|
||||||
def __init__(self, userId = UInt16Le()):
|
def __init__(self, userId = UInt16Le(), shareId = UInt32Le()):
|
||||||
CompositeType.__init__(self)
|
CompositeType.__init__(self)
|
||||||
self.shareDataHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_SYNCHRONIZE, userId)
|
self.shareDataHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_SYNCHRONIZE, userId, shareId)
|
||||||
self.messageType = UInt16Le(1, constant = True)
|
self.messageType = UInt16Le(1, constant = True)
|
||||||
self.targetUser = UInt16Le()
|
self.targetUser = UInt16Le()
|
||||||
|
|
||||||
@@ -1024,9 +1025,9 @@ class ControlPDU(CompositeType):
|
|||||||
'''
|
'''
|
||||||
@see http://msdn.microsoft.com/en-us/library/cc240492.aspx
|
@see http://msdn.microsoft.com/en-us/library/cc240492.aspx
|
||||||
'''
|
'''
|
||||||
def __init__(self, userId = UInt16Le()):
|
def __init__(self, userId = UInt16Le(), shareId = UInt32Le()):
|
||||||
CompositeType.__init__(self)
|
CompositeType.__init__(self)
|
||||||
self.shareDataHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_CONTROL, userId)
|
self.shareDataHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_CONTROL, userId, shareId)
|
||||||
self.action = UInt16Le()
|
self.action = UInt16Le()
|
||||||
self.grantId = UInt16Le()
|
self.grantId = UInt16Le()
|
||||||
self.controlId = UInt32Le()
|
self.controlId = UInt32Le()
|
||||||
@@ -1048,9 +1049,9 @@ class PersistentListPDU(CompositeType):
|
|||||||
fill with some keys from previous session
|
fill with some keys from previous session
|
||||||
@see: http://msdn.microsoft.com/en-us/library/cc240495.aspx
|
@see: http://msdn.microsoft.com/en-us/library/cc240495.aspx
|
||||||
'''
|
'''
|
||||||
def __init__(self, userId = UInt16Le()):
|
def __init__(self, userId = UInt16Le(), shareId = UInt32Le()):
|
||||||
CompositeType.__init__(self)
|
CompositeType.__init__(self)
|
||||||
self.shareControlHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_BITMAPCACHE_PERSISTENT_LIST, userId)
|
self.shareControlHeader = ShareDataHeader(lambda:sizeof(self), PDUType2.PDUTYPE2_BITMAPCACHE_PERSISTENT_LIST, userId, shareId)
|
||||||
self.numEntriesCache0 = UInt16Le()
|
self.numEntriesCache0 = UInt16Le()
|
||||||
self.numEntriesCache1 = UInt16Le()
|
self.numEntriesCache1 = UInt16Le()
|
||||||
self.numEntriesCache2 = UInt16Le()
|
self.numEntriesCache2 = UInt16Le()
|
||||||
@@ -1116,11 +1117,11 @@ class PDU(LayerAutomata):
|
|||||||
CapsType.CAPSTYPE_OFFSCREENCACHE : Capability(CapsType.CAPSTYPE_OFFSCREENCACHE, OffscreenBitmapCacheCapability()),
|
CapsType.CAPSTYPE_OFFSCREENCACHE : Capability(CapsType.CAPSTYPE_OFFSCREENCACHE, OffscreenBitmapCacheCapability()),
|
||||||
CapsType.CAPSTYPE_VIRTUALCHANNEL : Capability(CapsType.CAPSTYPE_VIRTUALCHANNEL, VirtualChannelCapability()),
|
CapsType.CAPSTYPE_VIRTUALCHANNEL : Capability(CapsType.CAPSTYPE_VIRTUALCHANNEL, VirtualChannelCapability()),
|
||||||
CapsType.CAPSTYPE_SOUND : Capability(CapsType.CAPSTYPE_SOUND, SoundCapability()),
|
CapsType.CAPSTYPE_SOUND : Capability(CapsType.CAPSTYPE_SOUND, SoundCapability()),
|
||||||
CapsType.CAPSTYPE_CONTROL : Capability(CapsType.CAPSTYPE_CONTROL, ControlCapability()),
|
#CapsType.CAPSTYPE_CONTROL : Capability(CapsType.CAPSTYPE_CONTROL, ControlCapability()),
|
||||||
CapsType.CAPSTYPE_ACTIVATION : Capability(CapsType.CAPSTYPE_ACTIVATION, WindowActivationCapability()),
|
#CapsType.CAPSTYPE_ACTIVATION : Capability(CapsType.CAPSTYPE_ACTIVATION, WindowActivationCapability()),
|
||||||
CapsType.CAPSTYPE_FONT : Capability(CapsType.CAPSTYPE_FONT, FontCapability()),
|
#CapsType.CAPSTYPE_FONT : Capability(CapsType.CAPSTYPE_FONT, FontCapability()),
|
||||||
CapsType.CAPSTYPE_COLORCACHE : Capability(CapsType.CAPSTYPE_COLORCACHE, ColorCacheCapability()),
|
#CapsType.CAPSTYPE_COLORCACHE : Capability(CapsType.CAPSTYPE_COLORCACHE, ColorCacheCapability()),
|
||||||
CapsType.CAPSTYPE_SHARE : Capability(CapsType.CAPSTYPE_SHARE, ShareCapability())
|
#CapsType.CAPSTYPE_SHARE : Capability(CapsType.CAPSTYPE_SHARE, ShareCapability())
|
||||||
}
|
}
|
||||||
#share id between client and server
|
#share id between client and server
|
||||||
self._shareId = UInt32Le()
|
self._shareId = UInt32Le()
|
||||||
@@ -1261,22 +1262,22 @@ class PDU(LayerAutomata):
|
|||||||
'''
|
'''
|
||||||
send a synchronize PDU from client to server
|
send a synchronize PDU from client to server
|
||||||
'''
|
'''
|
||||||
synchronizePDU = SynchronizePDU(self._userId)
|
synchronizePDU = SynchronizePDU(self._userId, self._shareId)
|
||||||
synchronizePDU.targetUser = self._channelId
|
synchronizePDU.targetUser = UInt16Le(self._channelId.value)
|
||||||
self._transport.send(self._channelId, synchronizePDU)
|
self._transport.send(self._channelId, synchronizePDU)
|
||||||
|
|
||||||
#ask for cooperation
|
#ask for cooperation
|
||||||
controlCooperatePDU = ControlPDU(self._userId)
|
controlCooperatePDU = ControlPDU(self._userId, self._shareId)
|
||||||
controlCooperatePDU.action = Action.CTRLACTION_COOPERATE
|
controlCooperatePDU.action = Action.CTRLACTION_COOPERATE
|
||||||
self._transport.send(self._channelId, controlCooperatePDU)
|
self._transport.send(self._channelId, controlCooperatePDU)
|
||||||
|
|
||||||
#request control
|
#request control
|
||||||
controlRequestPDU = ControlPDU(self._userId)
|
controlRequestPDU = ControlPDU(self._userId, self._shareId)
|
||||||
controlRequestPDU.action = Action.CTRLACTION_REQUEST_CONTROL
|
controlRequestPDU.action = Action.CTRLACTION_REQUEST_CONTROL
|
||||||
self._transport.send(self._channelId, controlRequestPDU)
|
self._transport.send(self._channelId, controlRequestPDU)
|
||||||
|
|
||||||
#send persistent list pdu
|
#send persistent list pdu
|
||||||
persistentListPDU = PersistentListPDU(self._userId)
|
persistentListPDU = PersistentListPDU(self._userId, self._shareId)
|
||||||
persistentListPDU.bitMask = PersistentKeyListFlag.PERSIST_FIRST_PDU | PersistentKeyListFlag.PERSIST_LAST_PDU
|
persistentListPDU.bitMask = PersistentKeyListFlag.PERSIST_FIRST_PDU | PersistentKeyListFlag.PERSIST_LAST_PDU
|
||||||
self._transport.send(self._channelId, persistentListPDU)
|
self._transport.send(self._channelId, persistentListPDU)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user