Microsoft Transportation
Microsoft Transportation

User mode transport of the library via virtual channels
Written by:
Sergey Popenko,
Junior Developer of Driver Development Team,
General description
Virtual channels are software extensions that can be used to add functional enhancements to a Remote Desktop Services application. Examples of functional enhancements may include support for special types of hardware, audio, or other additions to the core functionality provided by the Remote Desktop Services Remote Desktop Protocol (RDP).
To use virtual channels, you should provide the server-side and client-side modules of the virtual channels application. The server-side module can be a user-mode application or a kernel-mode driver. The client-side module must be a DLL.
Library description
In this article, we provide the library which can be used in client – server applications to cover transport layer using virtual channels. Also we attached sample add-in project (client side) and sample server application.
The user interface definitions can be found in the RdcTransport.h header file. This is the master header and should be included in you project.
Interface description
struct IVirtChannel { virtual ~IVirtChannel() { } virtual void Write(Buffer* pBuffer) = 0; // may take a long time, need synchronization for multithreading };
This structure is used for writing data to the clientserver side.
struct IReadHandler { virtual ~IReadHandler(){}; virtual void OnRead(Buffer* pBuffer) throw() = 0; virtual void OnReadFail(const char* what) throw() = 0; };
This structure is used for reading notifications from clientserver side.
struct IClientVirtChannelCallback { virtual ~IClientVirtChannelCallback() { } virtual void OnConnect() = 0; virtual void OnDisconnect() = 0; virtual void OnTerminate() = 0; };
Callback interfaces for providing information about the client side connection.
struct IServerVirtChannelCallback { virtual ~IServerVirtChannelCallback() { } virtual void OnDisconnect() = 0; virtual void OnReconnect() = 0; };
Callback interfaces for providing information about the server side connection.
Build factory:
Client side:
std::auto_ptr CreateClientChannel( __in const char* szChannelName, __in PCHANNEL_ENTRY_POINTS pEntryPoints, __in IClientVirtChannelCallback* pCallback, __in IReadHandler* pReadHandler, __in bool bShowProtocol = false);
Server side:
std::auto_ptr CreateServerChannel( __in const char* szChannelName, __in LPTSTR szAddinRGSName, __in IServerVirtChannelCallback* pCallback, __in IReadHandler* pReadHandler, __in bool bShowProtocol = false);
How to use
Client side
For the creation of the add-in DLL of the mstsc.exe file, you need to implement the following function in your DLL:
BOOL VCAPITYPE VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints)
{
}
To work with the client side transport, you need to create the global object, which will contain your transport and provide readwrite interfaces. You can do this in the following way:
std::auto_ptr channel; BOOL VCAPITYPE VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints)
{ try { channel = rdc_transport::CreateClientChannel("Test", pEntryPoints, &connection, &reader, false); return TRUE; } catch(...) { // TODO:: add log for example return false; }
}
where connection and reader are the objects, which implement the rdc_transport::IClientVirtChannelCallback and rdc_transport::IReadHandler interfaces.
Server side
To use the server side of the virtual channel transport, you need to create the transport object in your code. This object provides readwrite interfaces and contain the server side of the connection. For example, it can be performed in the main function:
int main()
{
std::auto_ptr<rdc_transport::IVirtChannel> ch = rdc_transport::CreateServerChannel("Test", L"Test",&cc, &rh);
}
where cc and rh are the objects, which implement the rdc_transport::IServerVirtChannelCallback and rdc_transport::IReadHandler interfaces.
To close the server side connection, destroy the ch object.
You can find the sample of implementation in the test solution.
Build requirements
Software:
- Visual Studio 2008 sp1.
- Boost 1.40.0 source code (see http://boost.org).
- Nullsoft Scriptable Install System (NSIS) 2.45 or higher (see http://nsis.sourceforge.net/) . It is used only for the sample and is not required for the library.
Environment variables:
- NSIS - should contain the path where NSIS is installed;
- BOOST_ROOT - should contain the path to the Boost directory.
Preparing build system
Before building the sample solution from the source code, you should perform several simple preliminary steps. First of all, you should install all the applications specified in the Build requirements section, and set the environment variables, which are also specified in the section mentioned above.
After that, you should build Boost libraries from the source code. To do this, go to the Boost directory (BOOST_ROOT) and invoke the following two commands one after another:
1) bootstrap.bat
2) bjam.exe toolset=msvc --build-type=complete
That should be enough. For more detailed information, see Boost documentation.
Links
http://msdn.microsoft.com/en-us/library/aa383580(v=VS.85).aspx Virtual Channel Client DLL.
http://msdn.microsoft.com/en-us/library/aa383586(v=VS.85).aspx Virtual Channel Server Application.
http://technet.microsoft.com/ru-ru/library/cc751287(en-us).aspx - Extended API.
http://msdn.microsoft.com/en-us/library/bb892075(v=VS.85).aspx Remote Desktop Services. http://msdn.microsoft.com/en-us/library/aa383509(v=VS.85).aspx What is virtual channel.
http://msdn.microsoft.com/en-us/library/aa383550(v=VS.85).aspx Using the Remote Desktop ActiveX Control with Virtual Channels.
About the Author
Apriorit is worldwide provider of professional consulting and software development services.
Volunteers/Donations Needed, 7/17
International Center for Appropriate and Sustainable Technology iCAST (International Center for Appropriate and Sustainable Technology) is a local non-profit organization helping communities to use their local resources for their benefit. iCAST's projects foster economic viability, environmental stewardship and social responsibility in under-served communities and a new vision for their future.
Microsoft Transportation
OR - MS Excel Solver _ Transportation Problem
Microsoft Certification Boot Camp – Training for the Professional
A Microsoft certification boot camp specializes in training professionals to obtain their certifications in Microsoft application. A MCPD bootcamp specifically trains in .NET software development and applications that include .NET 3.5, Visual Studio 2008 and SQL Server 2005/2008. A potential Microsoft Certified Professional Developer (MCPD) will find all that is necessary to obtain their certification by spending a few weeks at a MCPD boot camp. This training is geared to skilled computer users that have technical knowledge. It is not a training camp for beginners.
A MCPD boot camp has the same type of fee schedule that any other Microsoft certification boot camp would have. The only difference would be the course offered. Fees would include the primary course offered, hotel accommodations, food and study material. There are many camps that offer training locations all around the world so the MCPD bootcamp operators sometimes offer airport pick up, local transportation and may even arrange your flights.
You will find the best instructors these camps have to offer. They are very knowledgeable in the courses they are training. Many MCPD bootcamp instructors can offer one on one training if needed because they are there to make sure you pass your course and succeed. With this being the case, small classroom sizes is an added perk. You will get the attention you need to pass the course with flying colors.
Available to you are online courses or self study guides that may allow you to get your certification at your own pace. If you are dedicated enough you may be able to succeed this way but because of the intensity of the certification, a Microsoft certification boot camp will take away the distractions of everyday life and put you in a learning atmosphere. This may be the way for you to quickly get your certification where as doing it at your own pace may take you more time that you actually have.
If you are a serious professional, the only way to go to get your MCPD certification would be to invest in a training course at a MCPD boot camp. It may cost you some money but in the long run it will be worth it.
About the Author
Caitlina Fuller is a freelance writer. A MCPD boot camp has the same type of fee schedule that any other Microsoft certification boot camp would have. The only difference would be the course offered.
|
|
Acer America Corp. Veriton 2GB 320GBHD W7Pro $480.00 Acer America Corp. Veriton 2GB 320GBHD W7Pro... |
|
|
OMNIPRINT generic handheld IrDA printer Point of transaction, Traveling and Mobile computing, Traveling sales, Retail, Transportation, Warehousing and Distribution, Point of sales, Hospitality, Gaming and Healthcare... |
|
|
SimCity 4 $3.89 Platform: WINDOWS 98/2000/XP/VISTA Publisher: ELECTRONIC ARTS Packaging: JEWEL CASE Rating: EVERYONE In SimCity 4 you don't just build your city you breathe life into it. With god-like powers sculpt mountains gouge riverbeds and seed forests to lay the groundwork for your creation. Your city es alive with the hustle and bustle of cons... |
|
|
Cities XL 2012 $29.99 Cities XL 2012 is the newest version of the popular PC city-building simulation, which allows you to build, develop and then connect huge cities. Cities XL 2012 allows you to become real urban planners, balancing economic & energy developments of your cities while managing transportation, housing, social services and recreational activities. Content is key to the new game, as Cities XL 2012 offers... |
|
|
Chris Sawyer's Locomotion $4.00 Explore a vast and detailed worldProduct InformationAnticipate the needs of a growing metropolis. Build a transportation empire.compete against ruthless entrepreneurs. Run the world your way! Userailroads trucking lines buses airplanes and ships to outmaneuver ruthlesscompetitors and see who is best at meeting the needs of a growing metropolis.Cash in on a world of opportunity moving raw mat... |
|
|
Victory folding 6-speed 180W Power Assist 12/16 electric bicycle Motor: 180 Watts Brushless Motor, Speed: Up to 20 MPH, Batteries: 2 x 12V, 4 mAH (NiMH), batteries located on the lower center post well hidden, most people don't know it is a e-bike, Battery charger and tool kit are included, Ranch: 20 miles on power assist mode, Patented forward folding mechanism. Selling for $799 in a bike shop. Light weight aluminum alloy wheels 12.5" x 2.25" front tire and 1... |
|
|
Grand Theft Auto IV $14.50 ... |
|
|
Grand Theft Auto IV [Download] $19.99 What does the American Dream mean today? For Niko Bellic, fresh off the boat from Europe, it is the hope he can escape his past. For his cousin, Roman, it is the vision that together they can find fortune in Liberty City, gateway to the land of opportunity. As they slip into debt and are dragged into a criminal underworld by a series of shysters, thieves and sociopaths, they discover that the real... |
|
|
Grand Theft Auto IV $16.99 What does the American Dream mean today? For Niko Bellic, fresh off the boat from Europe, it is the hope he can escape his past. For his cousin, Roman, it is the vision that together they can find fortune in Liberty City, gateway to the land of opportunity. As they slip into debt and are dragged into a criminal underworld by a series of shysters, thieves and sociopaths, they discover that the real... |
|
|
Microsoft Flight Simulator as a Training Aid: A Guide for Pilots, Instructors, and Virtual Aviators $16.77 Microsoft® Flight Simulator has inspired many thousands of young "gamers" to pursue flight training in real life and has provided certificated pilots with countless hours of entertainment. And even though there is an awareness that PC-based simulations-and Microsoft Flight Simulator in particular-are helpful as aids in flight training and pilot proficiency, for many it is still unclear how best t... |
Microsoft Transportation