|
|
|
date: Wed, 3 Oct 2007 09:18:31 -0500,
group: microsoft.public.platformsdk.win_base_svcs
back
Re: Terminal Services
Thanks Sam,
I have included the networking group in this post.
Currently I am working with documentation found:
http://www.microsoft.com/technet/archive/termsrv/maintain/featusability/tsrvapi.mspx?mfr=true
http://msdn2.microsoft.com/en-us/library/aa383580.aspx
http://msdn2.microsoft.com/en-us/library/aa383853.aspx
http://www.codeproject.com/cs/system/TSAddinInCS.asp?df=100&forumid=358838&exp=0&select=1961960
That is all I can really find about the topic.
I am still having problems with WTSVirtualChannelRead, at least I think I
am. Nothing seems to be writtin.
Here is a brief overview of What I have done:
I created a messagelib that will contain messages I am sending back and
forth.
Class MessageHeader
int MessageType
MessageBase Message
Abstract Class MessageBase
Class StatusMessage: MessageBase
String StatusText
Now on my session component I do:
1. Call WTSVirtualChannelOpen to get a handle on the channel
2. Create a StatusMessage
StatusText = "ACK"
3. Serialize the message
4. Send the message
Now on my client component I do:
1. VirtualChannelEntry waits to be called (This is what loads the
assembly), store the handle in mHandle
point my VirtualChannelInit to the function
VirtualChannelInitEventProc
2. Once the VirtualChannelInitEventProc determines that a complete
message was send over, I deserialize and process the message
3. Determine the type of message that was send (type == 1
//StatusMessage)
4. Determine what the StatusText is "ACK"
5. Generate a reply StatusMessage "NACK"
6. Serialize the message
7. Send the message
a. open the channel using the WTSVirtualChannelOpen(mHandle,-1,
"Impact"), store the new pointer in intTemp
b. write the data using WTSVirtualChannelWrite
at this point, I believe my data is waiting for the server to pick it
up. I get a true returned from WTSVirtualChannelWrite
Back to the session component
I have a background worker process that is monitoring for pending
messages.
1. Open the channel with WTSVirtualChannelOpen
2. Read until there is nothing left to read, add the read bytes into
list<byte> using WTSVirtualChannelRead
3. If anything was read
a. Deserialize the MessageHeader
b. Determine Message Type (type == 1//StatusMessage)
c. Report StatusText "NACK"
At this point, nothing is read by the WTSVirtualChannelRead. I don't
know where my message is.
Does anyone have any ideas of where to start?
BTW, I am using C# 2005. But the concept should be the same.
Thanks in advance.
"Sam Hobbs" <samuel@social.rr.com_change_social_to_socal> wrote in message
news:OKM2HOdBIHA.3548@TK2MSFTNGP06.phx.gbl...
>I have made less progress than you. I know the documentation is vague and
>that there are not articles .... wait I think there is an article I found
>when I searched, but I forget where it is. I searched the MSDN and the
>internet using relevant function names.
>
> I assume the networking newsgroup is more likely to get answers.
>
>
> "amdrit" wrote in message
> news:%23JyHIhcBIHA.912@TK2MSFTNGP05.phx.gbl...
>> Hello,
>>
>> I am seeking guidance on working with virtual channels through terminal
>> services. I hope this is a good spot to post.
>>
>> I think what I really need to understand is the order of operation for
>> conversations on the channel.
>>
>>
>> I have been able to create a component and create a registry entry for
>> the channel in the terminal services add-on. I have successfully opened
>> the channel from the terminal server and pushed a message down to the
>> client machine.
>>
>> What I have not been able to do is respond to the message from the client
>> box. Any attempt write to the channel from the client causes mstsc to
>> crash.
>>
>>
>> MSDN does not really expound on the api, certainly it describes each of
>> the api calls and structures. I am assuming that once the channel was
>> opened and I have a handle to the channel that I can simply
>> call WTSVirtualChannelWrite to write back to the session application.
>> Even if the session application wasn't listening for the message, it
>> should be that simple.
>>
>> Now the next question is how do I poll for messages pending to be read by
>> the session application? Since I am not supposed to be blocking, I don't
>> know how to peek into a queue. I assume that I can use
>> WTSVirtualChannelRead, but I don't know how big to the pending message
>> will be.
>>
>>
>> Any help on the subject is greatly appreciated.
>>
>> Thanks in advance.
>>
>
>
date: Wed, 3 Oct 2007 11:45:42 -0500
author: amdrit
Re: Terminal Services
Is there nobody that knows how to work with RDP or is everyone just ignoring
me? I don't know where else to post my questions and my need is still real,
I am just looking for the formula to have two way communications via RDP.
"amdrit" wrote in message
news:%23yLeXzdBIHA.1164@TK2MSFTNGP02.phx.gbl...
> Thanks Sam,
>
> I have included the networking group in this post.
>
> Currently I am working with documentation found:
> http://www.microsoft.com/technet/archive/termsrv/maintain/featusability/tsrvapi.mspx?mfr=true
> http://msdn2.microsoft.com/en-us/library/aa383580.aspx
> http://msdn2.microsoft.com/en-us/library/aa383853.aspx
> http://www.codeproject.com/cs/system/TSAddinInCS.asp?df=100&forumid=358838&exp=0&select=1961960
>
> That is all I can really find about the topic.
>
> I am still having problems with WTSVirtualChannelRead, at least I think I
> am. Nothing seems to be writtin.
>
> Here is a brief overview of What I have done:
>
> I created a messagelib that will contain messages I am sending back and
> forth.
>
> Class MessageHeader
> int MessageType
> MessageBase Message
>
> Abstract Class MessageBase
>
> Class StatusMessage: MessageBase
> String StatusText
>
>
> Now on my session component I do:
>
> 1. Call WTSVirtualChannelOpen to get a handle on the channel
> 2. Create a StatusMessage
> StatusText = "ACK"
> 3. Serialize the message
> 4. Send the message
>
> Now on my client component I do:
>
> 1. VirtualChannelEntry waits to be called (This is what loads the
> assembly), store the handle in mHandle
> point my VirtualChannelInit to the function
> VirtualChannelInitEventProc
> 2. Once the VirtualChannelInitEventProc determines that a complete
> message was send over, I deserialize and process the message
> 3. Determine the type of message that was send (type == 1
> //StatusMessage)
> 4. Determine what the StatusText is "ACK"
> 5. Generate a reply StatusMessage "NACK"
> 6. Serialize the message
> 7. Send the message
> a. open the channel using the WTSVirtualChannelOpen(mHandle,-1,
> "Impact"), store the new pointer in intTemp
> b. write the data using WTSVirtualChannelWrite
>
> at this point, I believe my data is waiting for the server to pick it
> up. I get a true returned from WTSVirtualChannelWrite
>
> Back to the session component
>
> I have a background worker process that is monitoring for pending
> messages.
>
> 1. Open the channel with WTSVirtualChannelOpen
> 2. Read until there is nothing left to read, add the read bytes into
> list<byte> using WTSVirtualChannelRead
> 3. If anything was read
> a. Deserialize the MessageHeader
> b. Determine Message Type (type == 1//StatusMessage)
> c. Report StatusText "NACK"
>
> At this point, nothing is read by the WTSVirtualChannelRead. I don't
> know where my message is.
>
> Does anyone have any ideas of where to start?
>
> BTW, I am using C# 2005. But the concept should be the same.
>
> Thanks in advance.
>
>
> "Sam Hobbs" <samuel@social.rr.com_change_social_to_socal> wrote in message
> news:OKM2HOdBIHA.3548@TK2MSFTNGP06.phx.gbl...
>>I have made less progress than you. I know the documentation is vague and
>>that there are not articles .... wait I think there is an article I found
>>when I searched, but I forget where it is. I searched the MSDN and the
>>internet using relevant function names.
>>
>> I assume the networking newsgroup is more likely to get answers.
>>
>>
>> "amdrit" wrote in message
>> news:%23JyHIhcBIHA.912@TK2MSFTNGP05.phx.gbl...
>>> Hello,
>>>
>>> I am seeking guidance on working with virtual channels through terminal
>>> services. I hope this is a good spot to post.
>>>
>>> I think what I really need to understand is the order of operation for
>>> conversations on the channel.
>>>
>>>
>>> I have been able to create a component and create a registry entry for
>>> the channel in the terminal services add-on. I have successfully opened
>>> the channel from the terminal server and pushed a message down to the
>>> client machine.
>>>
>>> What I have not been able to do is respond to the message from the
>>> client box. Any attempt write to the channel from the client causes
>>> mstsc to crash.
>>>
>>>
>>> MSDN does not really expound on the api, certainly it describes each of
>>> the api calls and structures. I am assuming that once the channel was
>>> opened and I have a handle to the channel that I can simply
>>> call WTSVirtualChannelWrite to write back to the session application.
>>> Even if the session application wasn't listening for the message, it
>>> should be that simple.
>>>
>>> Now the next question is how do I poll for messages pending to be read
>>> by the session application? Since I am not supposed to be blocking, I
>>> don't know how to peek into a queue. I assume that I can use
>>> WTSVirtualChannelRead, but I don't know how big to the pending message
>>> will be.
>>>
>>>
>>> Any help on the subject is greatly appreciated.
>>>
>>> Thanks in advance.
>>>
>>
>>
>
>
date: Thu, 4 Oct 2007 12:26:54 -0500
author: amdrit
|
|