<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3169260607385504892</id><updated>2012-02-08T22:26:56.584-08:00</updated><category term='WINDOWS OPERATING SYSTEM'/><category term='C++ PROGRAMMING'/><category term='ENTERPRISE ARCHITECTURE'/><category term='J2EE PROGRAMMING'/><category term='SERVICE ORIENTED ARCHITECTURE (SOA)'/><category term='MAC OPERATING SYSTEM'/><category term='SOFTWARE QUALITY'/><category term='XML'/><category term='VC++ PROGRAMMING'/><category term='TECHNICAL MISCELLANEOUS'/><category term='UNIX OPERATING SYSTEM'/><category term='CODE REVIEWS'/><category term='FINANCIAL DOMAIN'/><category term='SCRIPTING LANGUAGES'/><category term='TEST AUTOMATION'/><category term='WIRELESS DEVELOPMENT'/><category term='VIRTUALIZATION'/><category term='SYSTEM and NETWORK ADMINISTRATION'/><category term='SOFTWARE DESIGN'/><category term='SOFTWARE SECURITY'/><category term='WEB PROGRAMMING'/><category term='DESIGN PATTERNS'/><category term='DOMAIN KNOWLEDGE'/><category term='C PROGRAMMING'/><category term='.NET DEVELOPMENT'/><category term='KERNEL DEVELOPMENT'/><category term='PORTING'/><category term='TECHNOLOGY INTEGRATION'/><category term='CAREER MANAGEMENT'/><category term='EMBEDDED/MOBILE APPLICATION DEVELOPMENT'/><category term='DATABASE'/><title type='text'>Tech Kaizen</title><subtitle type='html'>change is the only constant thing in life</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://softwarekishorekoney.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default?start-index=101&amp;max-results=100'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>247</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-2015552848625648448</id><published>2012-02-04T20:48:00.000-08:00</published><updated>2012-02-08T22:26:56.695-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FINANCIAL DOMAIN'/><category scheme='http://www.blogger.com/atom/ns#' term='DOMAIN KNOWLEDGE'/><title type='text'>FIX(Financial Information eXchange) Protocol</title><content type='html'>&lt;div&gt;&lt;span  &gt;&lt;span style="text-align: -webkit-auto; "&gt;The &lt;/span&gt;&lt;b style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: -webkit-auto; "&gt;Financial Information eXchange (FIX) Protocol&lt;/b&gt;&lt;span style="text-align: -webkit-auto; "&gt; is a messaging standard developed specifically for the real-time electronic exchange of securities transactions.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: -webkit-auto; "&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: -webkit-auto; "&gt;&lt;span  &gt;&lt;div&gt;&lt;b&gt;FIX Repository: The raw data behind the FIX specification&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The FIX Repository represents the raw data behind the FIX specification in "database-compatible format". Files include an XML data dictionary with complete enumeration values, XML message content and XSLT scripts illustrating how to generate C# header files from the FIX Repository. Also included are XSLT scripts which generate a FIXimate-like (HTML) data browser for the FIX Repository.&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: -webkit-auto; "&gt;&lt;b&gt;&lt;span  &gt;FIXimate: An interactive Web browser based reference for the FIX Specification&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;span style="text-align: -webkit-auto; "&gt;FIXimate can be used via the FIX Protocol Ltd. web server or it can be downloaded and used locally. &lt;/span&gt;FIXimate has been generated from the FIX Specification Repository.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: -webkit-auto; "&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: -webkit-auto; "&gt;&lt;span  &gt;&lt;b&gt;QuickFIX: QuickFIX is a free and open source implementation of the FIX protocol&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: -webkit-auto; "&gt;&lt;span  &gt;&lt;span style="line-height: 13px; background-color: rgb(255, 255, 255); "&gt;QuickFIX is a full-featured open source FIX engine, currently compatible with the FIX 4.0-5.0 spec. API's are available for C++, .NET, Python and Ruby. &lt;/span&gt;&lt;a href="http://www.quickfixj.org/" style="color: rgb(0, 0, 255); line-height: 13px; background-color: rgb(255, 255, 255); "&gt;QuickFIX/J&lt;/a&gt;&lt;span style="line-height: 13px; background-color: rgb(255, 255, 255); "&gt; is available for Java. &lt;/span&gt;&lt;a href="http://www.quickfixn.org/" style="color: rgb(0, 0, 255); line-height: 13px; background-color: rgb(255, 255, 255); "&gt;QuickFIX/N&lt;/a&gt;&lt;span style="line-height: 13px; background-color: rgb(255, 255, 255); "&gt; is available for .NET&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: -webkit-auto; "&gt;&lt;span  &gt;&lt;span style="line-height: 13px; background-color: rgb(255, 255, 255); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b style="text-align: -webkit-auto; "&gt;&lt;span  &gt;QuickFAST: An implementation of the FAST protocol for native C++ and .NET&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: -webkit-auto; "&gt;&lt;span  &gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 19px; background-color: rgb(255, 255, 255); "&gt;The &lt;b&gt;FAST protocol&lt;/b&gt; (&lt;a href="http://en.wikipedia.org/wiki/FIX_protocol" title="FIX protocol" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; "&gt;FIX&lt;/a&gt; Adapted for STreaming) is a technology standard developed by FIX Protocol Ltd., specifically aimed at optimizing data representation on the network. It is used to support high-throughput, low latency data communications between financial institutions.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 19px; background-color: rgb(255, 255, 255); "&gt;Source code for implementations of the FAST Specification are available from the following sources:&lt;/p&gt;&lt;table class="wikitable" style="margin-top: 1em; margin-right: 1em; margin-bottom: 1em; margin-left: 0px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; border-collapse: collapse; color: rgb(0, 0, 0); line-height: 19px; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(242, 242, 242); text-align: center; background-position: initial initial; background-repeat: initial initial; "&gt;Description&lt;/th&gt;&lt;th style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(242, 242, 242); text-align: center; background-position: initial initial; background-repeat: initial initial; "&gt;Language&lt;/th&gt;&lt;th style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(242, 242, 242); text-align: center; background-position: initial initial; background-repeat: initial initial; "&gt;URL&lt;/th&gt;&lt;th style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(242, 242, 242); text-align: center; background-position: initial initial; background-repeat: initial initial; "&gt;License&lt;/th&gt;&lt;th style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(242, 242, 242); text-align: center; background-position: initial initial; background-repeat: initial initial; "&gt;Notes&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;FPL Reference Implementation&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;C (not C++)&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;&lt;a rel="nofollow" class="external text" href="http://www.fixprotocol.org/fastdownload" style="text-decoration: none; color: rgb(102, 51, 102); background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUeF59z4EJADEIQ1F36k7u5E7ZKXeUQPACJ3wK7UNokVxVk9kHnQH7bY9hbDyDhNXgjpRLqFlo4M2GgfyJHhjq8V4agfrgPQX3JtJQGbofmCHgA/nAKks+JAjFAAAAAElFTkSuQmCC); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-right: 13px; background-position: 100% 50%; background-repeat: no-repeat no-repeat; "&gt;www.fixprotocol.org/fastdownload&lt;/a&gt;&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;W3C Software License.&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;Not a complete implementation. Reference only.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;FPL Reference Implementation&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;C#&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;&lt;a rel="nofollow" class="external text" href="http://www.fixprotocol.org/fastdownload" style="text-decoration: none; color: rgb(102, 51, 102); background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUeF59z4EJADEIQ1F36k7u5E7ZKXeUQPACJ3wK7UNokVxVk9kHnQH7bY9hbDyDhNXgjpRLqFlo4M2GgfyJHhjq8V4agfrgPQX3JtJQGbofmCHgA/nAKks+JAjFAAAAAElFTkSuQmCC); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-right: 13px; background-position: 100% 50%; background-repeat: no-repeat no-repeat; "&gt;www.fixprotocol.org/fastdownload&lt;/a&gt;&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;W3C Software License.&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;Not a complete implementation. Reference only.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;OpenFAST&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;Java&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;&lt;a rel="nofollow" class="external text" href="http://www.openfast.org/" style="text-decoration: none; color: rgb(102, 51, 102); background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUeF59z4EJADEIQ1F36k7u5E7ZKXeUQPACJ3wK7UNokVxVk9kHnQH7bY9hbDyDhNXgjpRLqFlo4M2GgfyJHhjq8V4agfrgPQX3JtJQGbofmCHgA/nAKks+JAjFAAAAAElFTkSuQmCC); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-right: 13px; background-position: 100% 50%; background-repeat: no-repeat no-repeat; "&gt;www.openfast.org&lt;/a&gt;&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;Mozilla Public License&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;Includes SCP 1.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;OpenFAST.NET&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;C#&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;&lt;a rel="nofollow" class="external text" href="http://sourceforge.net/projects/openfastdotnet/" style="text-decoration: none; color: rgb(102, 51, 102); background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUeF59z4EJADEIQ1F36k7u5E7ZKXeUQPACJ3wK7UNokVxVk9kHnQH7bY9hbDyDhNXgjpRLqFlo4M2GgfyJHhjq8V4agfrgPQX3JtJQGbofmCHgA/nAKks+JAjFAAAAAElFTkSuQmCC); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-right: 13px; background-position: 100% 50%; background-repeat: no-repeat no-repeat; "&gt;www.sourceforge.net/projects/openfastdotnet/&lt;/a&gt;&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;Mozilla Public License&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;Includes SCP 1.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;QuickFAST&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;C++&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;&lt;a rel="nofollow" class="external text" href="http://www.quickfast.org/" style="text-decoration: none; color: rgb(102, 51, 102); background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUeF59z4EJADEIQ1F36k7u5E7ZKXeUQPACJ3wK7UNokVxVk9kHnQH7bY9hbDyDhNXgjpRLqFlo4M2GgfyJHhjq8V4agfrgPQX3JtJQGbofmCHgA/nAKks+JAjFAAAAAElFTkSuQmCC); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-right: 13px; background-position: 100% 50%; background-repeat: no-repeat no-repeat; "&gt;www.quickfast.org&lt;/a&gt;&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;New BSD License&lt;/td&gt;&lt;td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; padding-top: 0.2em; padding-right: 0.2em; padding-bottom: 0.2em; padding-left: 0.2em; "&gt;Includes C# (.NET) wrapper&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 19px; background-color: rgb(255, 255, 255); "&gt;&lt;b style="text-align: left; "&gt;&lt;u&gt;&lt;span&gt;ref:&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;FIX Protocol - &lt;a href="http://fixprotocol.org/what-is-fix.shtml"&gt;http://fixprotocol.org/what-is-fix.shtml&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;FIX Repository - &lt;a href="http://fixprotocol.org/specifications/repository"&gt;http://fixprotocol.org/specifications/repository&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;FIX Interactive Message And Tag Explorer - &lt;a href="http://fixprotocol.org/FIXimate3.0/"&gt;http://fixprotocol.org/FIXimate3.0/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;QuickFix source code(C++/.Net/java/Ruby) - &lt;a href="http://sourceforge.net/projects/quickfix/" target="_blank" style="color: rgb(17, 85, 204); "&gt;http://sourceforge.net/&lt;wbr&gt;projects/quickfix/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;QuickFix documentation - &lt;a href="http://www.quickfixengine.org/quickfix/doc/html/index.html" target="_blank" style="color: rgb(17, 85, 204); "&gt;http://www.quickfixengine.&lt;wbr&gt;org/quickfix/doc/html/index.&lt;wbr&gt;html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;Ruby embedded into C++ -  &lt;a href="http://metaeditor.sourceforge.net/embed/" target="_blank" style="color: rgb(17, 85, 204); "&gt;http://metaeditor.&lt;wbr&gt;sourceforge.net/embed/&lt;/a&gt; , &lt;a href="http://ruby-doc.org/docs/ProgrammingRuby/html/ext_ruby.html" target="_blank" style="color: rgb(17, 85, 204); "&gt;http:&lt;wbr&gt;//ruby-doc.org/docs/&lt;wbr&gt;ProgrammingRuby/html/ext_ruby.&lt;wbr&gt;html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;Ruby C extensions - &lt;a href="http://java.ociweb.com/mark/NFJS/RubyCExtensions.pdf" target="_blank" style="color: rgb(17, 85, 204); "&gt;http://java.ociweb.com/mark/&lt;wbr&gt;NFJS/RubyCExtensions.pdf&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;SWIG and Ruby - &lt;a href="http://www.swig.org/Doc1.3/Ruby.html" target="_blank" style="color: rgb(17, 85, 204); "&gt;http://www.swig.org/Doc1.3/&lt;wbr&gt;Ruby.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;span  &gt;To Ruby from C/C++ - &lt;a href="http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-c-and-c-/" target="_blank" style="color: rgb(17, 85, 204); "&gt;http://www.ruby-lang.org/en/&lt;wbr&gt;documentation/ruby-from-other-&lt;wbr&gt;languages/to-ruby-from-c-and-&lt;wbr&gt;c-/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-2015552848625648448?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2015552848625648448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2015552848625648448'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2012/02/financial-information-exchange-fix.html' title='FIX(Financial Information eXchange) Protocol'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-1327760575024884120</id><published>2012-02-04T20:34:00.000-08:00</published><updated>2012-02-04T20:44:50.736-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DOMAIN KNOWLEDGE'/><category scheme='http://www.blogger.com/atom/ns#' term='DATABASE'/><title type='text'>Pessimistic vs Optimistic Locking</title><content type='html'>&lt;div&gt;&lt;span&gt;&lt;b&gt;Pessimistic concurrency control (or pessimistic locking) &lt;/b&gt;is called "pessimistic" because the system assumes the worst — it assumes that two or more users will want to update the same record at the same time, and then prevents that possibility by locking the record, no matter how unlikely conflicts actually are.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;The locks are placed as soon as any piece of the row is accessed, making it impossible for two or more users to update the row at the same time. Depending on the lock mode (shared, exclusive, or update), other users might be able to read the data even though a lock has been placed. For more details on the lock modes, see Lock modes: shared, exclusive, and update.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;Optimistic concurrency control (or optimistic locking)&lt;/b&gt; assumes that although conflicts are possible, they will be very rare. Instead oflocking every record every time that it is used, the system merely looks for indications that two users actually did try to update the same record at the same time. If that evidence is found, then one user's updates are discarded and the user is informed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;For example, if User1 updates a record and User2 only wants to read it, then User2 simply reads whatever data is on the disk and then proceeds, without checking whether the data is locked. User2 might see slightly out-of-date information if User1 has read the data and updated it, but has not yet committed the transaction.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="word-spacing: 0.1em; "&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="word-spacing: 0.1em; "&gt;&lt;b&gt;&lt;span&gt;&lt;u&gt;Choosing concurrency control mechanism:&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p style="margin-top:1em"&gt;&lt;span&gt;In most scenarios, optimistic concurrency control is more efficient and offers higher performance. When choosing between &lt;span class="il"&gt;pessimistic&lt;/span&gt; and optimistic locking, consider the following:&lt;/span&gt;&lt;/p&gt; &lt;ul style="margin-top:0.1em;padding-top:0.1em"&gt;&lt;li style="margin-top:0em;margin-bottom:0em;margin-left:0em"&gt;&lt;span&gt;&lt;span class="il"&gt;Pessimistic&lt;/span&gt; locking is useful if there are a lot of updates and relatively high chances of users trying to update data at the same time.&lt;/span&gt;&lt;p style="margin-top:1em"&gt;&lt;span&gt; For example, if each operation can update a large number of records at a  time (the bank might add interest earnings to every account at the end  of each month), and two applications are running such operations at the  same time, they will have conflicts.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top:1em"&gt;&lt;span&gt;&lt;span class="il"&gt;Pessimistic&lt;/span&gt;  concurrency control is also more appropriate in applications that  contain small tables that are frequently updated. In the case of these  so-called &lt;em&gt;hotspots&lt;/em&gt;, conflicts are so probable that optimistic concurrency control wastes effort in rolling back conflicting transactions.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top:1em"&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="margin-top:0em;margin-bottom:0em;margin-left:0em"&gt;&lt;span&gt;Optimistic  locking is useful if the possibility for conflicts is very low – there  are many records but relatively few users, or very few updates and  mostly read-type operations.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span&gt;ref:&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Database Concurrency Control - &lt;a href="http://publib.boulder.ibm.com/infocenter/soliddb/v6r3/index.jsp?topic=/com.ibm.swg.im.soliddb.sql.doc/doc/the.purpose.of.concurrency.control.html"&gt;http://publib.boulder.ibm.com/infocenter/soliddb/v6r3/index.jsp?topic=/com.ibm.swg.im.soliddb.sql.doc/doc/the.purpose.of.concurrency.control.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Database Transactions - &lt;a href="http://publib.boulder.ibm.com/infocenter/soliddb/v6r3/index.jsp?topic=/com.ibm.swg.im.soliddb.sql.doc/doc/the.purpose.of.concurrency.control.html"&gt;http://publib.boulder.ibm.com/infocenter/soliddb/v6r3/index.jsp?topic=/com.ibm.swg.im.soliddb.sql.doc/doc/the.purpose.of.concurrency.control.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-1327760575024884120?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/1327760575024884120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/1327760575024884120'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2012/02/pessimistic-vs-optimistic-locking.html' title='Pessimistic vs Optimistic Locking'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-81808170967575413</id><published>2012-02-04T20:13:00.000-08:00</published><updated>2012-02-04T20:46:03.258-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FINANCIAL DOMAIN'/><category scheme='http://www.blogger.com/atom/ns#' term='DOMAIN KNOWLEDGE'/><title type='text'>SWIFT, IFX, OFX, FIX</title><content type='html'>&lt;span&gt;Prominent ones are Financial Information Exchange protocol (FIX), S.W.I.F.T., Interactive Financial Exchange (IFX) and Open Financial Exchange (OFX). &lt;b&gt;SWIFT is the leader in inter bank transactions&lt;/b&gt;, and also has gained a significant market holding on Securities and derivatives, payments as well as investments and treasury after introducing a set of messages for securities and derivatives industry. &lt;b&gt;OFX is the leader in Intra-bank transaction systems&lt;/b&gt; followed by its successor, IFX. IFX is opting to replace OFX, through its rich and extended messaging standards. Both of these standards are widely used in business banking, Electronic Bill Presentment and Payment, ATM/POS  Industry. &lt;b&gt;FIX is the leader in securities and derivatives market&lt;/b&gt;, used by major stock markets around the world. Most of these protocols use XML as the                                                                                     medium of messaging. Non-XML based standards like FIX and S.W.I.F.T have come up with XML versions, namely FIXML and ‘SWIFTStandards XML’. &lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;In addition to these major players, some of the other protocols are RIXML – Research Information exchange and  IRML – Investment research markup , focusing on fixed income securities and Derivatives market, MDDL - Market Data Definition and  REUTERS in economic and industrial indicators, STPML – Straight through processing markup language  - a superset protocol to replace FIX,SWIFT ISITC and DTC ID, FinXML – Financial XML which focuses on Capital market instruments and straight through processing (STP) and finally FpML - Financial products markup language focusing on interest rate swaps, forward rate agreements, Foreign Exchange and other over the counter derivatives.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;ref:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://ebusiness.mit.edu/research/papers/208_Madnick_FinancialInformationMediation.pdf" target="_blank"&gt;&lt;span&gt;http://ebusiness.mit.edu/&lt;wbr&gt;research/papers/208_Madnick_&lt;wbr&gt;FinancialInformationMediation.&lt;wbr&gt;pdf&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-81808170967575413?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/81808170967575413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/81808170967575413'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2012/02/swift-ifx-ofx-fix.html' title='SWIFT, IFX, OFX, FIX'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-3348565652628075878</id><published>2012-01-29T17:43:00.000-08:00</published><updated>2012-01-29T17:59:28.781-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VIRTUALIZATION'/><title type='text'>Application Virtualization &amp; Application Streaming</title><content type='html'>&lt;div&gt;&lt;span&gt;&lt;b style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;Application virtualization&lt;/b&gt;&lt;span style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt; is an &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Umbrella_term" title="Umbrella term" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); line-height: 19px; text-align: -webkit-auto; "&gt;umbrella term&lt;/a&gt;&lt;span style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt; that describes software technologies that improve portability, manageability and compatibility of &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Application_software" title="Application software" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); line-height: 19px; text-align: -webkit-auto; "&gt;applications&lt;/a&gt;&lt;span style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt; by encapsulating them from the underlying &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Operating_system" title="Operating system" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); line-height: 19px; text-align: -webkit-auto; "&gt;operating system&lt;/a&gt;&lt;span style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt; on which they are executed. A fully virtualized application is not installed in the traditional sense&lt;/span&gt;&lt;span style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;, although it is still executed as if it were. The application is fooled at runtime into believing that it is directly interfacing with the original operating system and all the resources managed by it, when in reality it is not. In this context, the term "virtualization" refers to the artifact being encapsulated (application), which is quite different to its meaning in &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Hardware_virtualization" title="Hardware virtualization" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); line-height: 19px; text-align: -webkit-auto; "&gt;hardware virtualization&lt;/a&gt;&lt;span style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;, where it refers to the artifact being abstracted (physical hardware)&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;The basic concept of &lt;b&gt;A&lt;/b&gt;&lt;/span&gt;&lt;b style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;pplication Streaming&lt;/b&gt;&lt;span style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt; has its foundation in the way modern computer &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Programming" title="Programming" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); line-height: 19px; text-align: -webkit-auto; "&gt;programming&lt;/a&gt;&lt;span style="line-height: 19px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt; languages and operating systems produce and run application code. Only specific parts of a computer program need to be available at any instance for the end user to perform a particular function. This means that a program need not be fully installed on a client computer, but parts of it can be delivered over the network as and when they are required.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span&gt;ref:&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Application Virtualization - &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Application_virtualization"&gt;http://en.wikipedia.org/wiki/Application_virtualization&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Application Streaming - &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Application_streaming"&gt;http://en.wikipedia.org/wiki/Application_streaming&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;MSDN Webcast: Application Virtualization And Software Streaming Within Systems Management Server (Level 200) - &lt;/span&gt;&lt;a href="http://www.techrepublic.com/whitepapers/msdn-webcast-application-virtualization-and-software-streaming-within-systems-management-server-level-200/355156"&gt;http://www.techrepublic.com/whitepapers/msdn-webcast-application-virtualization-and-software-streaming-within-systems-management-server-level-200/355156&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Application Virtualization for Developers - &lt;/span&gt;&lt;a href="http://msdnrss.thecoderblogs.com/2011/04/application-virtualization-for-developers/"&gt;http://msdnrss.thecoderblogs.com/2011/04/application-virtualization-for-developers/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Microsoft Application Virtualization (App-V) - &lt;a href="http://www.microsoft.com/en-us/windows/enterprise/products-and-technologies/virtualization/app-v.aspx"&gt;http://www.microsoft.com/en-us/windows/enterprise/products-and-technologies/virtualization/app-v.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Application Virtualization Smackdown - &lt;a href="http://www.brianmadden.com/blogs/rubenspruijt/archive/2010/09/22/application-virtualization-smackdown-head-to-head-analysis-of-endeavors-citrix-installfree-microsoft-spoon-symantec-and-vmware.aspx" target="_blank" style="color: rgb(17, 85, 204); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;http://www.brianmadden.com/&lt;wbr&gt;blogs/rubenspruijt/archive/&lt;wbr&gt;2010/09/22/application-&lt;wbr&gt;virtualization-smackdown-head-&lt;wbr&gt;&lt;span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; "&gt;to&lt;/span&gt;-head-analysis-of-endeavors-&lt;wbr&gt;citrix-installfree-microsoft-&lt;wbr&gt;spoon-symantec-and-vmware.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;App streaming vs installation - &lt;a href="http://www.theregister.co.uk/2011/04/12/app_streaming/"&gt;http://www.theregister.co.uk/2011/04/12/app_streaming/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;br class="Apple-interchange-newline"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Application Virtualization with Microsoft Dynamics NAV 2009 R2 - &lt;a href="http://msdn.microsoft.com/en-us/library/gg670186.aspx"&gt;http://msdn.microsoft.com/en-us/library/gg670186.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-3348565652628075878?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/3348565652628075878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/3348565652628075878'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2012/01/application-virtualization.html' title='Application Virtualization &amp; Application Streaming'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-1344860273894120918</id><published>2012-01-24T21:59:00.000-08:00</published><updated>2012-01-26T23:34:26.297-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET DEVELOPMENT'/><title type='text'>CLR Hosting in Native Applications</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span&gt;&lt;span style="line-height: 15px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;Developing a large application in native C++ and want to extend this app so they can mold it to their needs. Allowing to write the extensions in managed code inside the Microsoft&lt;/span&gt;&lt;span class="superscript" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; bottom: 0.5em; position: relative; line-height: 15px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;®&lt;/span&gt;&lt;span style="line-height: 15px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt; .NET Framework would make their development experiences much smoother than if they had to work with native code.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;For applications that were written by using the .NET Framework, hosting the common language runtime is completely transparent. If you compile your managed code as an .exe assembly, the runtime is started automatically by mscoree.dll when the .exe is run. However, unmanaged applications can also benefit from hosting the common language runtime. Whether it is invoked automatically, as with managed .exe assemblies, or loaded by using the unmanaged hosting API, a .NET Framework application requires a piece of code called a &lt;a href="http://msdn.microsoft.com/en-us/library/a51xd4ze(v=vs.90).aspx" style="color: rgb(150, 11, 180); text-decoration: none; "&gt;runtime host&lt;/a&gt;. The runtime host loads the runtime into a process, creates &lt;a href="http://msdn.microsoft.com/en-us/library/cxk374d9(v=vs.90).aspx" style="color: rgb(150, 11, 180); text-decoration: none; "&gt;application domains&lt;/a&gt; within the process, and loads and executes user code within those application domains.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;div&gt;&lt;b&gt;Selecting CLR Version From Unmanaged Host:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Question: What is the correct way determine what framework version is installed on a computer to choose the correct CLR hosting approach(I would like my code to work in CLR 2.0+ environment) ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Answer:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;LoadLibrary mscoree&lt;/li&gt;&lt;li&gt;GetProcAddress for CLRCreateInstance. If you get NULL, fall back to legacy path (CorBindToRuntimeEx)&lt;/li&gt;&lt;li&gt;Call CLRCreateInstance to get ICLRMetaHost. If you get E_NOTIMPL, fall back to legacy path (same as above)&lt;/li&gt;&lt;li&gt;Otherwise, bank on the ICLRMetaHost you just got&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;u&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;p style="margin-top: -6px; "&gt;&lt;span&gt;&lt;a href="http://3.bp.blogspot.com/-_zuYWZa5tMM/Tx-gKZU0djI/AAAAAAAACcU/-BGQ2IFruuM/s1600/clr_image.png"&gt;&lt;img src="http://3.bp.blogspot.com/-_zuYWZa5tMM/Tx-gKZU0djI/AAAAAAAACcU/-BGQ2IFruuM/s400/clr_image.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5701451753731683890" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 227px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;&lt;span&gt;ref:&lt;/span&gt;&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;CLR Hosting API - &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163567.aspx" target="_blank"&gt;http://msdn.microsoft.com/&lt;wbr&gt;en-us/magazine/cc163567.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Hosting the Common Language Runtime - &lt;a href="http://msdn.microsoft.com/en-us/library/9x0wh2z3(v=vs.90).aspx"&gt;http://msdn.microsoft.com/en-us/library/9x0wh2z3(v=vs.90).aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;CLR 4.0: In Process Side-by-Side CLR Hosting - &lt;/span&gt;&lt;a href="http://geekswithblogs.net/sdorman/archive/2008/11/10/clr-4.0-in-process-side-by-side-clr-hosting.aspx"&gt;http://geekswithblogs.net/sdorman/archive/2008/11/10/clr-4.0-in-process-side-by-side-clr-hosting.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Hosting CLR in native application - &lt;a href="http://www.lenholgate.com/blog/2010/07/clr-hosting---a-flexible-managed-plugin-system-part-1.html" target="_blank"&gt;http://www.lenholgate.com/&lt;wbr&gt;blog/2010/07/clr-hosting---a-&lt;wbr&gt;flexible-managed-plugin-&lt;wbr&gt;system-part-1.html&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Selecting CLR Version From Unmanaged Host - &lt;/span&gt;&lt;a href="http://bradwilson.typepad.com/blog/2010/04/selecting-clr-version-from-unmanaged-host.html"&gt;http://bradwilson.typepad.com/blog/2010/04/selecting-clr-version-from-unmanaged-host.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;CLR memory management -  &lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2005/07/24/2984.aspx" target="_blank"&gt;http://community.bartdesmet.&lt;wbr&gt;net/blogs/bart/archive/2005/&lt;wbr&gt;07/24/2984.aspx&lt;/a&gt; &lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Scheduling &amp;amp; Threading -  &lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2005/07/26/3094.aspx" target="_blank"&gt;http://community.bartdesmet.&lt;wbr&gt;net/blogs/bart/archive/2005/&lt;wbr&gt;07/26/3094.aspx&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;App Domain Shallow Copy -  &lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2006/07/29/4146.aspx" target="_blank"&gt;http://community.bartdesmet.&lt;wbr&gt;net/blogs/bart/archive/2006/&lt;wbr&gt;07/29/4146.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-1344860273894120918?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/1344860273894120918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/1344860273894120918'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2012/01/clr-hosting-in-native-applications.html' title='CLR Hosting in Native Applications'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-_zuYWZa5tMM/Tx-gKZU0djI/AAAAAAAACcU/-BGQ2IFruuM/s72-c/clr_image.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-6916703379815038399</id><published>2011-12-25T23:38:00.000-08:00</published><updated>2011-12-26T14:14:12.846-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET DEVELOPMENT'/><title type='text'>Microsoft Sync Framework</title><content type='html'>&lt;div style="text-align: -webkit-auto;"&gt;&lt;span&gt;&lt;span style="line-height: 16px; "  &gt;&lt;b&gt;Microsoft Sync Framework&lt;/b&gt; is a comprehensive synchronization platform that enables collaboration and offline access for applications, services, and devices with support for any data type, any data store, any transfer protocol, and any network topology. Developers can build synchronization ecosystems that integrate any application, any data from any store using any protocol over any network. Sync Framework features technologies and tools that enable roaming, sharing, and taking data offline.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span&gt;&lt;span style="line-height: 16px;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span&gt;&lt;span  &gt;&lt;div style="line-height: 16px; "&gt;A number of providers are included by Sync Framework that support many common data sources. Although they are not required, to minimize development it is recommended that developers use these providers wherever possible. The following are the providers included:&lt;/div&gt;&lt;div style="line-height: 16px; "&gt;&lt;ul&gt;&lt;li&gt;Database synchronization providers: Synchronization for ADO.NET-enabled data sources&lt;/li&gt;&lt;li&gt;File synchronization provider: Synchronization for files and folders&lt;/li&gt;&lt;li&gt;Web synchronization components: Synchronization for FeedSync feeds such as RSS and ATOM feeds&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="line-height: 16px;"&gt;&lt;b&gt;&lt;u&gt;Database Synchronization Providers:&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 16px; "&gt;The Sync Framework database synchronization providers were built to allow developers who were familiar with the concepts of ADO.NET to apply that knowledge to data synchronization through a very similar set of APIs to that of ADO.NET. The database synchronization providers offer the flexibility of a programming model like offline datasets and a richer synchronization feature set like that found in Merge replication. These providers also support synchronization over services, such as Windows Communication Foundation (WCF). Specifically, Sync Framework targets the following scenarios:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 16px;"&gt;&lt;b&gt;Offline Database Synchronization:&lt;/b&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 16px; "&gt;With Sync Framework you are able to build a solution where multiple remote clients connect and synchronize to a central ADO.NET database in a Hub-and-Spoke configuration. This enables occasionally connected devices to periodically connect and synchronize changes with a central ADO.NET database server. This topology is a common solution for remote workers such as sales reps or field service workers.&lt;/span&gt;&lt;span class="Apple-tab-span" style="line-height: 16px; white-space: pre; "&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 16px;"&gt;&lt;b&gt;Collaboration Between Databases:&lt;/b&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 16px;"&gt;Sync Framework also includes Peer-to-Peer capabilities. Through a custom Peer provider, collaboration between two or more SQL Server databases can occur. Unlike a Hub-and-Spoke architecture, this provider enables a SQL Server database to communicate and exchange information with any other SQL Server database. This type of scenario is useful in group scenarios where users (such as auditors) need to update information and then collaborate those changes with other group members.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 16px;"&gt;&lt;b&gt;&lt;u&gt;Synchronizing Files:&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align: left; "&gt;Sync Framework has a built-in algorithm for detecting changes that are made to the files and folders in the synchronization scope :&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 16px; "&gt;&lt;span style="line-height: normal; text-align: left; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 16px; "&gt;&lt;p style="margin-top: -6px; line-height: normal; text-align: left; "&gt;&lt;b&gt;A change is reported when any of the following properties has changed:&lt;/b&gt;&lt;/p&gt;&lt;ul style="margin-left: 40px; padding-left: 0px; line-height: normal; text-align: left; "&gt;&lt;li style="list-style-image: url(http://i3.msdn.microsoft.com/Hash/fcc063e32e5c2395ba48efadd8423b60.gif); "&gt;&lt;p&gt;The last modification time on a file.&lt;/p&gt;&lt;/li&gt;&lt;li style="list-style-image: url(http://i3.msdn.microsoft.com/Hash/fcc063e32e5c2395ba48efadd8423b60.gif); "&gt;&lt;p&gt;If hashing is enabled, the value of the hash that was computed for the file.&lt;/p&gt;&lt;/li&gt;&lt;li style="list-style-image: url(http://i3.msdn.microsoft.com/Hash/fcc063e32e5c2395ba48efadd8423b60.gif); "&gt;&lt;p&gt;The file size.&lt;/p&gt;&lt;/li&gt;&lt;li style="list-style-image: url(http://i3.msdn.microsoft.com/Hash/fcc063e32e5c2395ba48efadd8423b60.gif); "&gt;&lt;p&gt;The file or folder name. This check is case-sensitive.&lt;/p&gt;&lt;/li&gt;&lt;li style="list-style-image: url(http://i3.msdn.microsoft.com/Hash/fcc063e32e5c2395ba48efadd8423b60.gif); "&gt;&lt;p&gt;Any of the file attributes that are handled by the provider.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="line-height: normal; text-align: left; "&gt;A file move or rename is reported when a file is found that has the same creation time, size, and hash value (when hashing is being used) as a previously known file, but the file has a different name or path. If more than one file is found that meets these criteria, Sync Framework acts as if the original file was deleted and new files were created.&lt;/p&gt;&lt;p style="margin-top: -6px; line-height: normal; text-align: left; "&gt;Sync Framework treats a folder move or rename as if the old folder was deleted and the new folder was created. The files in the folder are reported as moves. Therefore, in this case, file data does not usually have to be re-sent.&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span&gt;&lt;span style="line-height: 16px;"  &gt;&lt;b&gt;&lt;u&gt;ref:&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span&gt;&lt;span style="line-height: 16px;"  &gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;span&gt;&lt;span style="line-height: 16px;"&gt;&lt;span style="line-height: normal; "&gt;Microsoft Sync Framework Overview - &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/sync/bb736753"&gt;http://msdn.microsoft.com/en-us/sync/bb736753&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;Microsoft Sync Framework Beginner's Guide - &lt;a href="http://msdn.microsoft.com/en-us/data/ff629461"&gt;http://msdn.microsoft.com/en-us/data/ff629461&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;span&gt;Sync Framework Sample code(part of Microsoft SDK) - &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb902852.aspx" style="text-align: left; "&gt;http://msdn.microsoft.com/en-us/library/bb902852.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;div&gt;&lt;span  &gt;Sync Framwork sample code in Microsoft Code Gallery - &lt;a href="http://code.msdn.microsoft.com/site/search?f%5B0%5D.Type=SearchText&amp;amp;f%5B0%5D.Value=Microsoft%20Sync%20Framework&amp;amp;f%5B1%5D.Type=Affiliation&amp;amp;f%5B1%5D.Value=Official&amp;amp;f%5B1%5D.Text=Microsoft"&gt;http://code.msdn.microsoft.com/site/search?f%5B0%5D.Type=SearchText&amp;amp;f%5B0%5D.Value=Microsoft%20Sync%20Framework&amp;amp;f%5B1%5D.Type=Affiliation&amp;amp;f%5B1%5D.Value=Official&amp;amp;f%5B1%5D.Text=Microsoft&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span  &gt;&lt;br class="Apple-interchange-newline"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;Sync Framework Managed API - &lt;a href="http://msdn.microsoft.com/en-us/library/cc306319.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc306319.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;Sync Framework Unmanaged API - &lt;a href="http://msdn.microsoft.com/en-us/library/bb902965.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb902965.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;Introduction to Sync Framework Database Synchronization - &lt;a href="http://msdn.microsoft.com/en-us/data/bb887608"&gt;http://msdn.microsoft.com/en-us/data/bb887608&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;How to Choose a Data Synchronization Technology: Offline &amp;amp; Collaboration -  &lt;a href="http://msdn.microsoft.com/en-us/data/cc470041"&gt;http://msdn.microsoft.com/en-us/data/cc470041&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;span&gt;Microsoft Sync Team Tweets - &lt;/span&gt;&lt;a href="http://twitter.com/syncfx" style="text-align: left; "&gt;http://twitter.com/syncfx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;Microsoft Sync Team Blog - &lt;a href="http://blogs.msdn.com/b/sync/" style="text-align: left; "&gt;http://blogs.msdn.com/b/sync/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;div&gt;&lt;span  &gt;Getting Started with Microsoft Synchronization Services for ADO.NET(Developer.com) -&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.developer.com/net/article.php/3716891/Getting-Started-with-Microsoft-Synchronization-Services-for-ADONET.htm"&gt;&lt;span  &gt;http://www.developer.com/net/article.php/3716891/Getting-Started-with-Microsoft-Synchronization-Services-for-ADONET.htm&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span  &gt;&lt;br class="Apple-interchange-newline"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;div&gt;&lt;span  &gt;Take Data Offline Using Microsoft Synchronization Services for ADO.NET(CodeProject) - &lt;a href="http://www.codeproject.com/KB/smart/takedataoffline.aspx"&gt;http://www.codeproject.com/KB/smart/takedataoffline.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;span&gt;Detecting File Changes using Sync Framework - &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb902836.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb902836.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;Synchronization sample code(.Net) - &lt;a href="http://www.syncguru.com/projects/SyncServicesDemoBuilder.aspx"&gt;http://www.syncguru.com/projects/SyncServicesDemoBuilder.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;span&gt;How to: Synchronize Files by Using Unmanaged Code(C++) - &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc305401.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc305401.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;Sync Framework v4 is now Open Source, and ready to Connect any Device to SQL Server and SQL Azure - &lt;a href="http://robtiffany.com/sync-framework/sync-framework-v4-is-now-open-source-and-ready-to-connect-any-device-to-sql-server-and-sql-azure"&gt;http://robtiffany.com/sync-framework/sync-framework-v4-is-now-open-source-and-ready-to-connect-any-device-to-sql-server-and-sql-azure&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;Making Microsoft Sync Framework work with PostgreSql - &lt;a href="http://www.infoq.com/articles/Microsoft-Sync-Framework-PostgreSql;jsessionid=7C322D813E07FCBDDB027658538B2715"&gt;http://www.infoq.com/articles/Microsoft-Sync-Framework-PostgreSql;jsessionid=7C322D813E07FCBDDB027658538B2715&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;span&gt;Microsoft Sync Framework 2.0 Software Development Kit (SDK) - &lt;/span&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=14159"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=14159&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span  &gt;Microsoft Sync Framework 2.1 Software Development Kit (SDK) - &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=23217" style="text-align: left; "&gt;http://www.microsoft.com/download/en/details.aspx?id=23217&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-6916703379815038399?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/6916703379815038399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/6916703379815038399'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/12/microsoft-sync-framework.html' title='Microsoft Sync Framework'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-477825036573502603</id><published>2011-12-25T18:10:00.000-08:00</published><updated>2011-12-25T18:11:32.783-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DESIGN PATTERNS'/><category scheme='http://www.blogger.com/atom/ns#' term='SOFTWARE DESIGN'/><title type='text'>SOLID Object Oriented Design</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; "&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) is a mnemonic acronym introduced by Robert C. Martin which stands for five basic patterns of object-oriented programming and design &lt;span style="color: black; "&gt;in Agile Software Developmen&lt;/span&gt;t.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;SOLID -&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;SRP - Single Responsibility Principle (&lt;span&gt;&lt;i&gt;&lt;span style="color: black; "&gt;A class should have one, and only one, reason to change&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;OCP - Open Closed Principle (&lt;i&gt;open for extension, but closed for modification&lt;/i&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;/span&gt;&lt;span style="line-height: 14px; "&gt;LSP - Liskov Substitution Principle (&lt;span&gt;&lt;i&gt;&lt;span style="color: black; "&gt;Derived classes must be substitutable for their base classes&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;. if S is a subtype of T, then objects of type T in a program may be replaced with objects of type S without altering any of the desirable properties of that program&lt;/i&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;ISP - Interface Segregation Principle (&lt;span&gt;&lt;i&gt;&lt;span style="color: black; "&gt;Make fine grained interfaces that are client specific&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;. clients should not be forced to implement interfaces they don't use&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;DIP - Dependency Inversion Principle (&lt;span&gt;&lt;i&gt;&lt;span style="color: black; "&gt;Depend on abstractions, not on concretions&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;. High-level modules should not depend on low-level modules. Both should depend on abstractions.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;ref:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Solid_(object-oriented_design)" target="_blank" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;http://en.wikipedia.org/wiki/&lt;wbr&gt;Solid_(object-oriented_design)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); "&gt;&lt;a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod" target="_blank" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;http://butunclebob.com/&lt;wbr&gt;ArticleS.UncleBob.&lt;wbr&gt;PrinciplesOfOod&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://www.c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign" target="_blank" style="color: rgb(0, 0, 204); "&gt;http://www.c2.com/cgi/wiki?&lt;wbr&gt;PrinciplesOfObjectOrientedDesi&lt;wbr&gt;gn&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Non-Software Design Patterns - &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://cns2.uni.edu/~wallingf/teaching/062/sessions/support/pattern-examples.pdf" target="_blank" style="color: rgb(0, 0, 204); "&gt;http://cns2.uni.edu/~wallingf/&lt;wbr&gt;teaching/062/sessions/support/&lt;wbr&gt;pattern-examples.pdf&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Interface Segregation Principle - &lt;a href="http://www.objectmentor.com/resources/articles/isp.pdf" target="_blank" style="color: rgb(0, 0, 204); "&gt;http://www.objectmentor.com/&lt;wbr&gt;resources/articles/isp.pdf&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Pablo's SOLID Software Development - &lt;a href="http://cdn.cloudfiles.mosso.com/c82752/pablos_solid_ebook.pdf" target="_blank"&gt;http://cdn.cloudfiles.mosso.&lt;wbr&gt;com/c82752/pablos_solid_ebook.&lt;wbr&gt;pdf&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Visitor Pattern - &lt;a href="http://ootips.org/visitor-pattern.html" target="_blank"&gt;http://ootips.org/visitor-&lt;wbr&gt;pattern.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Houston Design Patterns (Visitor) - &lt;a href="http://www.vincehuston.org/dp/VisitorDemosCpp" target="_blank"&gt;http://www.vincehuston.org/&lt;wbr&gt;dp/VisitorDemosCpp&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Acyclic Visitor - &lt;a href="http://www.objectmentor.com/resources/articles/acv.pdf" target="_blank"&gt;http://www.objectmentor.com/&lt;wbr&gt;resources/articles/acv.pdf&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Liskov Substitution Principle - &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;a href="http://www.objectmentor.com/resources/articles/lsp.pdf" target="_blank" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;http://www.objectmentor.com/&lt;wbr&gt;resources/articles/lsp.pdf&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span style="line-height: 14px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); "&gt;&lt;a href="http://www.lostechies.com/blogs/chad_myers/archive/2008/03/11/ptom-the-liskov-substitution-principle.aspx" target="_blank" style="color: rgb(0, 0, 204); "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;http://www.lostechies.com/&lt;wbr&gt;blogs/chad_myers/archive/2008/&lt;wbr&gt;03/11/ptom-the-liskov-&lt;wbr&gt;substitution-principle.asp&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 14px; font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-477825036573502603?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/477825036573502603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/477825036573502603'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/12/solid-object-oriented-design.html' title='SOLID Object Oriented Design'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-2017059733357056069</id><published>2011-12-25T17:55:00.000-08:00</published><updated>2012-01-08T18:35:56.830-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><title type='text'>VMware Virtual Machine(VM) Remote Debugging using WinDBG</title><content type='html'>&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;u&gt;&lt;span&gt;Instructions &lt;span class="il"&gt;to&lt;/span&gt; setup WinDBG &lt;span class="il"&gt;to&lt;/span&gt; debug VM in Kernel mode(on Windows XP):&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;p&gt;&lt;span&gt;Step 1:  Edit the settings of you virtual machine to use a named pipe for a COM port  &lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Edit&lt;br /&gt;Settings&lt;br /&gt;COM1&lt;br /&gt;Named pipe:&lt;br /&gt;Add: &lt;code&gt;\\.\pipe\vpcdebug&lt;/code&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Step 2:  Edit &lt;span class="il"&gt;boot&lt;/span&gt;.&lt;span class="il"&gt;ini&lt;/span&gt; file on the virtual machine.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Right-click on My Computer&lt;br /&gt;Properties&lt;br /&gt;Settings&lt;br /&gt;Edit start-up file manually:&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Add: &lt;code&gt;/DEBUG /DEBUGPORT = COM1 /BAUDRATE=115200&lt;/code&gt;&lt;br /&gt;I like to add a second line here instead. Copy the last line, and append it with the above line:&lt;br /&gt;&lt;code&gt;multi(0)disk(0)rdisk(0)&lt;wbr&gt;partition(1)\WINDOWS="&lt;wbr&gt;Microsoft Windows XP Professional" /noexecute=optin /fastdetect&lt;/code&gt;&lt;br /&gt;&lt;code&gt;/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200&lt;/code&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;This will give you two different &lt;span class="il"&gt;boot&lt;/span&gt; options, one for debugging and the other for normal use.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Step 3: Set up WinDbg for remote debugging over COM1.&lt;br /&gt;This  can be done through the File -&amp;gt; Kernel Debug menu, but I prefer to  make a shortcut so I can have multiple different types of debugging  environments.&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Create a shortcut that points to  WinDbg.exe and add the the necessary command-line arguments. Your  shortcut target should look something like this:&lt;br /&gt;&lt;code&gt;"C:\Program Files\Debugging Tools for Windows\windbg.exe" -k com:pipe,port=\\.\pipe\&lt;wbr&gt;vpcdebug,resets=10&lt;/code&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt; This  is all you need to do to set up kernel debugging.  Be sure to start the  VM before WinDbg so that it has a chance to create the named pipe.   Also, make sure you download the correct symbols for your environment.   For example:&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;span&gt;SRV*c:\websymbols* &lt;a href="http://msdl.microsoft.com/download/symbols" target="_blank"&gt;http://msdl.microsoft.com/&lt;wbr&gt;download/symbols&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span&gt;Instructions &lt;span class="il"&gt;to&lt;/span&gt; setup WinDBG &lt;span class="il"&gt;to&lt;/span&gt; debug VM in Kernel mode(on Vista and above):&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal" style="margin-right:.9pt;margin-bottom:0in;margin-left:13.85pt;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;span&gt;debug kernel&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-right:.9pt;margin-bottom:0in;margin-left:13.85pt;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;span&gt;/debug /debugport=com1 /baudrate=115200&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-right:.9pt;margin-bottom:0in;margin-left:13.85pt;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;span&gt;for Vista&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-right:.9pt;margin-bottom:0in;margin-left:13.85pt;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;span&gt;bcdedit&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-right:.9pt;margin-bottom:0in;margin-left:13.85pt;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;span&gt;bcdedit /copy {current} /d "DebugBoot"&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-right:.9pt;margin-bottom:0in;margin-left:13.85pt;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;span&gt;(note new guid)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-right:.9pt;margin-bottom:0in;margin-left:13.85pt;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;span&gt;bcdedit /displayorder {current} {guid}&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-right:.9pt;margin-bottom:0in;margin-left:13.85pt;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;span&gt;bcdedit /debug {guid} ON&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-right:.9pt;margin-bottom:0in;margin-left:13.85pt;margin-bottom:.0001pt;text-autospace:none"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;On the "debugging server" (the PC with the problem)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    Start WinDBG&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    Type .server npipe:pipe=pipename&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;On the "debugging client" (the one you're sitting at)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    Start WinDBG&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    Go to File&amp;gt;Connect to Remote Session&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    For Connection String enter npipe:server=Server, pipe=PipeName [,password=Password] where Server is the hostname/IP and PipeName is the name that the server chose. The password section is optional.&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;br class="Apple-interchange-newline"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;u&gt;Miscellaneous:&lt;/u&gt;&lt;/b&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Use “CONTROL+BREAK” command if “Debuggie is not connected” is shown …&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal" style="margin-right: 0.9pt; margin-left: 13.85pt; margin-bottom: 0.0001pt; "&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span&gt;If the VM looks like HANG/LOCKED after starting Kernel debugging then type “g” in the WinDbg commandline so that debugging starts and we get the VM unlocked J&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;b&gt;&lt;u&gt;ref:&lt;/u&gt;&lt;/b&gt; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Remote Kernel Debugging - &lt;a href="http://www.wd-3.com/archive/RemoteDbg.htm" target="_blank"&gt;http://www.wd-3.com/archive/&lt;wbr&gt;RemoteDbg.htm&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;WinDbg remote debugging and Vmware - &lt;a href="http://silverstr.ufies.org/lotr0/windbg-vmware.html" target="_blank"&gt;http://silverstr.ufies.org/&lt;wbr&gt;lotr0/windbg-vmware.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.ndis.com/ndis-debugging/virtual/vmwaresetup.htm" target="_blank"&gt;&lt;span&gt;http://www.ndis.com/ndis-&lt;wbr&gt;debugging/virtual/vmwaresetup.&lt;wbr&gt;htm&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-2017059733357056069?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2017059733357056069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2017059733357056069'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/12/remote-debugging-with-windbg.html' title='VMware Virtual Machine(VM) Remote Debugging using WinDBG'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-5024070448723207459</id><published>2011-12-25T17:46:00.000-08:00</published><updated>2011-12-26T00:24:26.320-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C PROGRAMMING'/><title type='text'>Bitwise Operators</title><content type='html'>&lt;div&gt;&lt;span&gt;Bitwise OR =&amp;gt; to "set" or "turn on" a "flag"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Bitwise AND =&amp;gt; used to check the state(0/1) of a flag in your flags variable&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Bitwise XOR =&amp;gt; used to toggle the flag bits of a MASK in your flags variable&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Bitwise NOT =&amp;gt; used to toggle the bits&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Left Shift =&amp;gt; Multiply 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Right Shift =&amp;gt; Divide by 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;ref:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;a href="http://c-faq.com/~scs/cclass/int/sx4ab.html"&gt;http://c-faq.com/~scs/cclass/int/sx4ab.html&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;a href="http://analgorithmaday.blogspot.com/2011/06/mis-conceptions-with-bitwise-operators.html"&gt;http://analgorithmaday.blogspot.com/2011/06/mis-conceptions-with-bitwise-operators.html&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.robsearles.com/2009/12/02/bitwise-operators-used-for-flagging-items-part-1/"&gt;&lt;span&gt;http://www.robsearles.com/2009/12/02/bitwise-operators-used-for-flagging-items-part-1/&lt;/span&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-5024070448723207459?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5024070448723207459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5024070448723207459'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/12/bitwise-operatorsc.html' title='Bitwise Operators'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-2121308521602968071</id><published>2011-12-25T17:37:00.000-08:00</published><updated>2011-12-25T17:42:16.210-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET DEVELOPMENT'/><title type='text'>C# .Net Books</title><content type='html'>&lt;div&gt;&lt;b&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span id="internal-source-marker_0.10956452717073262"&gt;&lt;span&gt;&lt;span style="color: rgb(74, 107, 130); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;a href="http://www.microsoft.com/learning/en/us/Books/6522.aspx"&gt;CLR via C#&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; by Jeffrey Richter(&lt;/span&gt;&lt;a href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2009/06/17/clr-via-c-3rd-edition.aspx" style="font-weight: bold; "&gt;&lt;span style="color: rgb(74, 107, 130); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;3rd edition&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; adds a lot of useful info on threading and the new parallel extensions)&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.bluebytesoftware.com/books/netfx20/netfx20_book_resources.html" style="font-weight: bold; "&gt;&lt;span style="color: rgb(74, 107, 130); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Professional .NET 2.0 Framework&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; by Joe Duffy is very similar to Richters book, so I like it for the same reasons&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.manning.com/skeet2/" style="font-weight: bold; "&gt;&lt;span style="color: rgb(74, 107, 130); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;C# in Depth&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; by Jon Skeet is an excellent treatment of all the stuff that the two others do not cover&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(80, 0, 80); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Programming C# By Jesse Liberty&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color: rgb(80, 0, 80); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="color: rgb(80, 0, 80); white-space: pre-wrap; "&gt;C# Cookbook By Jay Hilyard and Stephen Teilhet&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;span style="color: rgb(34, 34, 34); "&gt;Applied Microsoft .NET Framework Programming - Jeffrey Richter&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;span style="color: rgb(34, 34, 34); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;a href="http://rads.stackoverflow.com/amzn/click/0321694694" style="font-weight: bold; "&gt;&lt;span style="color: rgb(74, 107, 130); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Essential C# 4.0&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; by Mark Michaelis&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.albahari.com/nutshell/" style="font-weight: bold; "&gt;&lt;span style="color: rgb(74, 107, 130); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;C# 4.0 in a Nutshell&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;. Excellent reference&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://rads.stackoverflow.com/amzn/click/0321245660" style="font-weight: bold; "&gt;&lt;span style="color: rgb(74, 107, 130); font-weight: normal; vertical-align: baseline; white-space: pre-wrap; "&gt;Effective C#&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(80, 0, 80); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; - Best Practices&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(80, 0, 80); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://rads.stackoverflow.com/amzn/click/0321485890" style="font-weight: bold; "&gt;&lt;span style="color: rgb(74, 107, 130); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;More Effective C#&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(80, 0, 80); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; - Best Practices&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(80, 0, 80); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://rads.stackoverflow.com/amzn/click/0321562992" style="font-weight: bold; "&gt;&lt;span style="color: rgb(74, 107, 130); font-weight: normal; vertical-align: baseline; white-space: pre-wrap; "&gt;The C# Programming Language&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(80, 0, 80); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; by Anders Hejlsberg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(80, 0, 80); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(80, 0, 80); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Programming .Net components by Juval Lowy&lt;/span&gt;&lt;span&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="color: rgb(34, 34, 34); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Pro &lt;/span&gt;&lt;a href="http://asp.net/" style="font-weight: bold; "&gt;&lt;span style="color: rgb(17, 85, 204); font-weight: normal; vertical-align: baseline; white-space: pre-wrap; "&gt;ASP.NET&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(34, 34, 34); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; 2.0 in C# 2005&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;&lt;span style="color: rgb(34, 34, 34); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;The C# language specification (get &lt;/span&gt;&lt;a href="http://rads.stackoverflow.com/amzn/click/0321741765" style="font-weight: bold; "&gt;&lt;span style="color: rgb(74, 107, 130); background-color: rgb(255, 255, 255); font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;the book&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; for the annotations)&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: medium; font-family: Arial; color: rgb(80, 0, 80); background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-2121308521602968071?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2121308521602968071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2121308521602968071'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/12/c-net-books.html' title='C# .Net Books'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-4239721024970324063</id><published>2011-08-14T13:07:00.000-07:00</published><updated>2011-08-14T13:08:08.822-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VIRTUALIZATION'/><title type='text'>VMware vShield EndPoint Security: Agentless VM Security Solution</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Strengthen security for virtual machines and their hosts while improving performance by orders of magnitude for endpoint protection, with VMware vShield Endpoint, part of the VMware vShield family. Offload antivirus and anti-malware processing to dedicated security-hardened virtual machines delivered by VMware partners. Leverage existing investments and manage antivirus and anti-malware policies for virtualized environments with the same management interfaces as physical environments.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;VMware vShield Endpoint comprises a hardened, security virtual machine that hosts the third-party anti-virus software. Each virtual machine requiring AV protection only requires a small-footprint, driver software, deployed as a loadable kernel module per vSphere host.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;How Does VMware vShield&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt; Endpoint Work ?&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;vShield Endpoint protects virtual machines and their hosts &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;against viruses, malware and other threats. vShield Endpoint &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;plugs directly into vSphere and consists of three components:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;1. Hardened security virtual machine &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;(delivered by VMware partners)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;span class="Apple-style-span"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. Driver for virtual machines to offload file events&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;3. VMware Endpoint Security (EPSEC) loadable kernel module &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;(LKM) to link the first two components at the hypervisor layer&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;Partner Integrations :&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Integration of VMware vShield Endpoint with security virtual machine solutions from VMware partners is facilitated through VMware EPSEC, which provides a library and API for introspection into file activity at the hypervisor layer. &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;vShield Endpoint monitors virtual machine file events and notifies the antivirus engine, via VMware EPSEC, which scans and returns a disposition. It also supports scheduled full and partial file scans initiated by the antivirus engine in the security virtual machine.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"&gt;ref&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;vShield Endpoint Security - &lt;a href="http://www.vmware.com/products/vshield-endpoint/features.html"&gt;http://www.vmware.com/products/vshield-endpoint/features.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;VMware vShield Endpoint - &lt;a href="http://www.vmware.com/files/pdf/vmware-vshield-endpoint-ds-en.pdf"&gt;http://www.vmware.com/files/pdf/vmware-vshield-endpoint-ds-en.pdf&lt;/a&gt; &amp;amp; &lt;/span&gt;&lt;a href="http://www.vmware.com/files/pdf/vmworld/security-media-backgrounder-en.pdf"&gt;http://www.vmware.com/files/pdf/vmworld/security-media-backgrounder-en.pdf&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Understanding VMware vShield Endpoint And Agentless Malware Protection - &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.cloudave.com/4583/vmware-vshield-endpoint-api-and-agentless-malware-protection/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+CloudAve+%28CloudAve%29"&gt;&lt;span class="Apple-style-span"&gt;http://www.cloudave.com/4583/vmware-vshield-endpoint-api-and-agentless-malware-protection/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+CloudAve+%28CloudAve%29&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;vShield Programming API - &lt;/span&gt;&lt;a href="http://www.vmware.com/pdf/vshield_41_api.pdf"&gt;http://www.vmware.com/pdf/vshield_41_api.pdf&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Trend Micro integration with VMware endpoint security - &lt;a href="http://www.vmwareforum2011.com/library/documents/finland_1100_trendmicro_session.pdf"&gt;http://www.vmwareforum2011.com/library/documents/finland_1100_trendmicro_session.pdf&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-4239721024970324063?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/4239721024970324063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/4239721024970324063'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/08/vmware-vshield-endpoint-security.html' title='VMware vShield EndPoint Security: Agentless VM Security Solution'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-5356827565842114541</id><published>2011-08-14T13:05:00.000-07:00</published><updated>2011-08-14T13:06:14.625-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><title type='text'>Windows Services Enhancements in Vista and above - Automatic Delayed Start &amp; NotifyServiceStatusChange() API</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"&gt;Auto-start services to be started only after Windows has finished its own startup process. Specifically, &lt;b&gt;a delayed auto-start service is activated roughly two minutes after regular auto-start services&lt;/b&gt;. The Service Control Manager (SCM) also creates the main service thread with a lower priority, ensuring that any logged on user isn't notably impacted by delayed auto-start services. The priority is set back to normal after the service updates its state indicating that it is running. You can force a delayed auto-start service to start sooner by using the StartService function if it turns out that it hasn't started by the time your application needs to make use of it.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Example:&lt;/b&gt; &lt;/span&gt;Windows Security Center Service(wscsvc) starts a Automatic delayed start Service.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Sample Code:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;bool ChangeDelayedAutoStart( SC_HANDLE service, bool delayed)&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;    ASSERT(0 != service);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;    SERVICE_DELAYED_AUTO_START_INFO info = { delayed };&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;    return 0 != ::ChangeServiceConfig2(&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;        service,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;        SERVICE_CONFIG_DELAYED_AUTO_START_INFO,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;        &amp;amp;info);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"&gt;Service State Change Notifications&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Earlier than Windows Vista, the only way for a client to determine whether a service had changed its status or been created or deleted was to use the service query API—such as the &lt;b&gt;QueryServiceStatusEx&lt;/b&gt; function—and poll the status of the service. This was not the best approach because these polling loops reduced system performance. In addition, polling loops have historically been a significant source of bugs.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Windows Vista introduces a new function, &lt;b&gt;NotifyServiceStatusChange&lt;/b&gt;, which allows the SCM to notify a client when a specified service is created, is deleted, or changes its status.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;How to Have a Client Notified When a Service's State Changes:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;To register for state change notifications, a client calls &lt;b&gt;NotifyServiceStatusChange &lt;/b&gt;to specify the service and change that they want to be notified of. They also provide the SCM with a pointer to a callback function. When the specified change takes place, the SCM calls the callback function to notify the caller.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;The following list contains several notes on the use of NotifyServiceStatusChange. For more information, see the function's reference page, which is listed in "Resources" at the end of this paper.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;·         NotifyServiceStatusChange can be used by local or remote clients.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;·         The callback function is called only once. If the client wants a subsequent notification for this change, the client must call NotifyServiceStatusChange again and reregister the callback function.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;·         The callback function is normally called after a transition to the specified state has occurred. There is an exception to this rule for the first time that the caller invokes NotifyServiceStatusChange. In that case, if the service is already in the specified state, SCM calls the callback function.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;·         Clients can cancel the notification by calling CloseServiceHandle to close the service handle.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;·         Clients should not exit the thread that they used to call NotifyServiceStatusChange unless the callback function has been called or they have canceled the notification. Otherwise, they will create a memory leak.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;·         If one or more services hold open handles to a service, the service is not deleted until the next time the system is booted. If this is the case, no delete notification is sent.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Note: A caller must have the SERVICE_QUERY_STATUS access right to call NotifyServiceStatusChange. By default, only administrators, power users, and server operators on a domain controller can get this right remotely. Services and interactive users can get this right locally.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"&gt;ref:&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Windows Services Advanced concepts - &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc164252.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-&lt;wbr&gt;us/magazine/cc164252.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Windows Services in Windows Vista(Service State Change Notifications) - &lt;a href="http://www.scritube.com/limba/engleza/software/Services-in-Windows-Vista1731861210.php" target="_blank"&gt;http://www.scritube.com/limba/&lt;wbr&gt;engleza/software/Services-in-&lt;wbr&gt;Windows-Vista1731861210.php&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;VC++ sample code(using &lt;b&gt;&lt;span&gt;NotifyServiceStatusChange&lt;/span&gt;&lt;/b&gt;) - &lt;/span&gt;&lt;a href="http://www.experts-exchange.com/Programming/Languages/CPP/Q_23586927.html" target="_blank"&gt;&lt;span class="Apple-style-span"&gt;http://www.experts-exchange.&lt;wbr&gt;com/Programming/Languages/CPP/&lt;wbr&gt;Q_23586927.html&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-5356827565842114541?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5356827565842114541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5356827565842114541'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/08/windows-services-enhancements-in-vista.html' title='Windows Services Enhancements in Vista and above - Automatic Delayed Start &amp; NotifyServiceStatusChange() API'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-5456362931872908301</id><published>2011-06-21T18:51:00.000-07:00</published><updated>2011-06-21T18:59:00.208-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WINDOWS OPERATING SYSTEM'/><title type='text'>NTFS Links: Hard Links, Junctions, Symbolic Links</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;There are three types of file links supported in the NTFS file system:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;hard links&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;junctions&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span"&gt;symbolic links.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;span class="Apple-style-span"&gt;Hard Links&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:15.0pt;margin-right:0in;margin-bottom:15.0pt;margin-left: 0in;line-height:12.75pt"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="color: black; "&gt;A&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span style="color: black; "&gt;hard link&lt;/span&gt;&lt;/em&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="color: black; "&gt;is the file system representation of a file by which more than one path references a single file in the same volume.&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51); "&gt;A hard link directly points to the file, and acts to the operating system as if it is the file itself. You’ll want to use this option the majority of the time if you are trying to fake an application’s directory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-converted-space"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="apple-converted-space"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="line-height: 115%; color: black; "&gt;NTFS Junctions (or) &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;u&gt;&lt;span style="line-height: 115%; color: black; "&gt;Soft Links&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;u&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:15.0pt;margin-right:0in;margin-bottom:15.0pt;margin-left: 0in;line-height:12.75pt"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="color: black; "&gt;A&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="color: black; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Soft_link" title="Soft link" style="background-attachment:initial;background-origin: initial;background-clip: initial; background-color:initial;background-position:initial initial;background-repeat: initial initial"&gt;&lt;span style="color:#0645AD;text-decoration:none;text-underline: none"&gt;soft link&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="color: black; "&gt;on filesystems is not a link to a file itself, but to a file name; this also creates aliasing, but in a different way.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51); "&gt; &lt;b style="mso-bidi-font-weight:normal"&gt;A soft link is essentially a shortcut to a file or folder&lt;/b&gt; – if you are using Windows explorer, you’ll be redirected to the directory if you double-click on a shortcut, it won’t pretend its part of the filesystem. You can still directly reference or open a file with the symlinked path, and it mostly works.&lt;span class="apple-style-span"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;A&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span style="line-height: 115%; color: black; "&gt;junction&lt;/span&gt;&lt;/em&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;(also called a&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span style="line-height: 115%; color: black; "&gt;soft link&lt;/span&gt;&lt;/em&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;) differs from a hard link in that the storage objects it references are separate directories, and a junction can link directories located on different local volumes on the same computer. Otherwise, junctions operate identically to hard links. Junctions are implemented through&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa365503(v=vs.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;reparse points&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;An&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="line-height: 115%; color: black; "&gt;NTFS junction point&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;is a feature of the&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;a href="http://en.wikipedia.org/wiki/NTFS" title="NTFS" style="background-attachment: initial;background-origin: initial;background-clip: initial;background-color: initial;background-position:initial initial;background-repeat:initial initial"&gt;&lt;span style="color:#0645AD;text-decoration:none;text-underline:none"&gt;NTFS&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;a href="http://en.wikipedia.org/wiki/File_system" title="File system" style="background-attachment:initial;background-origin: initial;background-clip: initial; background-color:initial;background-position:initial initial;background-repeat: initial initial"&gt;&lt;span style="color:#0645AD;text-decoration:none;text-underline: none"&gt;file system&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;that provides the ability to create a symbolic link to a&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Directory_(file_systems)" title="Directory (file systems)" style="background-attachment:initial; background-origin: initial;background-clip: initial;background-color:initial; background-position:initial initial;background-repeat:initial initial"&gt;&lt;span style="color:#0645AD;text-decoration:none;text-underline:none"&gt;directory&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;which then functions as an alias of that directory. This has many benefits over a&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Windows_shell" title="Windows shell" style="background-attachment:initial;background-origin: initial;background-clip: initial; background-color:initial;background-position:initial initial;background-repeat: initial initial"&gt;&lt;span style="color:#0645AD;text-decoration:none;text-underline: none"&gt;Windows shell&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_shortcut" title="Computer shortcut" style="background-attachment:initial;background-origin: initial; background-clip: initial;background-color:initial;background-position:initial initial; background-repeat:initial initial"&gt;&lt;span style="color:#0645AD;text-decoration: none;text-underline:none"&gt;shortcut&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;(.lnk) file, such as allowing access to files within the directory via&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Windows_Explorer" title="Windows Explorer" style="background-attachment:initial;background-origin: initial;background-clip: initial; background-color:initial;background-position:initial initial;background-repeat: initial initial"&gt;&lt;span style="color:#0645AD;text-decoration:none;text-underline: none"&gt;Windows Explorer&lt;/span&gt;&lt;/a&gt;, the&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;a href="http://en.wikipedia.org/wiki/Command_Prompt_(Windows)" title="Command Prompt (Windows)" style="background-attachment:initial; background-origin: initial;background-clip: initial;background-color:initial; background-position:initial initial;background-repeat:initial initial"&gt;&lt;span style="color:#0645AD;text-decoration:none;text-underline:none"&gt;Command Prompt&lt;/span&gt;&lt;/a&gt;, etc.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;span class="Apple-style-span"&gt;Symbolic Link&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:4.8pt;margin-right:0in;margin-bottom:6.0pt;margin-left: 0in;line-height:18.0pt"&gt;&lt;span style="color: black; "&gt;&lt;span class="Apple-style-span"&gt;A&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;b&gt;NTFS symbolic link&lt;/b&gt;&lt;span class="apple-converted-space"&gt; &lt;/span&gt;(symlink) is a filesystem object in the&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/NTFS" title="NTFS" style="background-attachment: initial;background-origin: initial;background-clip: initial;background-color: initial;background-position:initial initial;background-repeat:initial initial"&gt;&lt;span style="color:#0645AD"&gt;NTFS filesystem&lt;/span&gt;&lt;/a&gt;&lt;span class="apple-converted-space"&gt; &lt;/span&gt;that points to another filesystem object. The object being pointed to is called the target.&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Symbolic_link" title="Symbolic link" style="background-attachment:initial;background-origin: initial;background-clip: initial; background-color:initial;background-position:initial initial;background-repeat: initial initial"&gt;&lt;span style="color:#0645AD"&gt;Symbolic links&lt;/span&gt;&lt;/a&gt; should be transparent to users; the links appear as normal files or directories, and can be acted upon by the user or application in exactly the same manner. Symbolic links are designed to aid in migration and application compatibility with&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/POSIX" title="POSIX" style="background-attachment: initial;background-origin: initial;background-clip: initial;background-color: initial;background-position:initial initial;background-repeat:initial initial"&gt;&lt;span style="color:#0645AD"&gt;POSIX&lt;/span&gt;&lt;/a&gt;&lt;span class="apple-converted-space"&gt; &lt;/span&gt;operating systems, and were introduced with the modifications made to the NTFS file system with&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Windows_Vista" title="Windows Vista" style="background-attachment:initial;background-origin: initial;background-clip: initial; background-color:initial;background-position:initial initial;background-repeat: initial initial"&gt;&lt;span style="color:#0645AD"&gt;Windows Vista&lt;/span&gt;&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:4.8pt;margin-right:0in;margin-bottom:6.0pt;margin-left: 0in;line-height:18.0pt"&gt;&lt;span style="color: black; "&gt;&lt;span class="Apple-style-span"&gt;Unlike an&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/NTFS_junction_point" title="NTFS junction point" style="background-attachment:initial;background-origin: initial; background-clip: initial;background-color:initial;background-position:initial initial; background-repeat:initial initial"&gt;&lt;span style="color:#0645AD"&gt;NTFS junction point&lt;/span&gt;&lt;/a&gt;&lt;span class="apple-converted-space"&gt; &lt;/span&gt;(available since Windows 2000), a symbolic link can also point to a file or remote&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Server_Message_Block" title="Server Message Block" style="background-attachment:initial;background-origin: initial; background-clip: initial;background-color:initial;background-position:initial initial; background-repeat:initial initial"&gt;&lt;span style="color:#0645AD"&gt;SMB&lt;/span&gt;&lt;/a&gt;&lt;span class="apple-converted-space"&gt; &lt;/span&gt;network path. While NTFS junction points support only absolute paths on local drives, the NTFS symbolic links allow linking using relative paths. Additionally, the NTFS symbolic link implementation provides full support for cross-filesystem links. However, the functionality enabling cross-host symbolic links requires that the remote system also support them, which effectively limits their support to Windows Vista and later Windows operating systems.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:15.0pt;margin-right:0in;margin-bottom:15.0pt;margin-left: 0in;line-height:12.75pt"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;u&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="color: rgb(51, 51, 51); "&gt;&lt;/span&gt;In Unix Terminology,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin-top:15.0pt;margin-right:0in;margin-bottom:15.0pt;margin-left: 0in;line-height:12.75pt"&gt;&lt;span style="color: rgb(51, 51, 51); "&gt;&lt;span class="Apple-style-span"&gt;Hard Link =&amp;gt; 2 different files pointing to the same Inode. Parent &amp;amp; Child can exist on their own. Delete Parent but child can still survive.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top:15.0pt;margin-right:0in;margin-bottom:15.0pt;margin-left: 0in;line-height:12.75pt"&gt;&lt;span style="color: rgb(51, 51, 51); "&gt;&lt;span class="Apple-style-span"&gt;Symbolic Link =&amp;gt; 2 different files pointing to 2 different Inodes. Child refers to the parent path. Deleting the Parent has cascading effect(by deleting the Child too) !&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-5456362931872908301?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5456362931872908301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5456362931872908301'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/06/ntfs-links-hard-links-junctions.html' title='NTFS Links: Hard Links, Junctions, Symbolic Links'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-7142128443472925906</id><published>2011-06-21T18:16:00.000-07:00</published><updated>2011-06-21T18:20:14.712-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KERNEL DEVELOPMENT'/><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><title type='text'>File System Filter Drivers vs Device Drivers</title><content type='html'>&lt;span class="Apple-style-span"  &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; "&gt;The following subsections describe some of the differences between file system filter drivers and device drivers.&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; "&gt;&lt;div style="padding-top: 5px; "&gt;&lt;h4 style="color: rgb(63, 82, 156); font-weight: bold; "&gt;&lt;a style="color: rgb(42, 93, 176); "&gt;&lt;/a&gt;No Power Management&lt;/h4&gt;&lt;p&gt;Because file system filter drivers are not device drivers and thus do not control hardware devices directly, they do not receive &lt;a href="http://msdn.microsoft.com/en-us/library/ff550784(v=vs.85).aspx" target="_blank" style="color: rgb(19, 100, 196); text-decoration: none; "&gt;&lt;strong&gt;IRP_MJ_POWER&lt;/strong&gt;&lt;/a&gt; requests. Instead, power IRPs are sent directly to the storage device stack. In rare circumstances, however, file system filter drivers might interfere with power management. For this reason, file system filter drivers should not register dispatch routines for IRP_MJ_POWER in the&lt;strong&gt;DriverEntry&lt;/strong&gt; routine, and they should not call &lt;a href="http://msdn.microsoft.com/en-us/library/ff559835(v=vs.85).aspx" target="_blank" style="color: rgb(19, 100, 196); text-decoration: none; "&gt;PoXxx&lt;/a&gt; routines.&lt;/p&gt;&lt;h4 style="color: rgb(63, 82, 156); font-weight: bold; "&gt;&lt;a style="color: rgb(42, 93, 176); "&gt;&lt;/a&gt;No WDM&lt;/h4&gt;&lt;p&gt;File system filter drivers cannot be Windows Driver Model (WDM) drivers. The Microsoft &lt;a href="http://msdn.microsoft.com/en-us/library/ff565698(v=vs.85).aspx" target="_blank" style="color: rgb(19, 100, 196); text-decoration: none; "&gt;Windows Driver Model&lt;/a&gt; is only for device drivers. For more information about file system driver development in Windows Me, Windows 98, and Windows 95, see the Windows Me Driver Development Kit (DDK).&lt;/p&gt;&lt;h4 style="color: rgb(63, 82, 156); font-weight: bold; "&gt;&lt;a style="color: rgb(42, 93, 176); "&gt;&lt;/a&gt;No AddDevice or StartIo&lt;/h4&gt;&lt;p&gt;Because file system filter drivers are not device drivers and thus do not control hardware devices directly, they should not have &lt;a href="http://msdn.microsoft.com/en-us/library/ff540521(v=vs.85).aspx" target="_blank" style="color: rgb(19, 100, 196); text-decoration: none; "&gt;&lt;strong&gt;AddDevice&lt;/strong&gt;&lt;/a&gt; or &lt;a href="http://msdn.microsoft.com/en-us/library/ff563858(v=vs.85).aspx" target="_blank" style="color: rgb(19, 100, 196); text-decoration: none; "&gt;&lt;strong&gt;StartIo&lt;/strong&gt;&lt;/a&gt; &lt;wbr&gt;routines.&lt;/p&gt;&lt;h4 style="color: rgb(63, 82, 156); font-weight: bold; "&gt;&lt;a style="color: rgb(42, 93, 176); "&gt;&lt;/a&gt;Different Device Objects Created&lt;/h4&gt;&lt;p&gt;Although file system filter drivers and device drivers both create device objects, they differ in the number and kinds of device objects that they create.&lt;/p&gt;&lt;p&gt;Device drivers create physical and functional device objects to represent devices. The Plug and Play (PnP) Manager builds and maintains a global device tree that contains all device objects that are created by device drivers. The device objects that file system filter drivers create are not contained in this device tree.&lt;/p&gt;&lt;p&gt;File system filter drivers do not create physical or functional device objects. Instead, they create control device objects and filter device objects. The &lt;em&gt;control device object&lt;/em&gt; represents the filter driver to the system and to user-mode applications. The &lt;em&gt;filter device object&lt;/em&gt; performs the actual work of filtering a specific file system or volume. A file system filter driver normally creates one control device object and one or more filter device objects.&lt;/p&gt;&lt;h4 style="color: rgb(63, 82, 156); font-weight: bold; "&gt;&lt;a style="color: rgb(42, 93, 176); "&gt;&lt;/a&gt;Other Differences&lt;/h4&gt;&lt;p&gt;Because file system filter drivers are not device drivers, they do not perform &lt;a href="http://msdn.microsoft.com/en-us/library/ff565374(v=vs.85).aspx" target="_blank" style="color: rgb(19, 100, 196); text-decoration: none; "&gt;direct memory access (DMA)&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Unlike device filter drivers, which can attach above or below a target device's function driver, file system filter drivers can attach only above a target file system driver. Thus, in device-driver terms, a file system filter driver can be only an upper filter, never a lower filter.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;ref:&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff548075(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/ff548075(v=vs.85).aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Sample Filter Driver code - &lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; "&gt;&lt;a href="http://read.pudn.com/downloads2/sourcecode/windows/system/4397/WinntInternalFS/filesys/src/sfsdinit.c__.htm" target="_blank" style="color: rgb(42, 93, 176); "&gt;http://read.pudn.com/&lt;wbr&gt;downloads2/sourcecode/windows/&lt;wbr&gt;system/4397/WinntInternalFS/&lt;wbr&gt;filesys/src/sfsdinit.c__.htm&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; "&gt;&lt;a href="http://read.pudn.com/downloads27/sourcecode/windows/system/86694/CallMsgRing0/CallMsgRing0.c__.htm" target="_blank" style="color: rgb(42, 93, 176); "&gt;&lt;span class="Apple-style-span"  &gt;http://read.pudn.com/&lt;wbr&gt;downloads27/sourcecode/&lt;wbr&gt;windows/system/86694/&lt;wbr&gt;CallMsgRing0/CallMsgRing0.c__.&lt;wbr&gt;htm&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: rgb(31, 73, 125); "&gt;&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=17&amp;amp;ved=0CDYQFjAGOAo&amp;amp;url=http%3A%2F%2Fwww.mglife.ru%2Fpub%2Finfo%2F%25D0%25A3%25D1%2587%25D0%25B5%25D0%25B1%25D0%25BD%25D0%25B8%25D0%25BA%25D0%25B8%2F3%2F6%2FTemp%2FTrueCrypt%2520v4.2a%2520source%2FTrueCrypt%2FDriver%2FNtdriver.c&amp;amp;rct=j&amp;amp;q=IoRegisterShutdownNotification%20C%20code&amp;amp;ei=iz8BTpCZHIKutwfi5LyDDg&amp;amp;usg=AFQjCNGp87K_UESdkXWKxQ-NPRZTe5CL8Q&amp;amp;sig2=O9yhjBMU4klYADle9A7mKQ" target="_blank" style="color: rgb(42, 93, 176); "&gt;&lt;span class="Apple-style-span"  &gt;http://www.google.com/url?sa=&lt;wbr&gt;t&amp;amp;source=web&amp;amp;cd=17&amp;amp;ved=&lt;wbr&gt;0CDYQFjAGOAo&amp;amp;url=http%3A%2F%&lt;wbr&gt;2Fwww.mglife.ru%2Fpub%2Finfo%&lt;wbr&gt;2F%25D0%25A3%25D1%2587%25D0%&lt;wbr&gt;25B5%25D0%25B1%25D0%25BD%25D0%&lt;wbr&gt;25B8%25D0%25BA%25D0%25B8%2F3%&lt;wbr&gt;2F6%2FTemp%2FTrueCrypt%2520v4.&lt;wbr&gt;2a%2520source%2FTrueCrypt%&lt;wbr&gt;2FDriver%2FNtdriver.c&amp;amp;rct=j&amp;amp;q=&lt;wbr&gt;IoRegisterShutdownNotification&lt;wbr&gt;%20C%20code&amp;amp;ei=&lt;wbr&gt;iz8BTpCZHIKutwfi5LyDDg&amp;amp;usg=&lt;wbr&gt;AFQjCNGp87K_UESdkXWKxQ-&lt;wbr&gt;NPRZTe5CL8Q&amp;amp;sig2=&lt;wbr&gt;O9yhjBMU4klYADle9A7mKQ&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-7142128443472925906?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/7142128443472925906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/7142128443472925906'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/06/file-system-filter-drivers-vs-device.html' title='File System Filter Drivers vs Device Drivers'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-1864446225681572144</id><published>2011-06-18T22:27:00.000-07:00</published><updated>2012-02-04T20:23:44.381-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VIRTUALIZATION'/><category scheme='http://www.blogger.com/atom/ns#' term='DOMAIN KNOWLEDGE'/><title type='text'>Full Virtualization vs Para Virtualization</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"&gt;There are several ways to implement virtualization. Two leading approaches are full virtualization and para-virtualization. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Full virtualization&lt;/b&gt; is designed to provide total abstraction of the underlying physical system and creates a complete virtual system in which the guest operating systems can execute. No modification is required in the guest OS or application; the guest OS or application is not aware of the virtualized environment so they have the capability to execute on the VM just as they would on a physical system. This approach can be advantageous because it enables complete decoupling of the software from the hardware. As a result, full virtualization can streamline the migration of applications and workloads between different physical systems. Full virtualization also helps provide complete isolation of different applications, which helps make this approach highly secure. &lt;b&gt;Microsoft® Virtual Server and VMware® ESX Server™ software are examples of full virtualization.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Para-virtualization&lt;/b&gt; presents each VM with an abstraction of the hardware that is similar but not identical to the underlying physical hardware. Para-virtualization techniques require modifications to the guest operating systems that are running on the VMs. As a result, the guest operating systems are aware that they are executing on a VM—allowing for near-native performance. Para-virtualization methods are still being developed and thus have limitations, including several insecurities such as the guest OS cache data, unauthenticated connections, and so forth. &lt;/span&gt;&lt;b&gt;Xen is an open source virtualization software based on paravirtualization technology.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Xen 3.0 Aerchitecture: &lt;/b&gt;&lt;/span&gt;The Intel x86 architecture provides &lt;span class="Apple-style-span"&gt;&lt;/span&gt;four levels of privilege modes. These modes, or rings, are numbered 0 to 3, with 0 being the most privileged. In a non-virtualized system, the OS executes at ring 0 and the applications at ring 3. Rings 1 and 2 are typically not used. In Xen para-virtualization, the VMM executes at ring 0, the guest OS at ring 1, and the applications at ring 3. This approach helps to ensure that the VMM possesses the highest privilege, while the guest OS executes in a higher privileged mode than the applications and is isolated from the applications. Privileged instructions issued by the guest OS are verified and executed by the VMM.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;u&gt;ref:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;vmware paravirtualization - &lt;/span&gt;&lt;a href="http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf"&gt;http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Xen Para virtualization - &lt;a href="http://www.dell.com/downloads/global/power/ps3q05-20050191-Abels.pdf"&gt;http://www.dell.com/downloads/global/power/ps3q05-20050191-Abels.pdf&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Para virtualization with ESX - &lt;a href="http://www.virtuallifestyle.nl/2008/10/paravirtualization-with-esx/"&gt;http://www.virtuallifestyle.nl/2008/10/paravirtualization-with-esx/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Compare Vmware Esx, Microsoft Hyper-V &amp;amp; Citrix Xen - &lt;a href="http://www.vmware.com/technical-resources/advantages/robust-foundation.html"&gt;http://www.vmware.com/technical-resources/advantages/robust-foundation.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Misc -&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p style="color: rgb(51, 51, 51); font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; text-decoration: none; "&gt;&lt;a href="http://virtualization.info/en/news/2008/02/long-vmware-road-to-cpu-para.html"&gt;&lt;span class="Apple-style-span"&gt;http://virtualization.info/en/news/2008/02/long-vmware-road-to-cpu-para.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; "&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 16px; "&gt;&lt;a href="http://www.vmware.com/pdf/VMware_VMI_performance.pdf"&gt;http://www.vmware.com/pdf/VMware_VMI_performance.pdf&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 51, 51); font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; text-decoration: none; "&gt;&lt;a href="http://blogs.vmware.com/performance/2008/02/vmi-performance.html"&gt;&lt;span class="Apple-style-span"&gt;http://blogs.vmware.com/performance/2008/02/vmi-performance.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 51, 51); font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; text-decoration: none; "&gt;&lt;a href="http://www.electricrelaxation.com/2007/05/27/building-a-vmi-enabled-kernel-for-debian-lenny-testing"&gt;&lt;span class="Apple-style-span"&gt;http://www.electricrelaxation.com/2007/05/27/building-a-vmi-enabled-kernel-for-debian-lenny-testing&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-1864446225681572144?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/1864446225681572144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/1864446225681572144'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/06/full-virtualization-vs-para.html' title='Full Virtualization vs Para Virtualization'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-772810393171738371</id><published>2011-06-07T00:09:00.000-07:00</published><updated>2011-06-21T18:20:27.334-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KERNEL DEVELOPMENT'/><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><category scheme='http://www.blogger.com/atom/ns#' term='SOFTWARE SECURITY'/><title type='text'>Windows Minifilter Driver - User mode to Kernel mode Communication</title><content type='html'>&lt;span class="Apple-style-span"&gt;&lt;span class="il"&gt;&lt;div&gt;&lt;span class="il"&gt;The filter manager supports communication between user mode and kernel mode through &lt;b&gt;"communication ports"&lt;/b&gt;. The minifilter driver controls security on the port by specifying a security descriptor to be applied to the communication port object. Communication through a communication port is not buffered, so it is faster and more efficient. A user-mode application or service can reply to messages from a minifilter driver for bidirectional communication.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="il"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="il"&gt;&lt;b&gt;&lt;u&gt;ref:&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="il"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;User mode&lt;/span&gt; &lt;span class="il"&gt;to&lt;/span&gt; &lt;span class="il"&gt;Kernel&lt;/span&gt; mode communication (Communication Ports) - &lt;a href="http://msdn.microsoft.com/en-us/library/ff539277%28v=vs.85%29.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-&lt;wbr&gt;us/library/ff539277(v=vs.85).&lt;wbr&gt;aspx&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;User-Mode Interactions: Guidelines for Kernel-Mode Drivers(&lt;span class="Apple-style-span" style="border-collapse: collapse; color: rgb(51, 51, 51); line-height: 16px; "&gt;KM-UMGuide.doc&lt;/span&gt;) - &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/windows/hardware/gg487414.aspx"&gt;&lt;span class="Apple-style-span"&gt;http://msdn.microsoft.com/en-us/windows/hardware/gg487414.aspx&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;div&gt;Kernel mode to User mode Communication - &lt;a href="http://www.osronline.com/showThread.cfm?link=90062"&gt;http://www.osronline.com/showThread.cfm?link=90062&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Windows Kernel Internals - &lt;a href="http://sww-it.ru/wp-content/uploads/2011/University%20of%20Tokyo%20Windows%20Internals%20Lectures/10-LPC/LPC.pdf"&gt;http://sww-it.ru/wp-content/uploads/2011/University%20of%20Tokyo%20Windows%20Internals%20Lectures/10-LPC/LPC.pdf&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Kernel Mode to User Mode Communication WFP Driver - &lt;a href="http://www.osronline.com/showthread.cfm?link=205452"&gt;http://www.osronline.com/showthread.cfm?link=205452&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;User to Kernel Communication Model - &lt;a href="http://muglin.ru/messagesupport.ppt"&gt;http://muglin.ru/messagesupport.ppt&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Filter Manager support in Usermode - &lt;a href="http://muglin.ru/UserModeLib.ppt"&gt;http://muglin.ru/UserModeLib.ppt&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-772810393171738371?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/772810393171738371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/772810393171738371'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/06/usermode-to-kernelmode-communication.html' title='Windows Minifilter Driver - User mode to Kernel mode Communication'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-4981698759636424606</id><published>2011-06-06T23:30:00.000-07:00</published><updated>2011-12-12T14:37:10.202-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KERNEL DEVELOPMENT'/><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><category scheme='http://www.blogger.com/atom/ns#' term='SOFTWARE SECURITY'/><title type='text'>Windows FileSystem Mini Filter Driver Development</title><content type='html'>&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px; font-weight: normal; "&gt;&lt;p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;A File system filter driver intercepts requests targeted at a file system or another file system filter driver. By intercepting the request before it reaches its intended target, the filter driver can extend or replace functionality provided by the original target of the request. Examples of file system filter drivers include anti-virus filters, backup agents, and encryption products. To develop file systems and file system filter drivers, use the IFS (Installable File System) Kit, which is provided with the&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/windows/hardware/gg487463" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 102, 221); cursor: pointer; text-decoration: none; "&gt;Windows Driver Kit (WDK&lt;/a&gt;&lt;span class="Apple-style-span"&gt;).&lt;/span&gt;&lt;/p&gt;&lt;p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;b&gt;&lt;u&gt;Filter Manager and Minifilters Basics:&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;b&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; line-height: normal; "&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="display: inline !important; "&gt;&lt;b&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px; font-weight: normal; "&gt;&lt;p style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: inline !important; "&gt;The Filter Manager is a file system filter driver provided by Microsoft that simplifies the development of third-party filter drivers and solves many of the problems with the existing legacy filter driver model, such as the ability to control load order through an assigned altitude. A filter driver developed to the Filter Manager model is called a minifilter. Every minifilter driver has an assigned altitude, which is a unique identifier that determines where the minifilter is loaded.&lt;/p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;/b&gt;&lt;/div&gt;A minifilter driver can be loaded at any time while the system is running&lt;/b&gt;. If a minifilter driver's INF file specifies a driver start type of SERVICE_BOOT_START, SERVICE_SYSTEM_START, or SERVICE_AUTO_START, the minifilter driver is loaded according to existing load order group definitions for file system filter drivers, to support interoperability with legacy filter drivers. While the system is running, a minifilter driver can be loaded through a service start request (sc start, net start, or the service APIs), or through an explicit load request (fltmc load, FltLoadFilter, orFilterLoad).&lt;br /&gt;&lt;br /&gt;A minifilter driver's &lt;b&gt;DriverEntry &lt;/b&gt;routine is called when the minifilter driver is loaded, so the minifilter driver can perform initialization that will apply to all instances of the minifilter driver. Within its DriverEntry routine, the minifilter driver calls &lt;b&gt;FltRegisterFilter &lt;/b&gt;to register callback routines with the filter manager and &lt;b&gt;FltStartFiltering &lt;/b&gt;to notify the filter manager that the minifilter driver is ready to start attaching to volumes and filtering I/O requests.&lt;br /&gt;&lt;br /&gt;Minifilter driver instances are defined in the INF file used to install the minifilter driver. A minifilter driver's INF file must define a default instance, and it can define additional instances. These definitions apply across all volumes. Each instance definition includes the instance name, its altitude, and flags that indicate whether the instance can be attached automatically, manually, or both. The default instance is used to order minifilter drivers so that the filter manager calls the minifilter driver's mount and instance setup callback routines in the correct order. The default instance is also used with explicit attachment requests when the caller doesn't specify an instance name.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;u&gt;Excerpts:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;div class="im"&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;1.&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman'; "&gt;       &lt;/span&gt;CreateService() API loads FilterDriver …. It’s equivalent of FilterLoad() API&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;&lt;span&gt;2.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;       &lt;/span&gt;&lt;/span&gt;StartService() API calls DriverEntry() API&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;&lt;span&gt;3.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;       &lt;/span&gt;&lt;/span&gt;StopService()  API calls the DriverUnloadCallback() registered with  FltRegisterFilter() API … This is not a real DriverUnload ; it’s kind of  stopping the &lt;span class="il"&gt;driver&lt;/span&gt; to work !&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;&lt;span&gt;4.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;       &lt;/span&gt;&lt;/span&gt;DeleteService() API calls the FilterUnload() API &amp;amp; which really unloads the &lt;span class="il"&gt;driver&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt; i.e&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;FilterLoad() =&amp;gt; CreateService() + StartService()&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;FilterUnload() =&amp;gt; DeleteService()&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;StartService() =&amp;gt; DriverEntry()&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"&gt;ref:&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;An Introduction To Writing TDI Filter Drivers - &lt;u&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://www.iseclab.org/papers/Writing_TDI_Drivers.pdf"&gt;http://www.iseclab.org/papers/Writing_TDI_Drivers.pdf&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Sample TDI Driver Firewall Opensource code - &lt;/span&gt;&lt;a href="http://sourceforge.net/projects/tdifw/"&gt;http://sourceforge.net/projects/tdifw/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;File System Filter Driver - &lt;a href="http://msdn.microsoft.com/en-us/windows/hardware/gg462968"&gt;http://msdn.microsoft.com/en-us/windows/hardware/gg462968&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;FileSystem Mini Filter Drivers - &lt;a href="http://msdn.microsoft.com/en-us/library/ff540402(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/ff540402(v=vs.85).aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;FileSystem Mini Filter Driver development Guide - &lt;a href="http://download.microsoft.com/download/e/b/a/eba1050f-a31d-436b-9281-92cdfeae4b45/filterdriverdeveloperguide.doc"&gt;http://download.microsoft.com/download/e/b/a/eba1050f-a31d-436b-9281-92cdfeae4b45/filterdriverdeveloperguide.doc&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Developing FileSystem Mini filter drivers - &lt;/span&gt;&lt;a href="http://www.osr.com/filters.pdf"&gt;http://www.osr.com/filters.pdf&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Filter Driver Development Kit - &lt;a href="http://www.osr.com/fddk.html" target="_blank"&gt;http://www.osr.com/fddk.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Mini Filter Driver sample code - &lt;a href="http://read.pudn.com/downloads120/sourcecode/windows/vxd/512106/miniFilter/miniFilter/MetadataManager/operations.c__.htm"&gt;http://read.pudn.com/downloads120/sourcecode/windows/vxd/512106/miniFilter/miniFilter/MetadataManager/operations.c__.htm&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Filter Driver Sample code - &lt;a href="https://projects.honeynet.org/svn/capture-hpc/capture-hpc/tags/2.5/capture-client/KernelDrivers/CaptureKernelDrivers/FileMonitor/CaptureFileMonitor.c"&gt;https://projects.honeynet.org/svn/capture-hpc/capture-hpc/tags/2.5/capture-client/KernelDrivers/CaptureKernelDrivers/FileMonitor/CaptureFileMonitor.c&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Mini &lt;span class="il"&gt;Filter&lt;/span&gt; Loading &amp;amp; Unloading - &lt;a href="http://msdn.microsoft.com/en-us/library/ff549684%28v=vs.85%29.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-&lt;wbr&gt;us/library/ff549684(v=vs.85).&lt;wbr&gt;aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Loading &amp;amp; Unloading TDI Device drivers - &lt;a href="http://www.codeproject.com/KB/system/tdriver.aspx" target="_blank"&gt;http://www.codeproject.com/KB/&lt;wbr&gt;system/tdriver.aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Writing a FileSystem &lt;span class="il"&gt;Filter&lt;/span&gt; &lt;span class="il"&gt;Driver&lt;/span&gt; (VC++ sample code) - &lt;a href="http://www.codeproject.com/KB/system/fs-filter-driver-tutorial.aspx?msg=3369734&amp;amp;display=Mobile" target="_blank"&gt;http://www.codeproject.com/&lt;wbr&gt;KB/system/fs-&lt;span class="il"&gt;filter&lt;/span&gt;-&lt;span class="il"&gt;driver&lt;/span&gt;-&lt;wbr&gt;tutorial.aspx?msg=3369734&amp;amp;&lt;wbr&gt;display=Mobile&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Loading &amp;amp; Unloading TDI Device drivers -&lt;span style="color: rgb(31, 73, 125);"&gt; &lt;/span&gt;&lt;a href="http://www.codeproject.com/KB/system/tdriver.aspx" target="_blank"&gt;http://www.codeproject.com/KB/&lt;wbr&gt;system/tdriver.aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;FileSystem Mini &lt;span class="il"&gt;Filter&lt;/span&gt; &lt;span class="il"&gt;driver&lt;/span&gt; (which makes use of IFS kit)  - &lt;a href="http://www.microsoft.com/whdc/DevTools/IFSKit/IFSKit_About.mspx" target="_blank"&gt;http://www.microsoft.com/whdc/&lt;wbr&gt;DevTools/IFSKit/IFSKit_About.&lt;wbr&gt;mspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;IFSK sample code - &lt;a href="http://msdn.microsoft.com/en-us/library/ff548099%28v=VS.85%29.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-&lt;wbr&gt;us/library/ff548099(v=VS.85).&lt;wbr&gt;aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-indent: 0.5in; "&gt;&lt;span style="color: rgb(31, 73, 125); "&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="il"&gt;Filter&lt;/span&gt; &lt;span class="il"&gt;Driver&lt;/span&gt; - &lt;a href="http://www.microsoft.com/whdc/driver/filterdrv/default.mspx" target="_blank"&gt;http://www.microsoft.com/whdc/&lt;wbr&gt;&lt;span class="il"&gt;driver&lt;/span&gt;/filterdrv/default.mspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Handling file Rename - &lt;a href="http://read.pudn.com/downloads126/ebook/535717/OSR_docs/Rename.pdf" target="_blank"&gt;http://read.pudn.com/&lt;wbr&gt;downloads126/ebook/535717/OSR_&lt;wbr&gt;docs/Rename.pdf&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;IRP_MJ_SET_INFORMATION irp - &lt;a href="http://ddk.h16.ru/index.php?BID=4&amp;amp;PID=490" target="_blank"&gt;http://ddk.h16.ru/index.php?&lt;wbr&gt;BID=4&amp;amp;PID=490&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://ddk.h16.ru/index.php?BID=4&amp;amp;PID=490" target="_blank"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="im"&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;File Screening Minifilter &lt;span class="il"&gt;Driver&lt;/span&gt; - &lt;a href="http://technet.microsoft.com/en-us/library/dd364850%28WS.10%29.aspx" target="_blank"&gt;http://technet.microsoft.com/&lt;wbr&gt;en-us/library/dd364850(WS.10).&lt;wbr&gt;aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;I/O System &lt;span class="il"&gt;Filter&lt;/span&gt; &lt;span class="il"&gt;Driver&lt;/span&gt; - &lt;a href="http://www.calsoftlabs.com/whitepapers/filter-driver.html" target="_blank"&gt;http://www.calsoftlabs.com/&lt;wbr&gt;whitepapers/&lt;span class="il"&gt;filter&lt;/span&gt;-&lt;span class="il"&gt;driver&lt;/span&gt;.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 0in;"&gt;&lt;span class="Apple-style-span"&gt;File System &lt;span class="il"&gt;Filter&lt;/span&gt; &lt;span class="il"&gt;Driver&lt;/span&gt; Tutorial(CodeProject) - &lt;a href="http://www.codeproject.com/KB/system/fs-filter-driver-tutorial.aspx" target="_blank"&gt;http://www.codeproject.com/KB/&lt;wbr&gt;system/fs-&lt;span class="il"&gt;filter&lt;/span&gt;-&lt;span class="il"&gt;driver&lt;/span&gt;-&lt;wbr&gt;tutorial.asp&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 0in;"&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://www.codeproject.com/KB/system/fs-filter-driver-tutorial.aspx" target="_blank"&gt;&lt;/a&gt;Usermode to Kernel mode communication (Communication Ports) - &lt;a href="http://msdn.microsoft.com/en-us/library/ff539277%28v=vs.85%29.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-&lt;wbr&gt;us/library/ff539277(v=vs.85).&lt;wbr&gt;aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="im"&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;Kernel Sockets(TDI &lt;span class="il"&gt;Driver&lt;/span&gt;) - &lt;a href="http://msdn.microsoft.com/en-us/library/ff565094%28v=vs.85%29.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-&lt;wbr&gt;us/library/ff565094(v=vs.85).&lt;wbr&gt;aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"&gt;Windows &lt;span class="il"&gt;Driver&lt;/span&gt; Kit Sample code - &lt;a href="http://msdn.microsoft.com/en-us/library/ff554118%28v=VS.85%29.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-&lt;wbr&gt;us/library/ff554118(v=VS.85).&lt;wbr&gt;aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Windows &lt;span class="il"&gt;Driver&lt;/span&gt; Kit - &lt;a href="http://msdn.microsoft.com/en-us/library/ff557573%28v=VS.85%29.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-&lt;wbr&gt;us/library/ff557573(v=VS.85).&lt;wbr&gt;aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-4981698759636424606?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/4981698759636424606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/4981698759636424606'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/06/windows-mini-filter-driver.html' title='Windows FileSystem Mini Filter Driver Development'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-5480887736841399104</id><published>2011-06-01T20:59:00.000-07:00</published><updated>2011-06-01T21:27:05.900-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOFTWARE SECURITY'/><title type='text'>Alternate Data Streams (ADS)</title><content type='html'>&lt;span class="Apple-style-span"&gt;One popular method used in Windows Systems is the use of &lt;b&gt;Alternate Data Streams (ADS)&lt;/b&gt;. A relatively unknown compatibility feature of NTFS, ADS is the ability to fork file data into existing files without affecting their functionality, size, or display to traditional file browsing utilities like dir or Windows Explorer. Found in all version of NTFS, ADS capabilities where originally conceived to allow for compatibility with the Macintosh Hierarchical File System, HFS; where file information is sometimes forked into separate resources. Alternate Data Streams have come to be used legitimately by a variety of programs, including native Windows operating system to store file information such as attributes and temporary storage.&lt;br /&gt;&lt;br /&gt;Common DOS commands like "&lt;b&gt;type","echo"&lt;/b&gt; are used to create an ADS. These commands are used in conjunction with a redirect [&amp;gt;] and colon [:] to fork one file into another.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Example:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;“type c:\anyfile.exe &amp;gt; c:\winnt\system32\calc.exe:anyfile.exe”&lt;br /&gt;(or)&lt;br /&gt;echo "ads stream" &amp;gt; calc.exe:mystream&lt;br /&gt;&lt;br /&gt;will fork the common windows calculator program with an ADS “anyfile.exe.”&lt;br /&gt;&lt;br /&gt;Alarmingly files with an ADS are almost impossible to detect using native file browsing techniques like command line or windows explorer. In our example, the file size of calc.exe will show as the original size of 90k regardless of the size of the ADS anyfile.exe. The only indication that the file was changed is the modification time stamp, which can be relatively innocuous.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Once injected, the ADS can be executed by using traditional commands like &lt;b&gt;type, more or start or be scripted inside typical scripting languages like VB or Perl&lt;/b&gt;. When launched, the ADS executable will appear to run as the original file - looking undetectable to process viewers like Windows Task Manager. Using this method, it is not only possible to hide a file, but to also hide the execution of an illegitimate process.&lt;br /&gt;&lt;br /&gt;Unfortunately, it is virtually impossible to natively protect your system against ADS hidden files if you use NTFS. The use of Alternate Data Streams is not a feature that can be disabled and currently there is no way to limit this capability against files that the user already has access to.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Creating an Alternate Data Stream:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;C:\&amp;gt;echo Hidden text &amp;gt; test.txt:hidden&lt;br /&gt;The file appears to be empty, though as detailed below, the metadata is intact and associated with the file:&lt;br /&gt;&lt;br /&gt;C:\test&amp;gt;dir test.txt&lt;br /&gt;&lt;br /&gt;06/01/2011 01:33 PM 0 test.txt&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Viewing an Alternate Data Stream:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The metadata can be viewed by redirecting from it to more:&lt;br /&gt;&lt;br /&gt;C:\test&amp;gt;more &amp;lt; test.txt:hidden&lt;br /&gt;Hidden text&lt;br /&gt;&lt;br /&gt;The name and content of the ADS can be anything :&lt;br /&gt;&lt;br /&gt;C:\test&amp;gt;echo Arbitrary string &amp;gt; test.txt:arbitraryName&lt;br /&gt;&lt;br /&gt;C:\test&amp;gt;more &amp;lt; test.txt:arbitraryName&lt;br /&gt;Arbitrary string&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Listing Files With Alternate Data Streams:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;On Windows Vista and later, a list of alternate data streams can be obtained using 'DIR /R' :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;C:\test&amp;gt;dir test.txt /R&lt;br /&gt;&lt;br /&gt;06/01/2011 01:33 PM 0 test.txt&lt;br /&gt;38 test.txt:arbitraryName:$DATA&lt;br /&gt;28 test.txt:hidden:$DATA&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;b&gt;On earlier operating systems, the SysInternals utility Streams can be used:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;C:\test&amp;gt;c:\tools\SysInternals\streams.exe test.txt&lt;br /&gt;&lt;br /&gt;Streams v1.56 - Enumerate alternate NTFS data streams&lt;br /&gt;Copyright (C) 1999-2007 Mark Russinovich&lt;br /&gt;Sysinternals - www.sysinternals.com&lt;br /&gt;&lt;br /&gt;C:\test\test.txt:&lt;br /&gt;:arbitraryName:$DATA 38&lt;br /&gt;:hidden:$DATA 28&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"&gt;ref:&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.windowsecurity.com/articles/alternate_data_streams.html" target="_blank"&gt;&lt;span class="Apple-style-span"&gt;http://www.windowsecurity.com/&lt;wbr&gt;articles/alternate_data_&lt;wbr&gt;streams.html&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span&gt;ADS info -&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.curlybrace.com/words/2011/01/01/alternate-data-streams/" target="_blank"&gt;http://www.curlybrace.com/&lt;wbr&gt;words/2011/01/01/&lt;span class="il"&gt;alternate&lt;/span&gt;-&lt;wbr&gt;&lt;span class="il"&gt;data&lt;/span&gt;-streams/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://en.wikipedia.org/wiki/Extended_file_attributes" target="_blank"&gt;&lt;span class="Apple-style-span"&gt;http://en.wikipedia.org/wiki/&lt;wbr&gt;Extended_file_attributes&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://www.flexhex.com/docs/articles/alternate-streams.phtml" target="_blank"&gt;&lt;span class="Apple-style-span"&gt;http://www.flexhex.com/docs/&lt;wbr&gt;articles/&lt;span class="il"&gt;alternate&lt;/span&gt;-streams.&lt;wbr&gt;phtml&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;&lt;span&gt;How to use ADS -&lt;/span&gt;&lt;span style="color: rgb(31, 73, 125); "&gt; &lt;/span&gt;&lt;a href="http://support.microsoft.com/kb/105763" target="_blank"&gt;http://support.microsoft.com/&lt;wbr&gt;kb/105763&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-5480887736841399104?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5480887736841399104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5480887736841399104'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/06/alternate-data-streams-ads.html' title='Alternate Data Streams (ADS)'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-7449850192828116385</id><published>2011-05-26T20:18:00.000-07:00</published><updated>2011-05-26T20:29:12.565-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><category scheme='http://www.blogger.com/atom/ns#' term='C++ PROGRAMMING'/><title type='text'>Find Windows System Version(from Windows XP SP2 and above) using C++</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;b&gt;ref: &lt;/b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms724429(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms724429(v=vs.85).aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  &gt;#include "windows.h"&lt;br /&gt;#include "tchar.h"&lt;br /&gt;#include "stdio.h"&lt;br /&gt;#include "strsafe.h"&lt;br /&gt;&lt;br /&gt;#pragma comment(lib, "User32.lib")&lt;br /&gt;&lt;br /&gt;#define BUFSIZE 256&lt;br /&gt;&lt;br /&gt;typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);&lt;br /&gt;typedef BOOL (WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD);&lt;br /&gt;&lt;br /&gt;BOOL GetOSDisplayString( LPTSTR pszOS)&lt;br /&gt;{&lt;br /&gt;  OSVERSIONINFOEX osvi;&lt;br /&gt;  SYSTEM_INFO si;&lt;br /&gt;  PGNSI pGNSI;&lt;br /&gt;  PGPI pGPI;&lt;br /&gt;  BOOL bOsVersionInfoEx;&lt;br /&gt;  DWORD dwType;&lt;br /&gt;&lt;br /&gt;  ZeroMemory(&amp;amp;si, sizeof(SYSTEM_INFO));&lt;br /&gt;  ZeroMemory(&amp;amp;osvi, sizeof(OSVERSIONINFOEX));&lt;br /&gt;&lt;br /&gt;  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);&lt;br /&gt;  bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO*) &amp;amp;osvi);&lt;br /&gt;&lt;br /&gt;  if(bOsVersionInfoEx != NULL ) return 1;&lt;br /&gt;&lt;br /&gt;  // Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.&lt;br /&gt;&lt;br /&gt;  pGNSI = (PGNSI) GetProcAddress(&lt;br /&gt;     GetModuleHandle(TEXT("kernel32.dll")),&lt;br /&gt;     "GetNativeSystemInfo");&lt;br /&gt;  if(NULL != pGNSI)&lt;br /&gt;     pGNSI(&amp;amp;si);&lt;br /&gt;  else GetSystemInfo(&amp;amp;si);&lt;br /&gt;&lt;br /&gt;  if ( VER_PLATFORM_WIN32_NT==osvi.dwPlatformId &amp;amp;&amp;amp;&lt;br /&gt;       osvi.dwMajorVersion &amp;gt; 4 )&lt;br /&gt;  {&lt;br /&gt;     StringCchCopy(pszOS, BUFSIZE, TEXT("Microsoft "));&lt;br /&gt;&lt;br /&gt;     // Test for the specific product.&lt;br /&gt;&lt;br /&gt;     if ( osvi.dwMajorVersion == 6 )&lt;br /&gt;     {&lt;br /&gt;        if( osvi.dwMinorVersion == 0 )&lt;br /&gt;        {&lt;br /&gt;           if( osvi.wProductType == VER_NT_WORKSTATION )&lt;br /&gt;               StringCchCat(pszOS, BUFSIZE, TEXT("Windows Vista "));&lt;br /&gt;           else StringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2008 " ));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if ( osvi.dwMinorVersion == 1 )&lt;br /&gt;        {&lt;br /&gt;           if( osvi.wProductType == VER_NT_WORKSTATION )&lt;br /&gt;               StringCchCat(pszOS, BUFSIZE, TEXT("Windows 7 "));&lt;br /&gt;           else StringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2008 R2 " ));&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;        pGPI = (PGPI) GetProcAddress(&lt;br /&gt;           GetModuleHandle(TEXT("kernel32.dll")),&lt;br /&gt;           "GetProductInfo");&lt;br /&gt;&lt;br /&gt;        pGPI( osvi.dwMajorVersion, osvi.dwMinorVersion, 0, 0, &amp;amp;dwType);&lt;br /&gt;&lt;br /&gt;        switch( dwType )&lt;br /&gt;        {&lt;br /&gt;           case PRODUCT_ULTIMATE:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Ultimate Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_PROFESSIONAL:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Professional" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_HOME_PREMIUM:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Home Premium Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_HOME_BASIC:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Home Basic Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_ENTERPRISE:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_BUSINESS:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Business Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_STARTER:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Starter Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_CLUSTER_SERVER:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Cluster Server Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_DATACENTER_SERVER:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_DATACENTER_SERVER_CORE:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Edition (core installation)" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_ENTERPRISE_SERVER:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_ENTERPRISE_SERVER_CORE:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition (core installation)" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_ENTERPRISE_SERVER_IA64:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition for Itanium-based Systems" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_SMALLBUSINESS_SERVER:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Small Business Server" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Small Business Server Premium Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_STANDARD_SERVER:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Standard Edition" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_STANDARD_SERVER_CORE:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Standard Edition (core installation)" ));&lt;br /&gt;              break;&lt;br /&gt;           case PRODUCT_WEB_SERVER:&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT("Web Server Edition" ));&lt;br /&gt;              break;&lt;br /&gt;        }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if ( osvi.dwMajorVersion == 5 &amp;amp;&amp;amp; osvi.dwMinorVersion == 2 )&lt;br /&gt;     {&lt;br /&gt;        if( GetSystemMetrics(SM_SERVERR2) )&lt;br /&gt;           StringCchCat(pszOS, BUFSIZE, TEXT( "Windows Server 2003 R2, "));&lt;br /&gt;        else if ( osvi.wSuiteMask &amp;amp; VER_SUITE_STORAGE_SERVER )&lt;br /&gt;           StringCchCat(pszOS, BUFSIZE, TEXT( "Windows Storage Server 2003"));&lt;br /&gt;        else if ( osvi.wSuiteMask &amp;amp; VER_SUITE_WH_SERVER )&lt;br /&gt;           StringCchCat(pszOS, BUFSIZE, TEXT( "Windows Home Server"));&lt;br /&gt;        else if( osvi.wProductType == VER_NT_WORKSTATION &amp;amp;&amp;amp;&lt;br /&gt;                 si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)&lt;br /&gt;        {&lt;br /&gt;           StringCchCat(pszOS, BUFSIZE, TEXT( "Windows XP Professional x64 Edition"));&lt;br /&gt;        }&lt;br /&gt;        else StringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2003, "));&lt;br /&gt;&lt;br /&gt;        // Test for the server type.&lt;br /&gt;        if ( osvi.wProductType != VER_NT_WORKSTATION )&lt;br /&gt;        {&lt;br /&gt;           if ( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_IA64 )&lt;br /&gt;           {&lt;br /&gt;               if( osvi.wSuiteMask &amp;amp; VER_SUITE_DATACENTER )&lt;br /&gt;                  StringCchCat(pszOS, BUFSIZE, TEXT( "Datacenter Edition for Itanium-based Systems" ));&lt;br /&gt;               else if( osvi.wSuiteMask &amp;amp; VER_SUITE_ENTERPRISE )&lt;br /&gt;                  StringCchCat(pszOS, BUFSIZE, TEXT( "Enterprise Edition for Itanium-based Systems" ));&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           else if ( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 )&lt;br /&gt;           {&lt;br /&gt;               if( osvi.wSuiteMask &amp;amp; VER_SUITE_DATACENTER )&lt;br /&gt;                  StringCchCat(pszOS, BUFSIZE, TEXT( "Datacenter x64 Edition" ));&lt;br /&gt;               else if( osvi.wSuiteMask &amp;amp; VER_SUITE_ENTERPRISE )&lt;br /&gt;                  StringCchCat(pszOS, BUFSIZE, TEXT( "Enterprise x64 Edition" ));&lt;br /&gt;               else StringCchCat(pszOS, BUFSIZE, TEXT( "Standard x64 Edition" ));&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           else&lt;br /&gt;           {&lt;br /&gt;               if ( osvi.wSuiteMask &amp;amp; VER_SUITE_COMPUTE_SERVER )&lt;br /&gt;                  StringCchCat(pszOS, BUFSIZE, TEXT( "Compute Cluster Edition" ));&lt;br /&gt;               else if( osvi.wSuiteMask &amp;amp; VER_SUITE_DATACENTER )&lt;br /&gt;                  StringCchCat(pszOS, BUFSIZE, TEXT( "Datacenter Edition" ));&lt;br /&gt;               else if( osvi.wSuiteMask &amp;amp; VER_SUITE_ENTERPRISE )&lt;br /&gt;                  StringCchCat(pszOS, BUFSIZE, TEXT( "Enterprise Edition" ));&lt;br /&gt;               else if ( osvi.wSuiteMask &amp;amp; VER_SUITE_BLADE )&lt;br /&gt;                  StringCchCat(pszOS, BUFSIZE, TEXT( "Web Edition" ));&lt;br /&gt;               else StringCchCat(pszOS, BUFSIZE, TEXT( "Standard Edition" ));&lt;br /&gt;           }&lt;br /&gt;        }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if ( osvi.dwMajorVersion == 5 &amp;amp;&amp;amp; osvi.dwMinorVersion == 1 )&lt;br /&gt;     {&lt;br /&gt;        StringCchCat(pszOS, BUFSIZE, TEXT("Windows XP "));&lt;br /&gt;        if( osvi.wSuiteMask &amp;amp; VER_SUITE_PERSONAL )&lt;br /&gt;           StringCchCat(pszOS, BUFSIZE, TEXT( "Home Edition" ));&lt;br /&gt;        else StringCchCat(pszOS, BUFSIZE, TEXT( "Professional" ));&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if ( osvi.dwMajorVersion == 5 &amp;amp;&amp;amp; osvi.dwMinorVersion == 0 )&lt;br /&gt;     {&lt;br /&gt;        StringCchCat(pszOS, BUFSIZE, TEXT("Windows 2000 "));&lt;br /&gt;&lt;br /&gt;        if ( osvi.wProductType == VER_NT_WORKSTATION )&lt;br /&gt;        {&lt;br /&gt;           StringCchCat(pszOS, BUFSIZE, TEXT( "Professional" ));&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;           if( osvi.wSuiteMask &amp;amp; VER_SUITE_DATACENTER )&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT( "Datacenter Server" ));&lt;br /&gt;           else if( osvi.wSuiteMask &amp;amp; VER_SUITE_ENTERPRISE )&lt;br /&gt;              StringCchCat(pszOS, BUFSIZE, TEXT( "Advanced Server" ));&lt;br /&gt;           else StringCchCat(pszOS, BUFSIZE, TEXT( "Server" ));&lt;br /&gt;        }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;      // Include service pack (if any) and build number.&lt;br /&gt;&lt;br /&gt;     if( _tcslen(osvi.szCSDVersion) &amp;gt; 0 )&lt;br /&gt;     {&lt;br /&gt;         StringCchCat(pszOS, BUFSIZE, TEXT(" ") );&lt;br /&gt;         StringCchCat(pszOS, BUFSIZE, osvi.szCSDVersion);&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     TCHAR buf[80];&lt;br /&gt;&lt;br /&gt;     StringCchPrintf( buf, 80, TEXT(" (build %d)"), osvi.dwBuildNumber);&lt;br /&gt;     StringCchCat(pszOS, BUFSIZE, buf);&lt;br /&gt;&lt;br /&gt;     if ( osvi.dwMajorVersion &amp;gt;= 6 )&lt;br /&gt;     {&lt;br /&gt;        if ( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 )&lt;br /&gt;           StringCchCat(pszOS, BUFSIZE, TEXT( ", 64-bit" ));&lt;br /&gt;        else if (si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_INTEL )&lt;br /&gt;           StringCchCat(pszOS, BUFSIZE, TEXT(", 32-bit"));&lt;br /&gt;     }&lt;br /&gt;    &lt;br /&gt;     return TRUE;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  else&lt;br /&gt;  { &lt;br /&gt;     printf( "This sample does not support this version of Windows.\n");&lt;br /&gt;     return FALSE;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int __cdecl _tmain()&lt;br /&gt;{&lt;br /&gt;   TCHAR szOS[BUFSIZE];&lt;br /&gt;&lt;br /&gt;   if( GetOSDisplayString( szOS ) )&lt;br /&gt;       _tprintf( TEXT("\n%s\n"), szOS );&lt;br /&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-7449850192828116385?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/7449850192828116385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/7449850192828116385'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/05/find-windows-system-version-using-c.html' title='Find Windows System Version(from Windows XP SP2 and above) using C++'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-2380127535188189826</id><published>2011-05-24T18:18:00.000-07:00</published><updated>2011-06-19T00:04:15.274-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VIRTUALIZATION'/><title type='text'>VMware software products - ESXi,  vCenter, vMotion</title><content type='html'>&lt;span class="Apple-style-span"&gt;&lt;b&gt;ESX Server&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;VMware’s ESX server is at the highest end of features and price of all the VMware server applications. The ESX actually loads right on to “bare-metal” servers. Thus, there is no need to first load an underlying operating system prior to loading VMware ESX. What is unique about ESX is that it comes with its own modified Linux Kernel called VMKernel (based on Red Hat Enterprise Linux). ESX is now sold in a suite of products called VMware Infrastructure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;VMWare Server&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;VMware’s Server is a FREE VMware virtualization product built for use in production servers. Unlike ESX, VMware Server still uses the underlying host operating system. With VMware Server, you loose the some of the functionality and performance of the ESX server but don’t have as great of price tag (its free!)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Workstation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;VMware’s Workstation is for use on a client workstation. For example, say that I want to run both Windows 2003 server and Linux Fedora Core 5 on my desktop workstation, which is running Windows XP. VMware Workstation would be the program I would use to do this. This would allow me the flexibility to run these guest operating systems to test various applications and features. I could also create snapshots of them to capture their configuration at a certain point in time and easily duplicate them to create other virtual machines (such as moving them to a VMware Server).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;VirtualCenter&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Virtual Center provides a centralized management console for all VMware servers. If you plan to grow your farm of virtualized servers into the ten’s and hundreds, over time, you should have Virtual Center in your plans.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Vmotion&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Like magic, VMotion can move a running virtual server to another physical server, without interrupting that server’s requests. This can be done for maintenance of hardware or to better balance workload. VMotion requires a SAN be used for these virtual machines. Both Virtual Center and VMotion are part of the VMWare vManage offering.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;VMware Converter&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The VMware Converter is used to move physical machine operating systems to virtual machines. This tool automates the migration to virtual machines. Besides migrating, the Converter can be used to create images of physical systems for disaster recovery purposes. Currently in Beta, the VMware Converter will replace the P2V Assistant.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;u&gt;ref:&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;VMware software products - &lt;/span&gt;&lt;u&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_VMware_software"&gt;http://en.wikipedia.org/wiki/List_of_VMware_software&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;u&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_VMware_software"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;VMware product's comparision - &lt;a href="http://www.petri.co.il/virtual_vmware_versions_compared.htm"&gt;http://www.petri.co.il/virtual_vmware_versions_compared.htm&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;VMware APIs and SDK - &lt;a href="http://www.vmware.com/support/pubs/sdk_pubs.html"&gt;http://www.vmware.com/support/pubs/sdk_pubs.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;vShield Programming API - &lt;/span&gt;&lt;a href="http://www.vmware.com/pdf/vshield_41_api.pdf"&gt;http://www.vmware.com/pdf/vshield_41_api.pdf&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;vShield Endpoint Security - &lt;a href="http://www.vmware.com/products/vshield-endpoint/features.html"&gt;http://www.vmware.com/products/vshield-endpoint/features.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;VMware VI (vSphere) Java API - &lt;/span&gt;&lt;a href="http://sourceforge.net/projects/vijava/"&gt;http://sourceforge.net/projects/vijava/&lt;/a&gt; &amp;amp; &lt;a href="http://vijava.sourceforge.net/"&gt;http://vijava.sourceforge.net/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Java sample code using VI Java API - &lt;a href="http://humairahmed.com/blog/?p=1026"&gt;http://humairahmed.com/blog/?p=1026&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Automate VMware tasks using C# with VIX API - &lt;/span&gt;&lt;a href="http://www.codeproject.com/KB/library/VMWareTasks.aspx"&gt;http://www.codeproject.com/KB/library/VMWareTasks.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;Introduction to Virtualization - &lt;/span&gt;&lt;a href="http://www.kernelthread.com/publications/virtualization/"&gt;http://www.kernelthread.com/publications/virtualization/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Beyond VMware - &lt;a href="http://www.petri.co.il/virtual_virtualization_options_compared.htm"&gt;http://www.petri.co.il/virtual_virtualization_options_compared.htm&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-2380127535188189826?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2380127535188189826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2380127535188189826'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/05/vmware-software-products.html' title='VMware software products - ESXi,  vCenter, vMotion'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-7735025535879794370</id><published>2011-05-23T16:01:00.001-07:00</published><updated>2011-05-23T16:58:11.299-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOFTWARE DESIGN'/><category scheme='http://www.blogger.com/atom/ns#' term='C++ PROGRAMMING'/><title type='text'>Integrate with Intel AMT(Active Management Technology)</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#1F497D"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="font-size:10.0pt; font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt;&lt;a href="http://en.wikipedia.org/wiki/Intel" title="Intel"&gt;&lt;span style="color:#0645AD"&gt;Intel&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt;Active Management Technology&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt;(AMT) is hardware-based technology for remotely managing and securing PCs&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt;&lt;a href="http://en.wikipedia.org/wiki/Out-of-band" title="Out-of-band" style="background-attachment:initial;background-origin: initial; background-clip: initial;background-color:initial;background-position:initial initial; background-repeat:initial initial"&gt;&lt;span style="color:#0645AD"&gt;out-of-band&lt;/span&gt;&lt;/a&gt;.&lt;sup id="cite_ref-vPro-4-0.2B3-0WP_0-0"&gt; &lt;/sup&gt;Currently, Intel AMT is available in desktop PCs with&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt;&lt;a href="http://en.wikipedia.org/wiki/Intel_Core_2" title="Intel Core 2" style="background-attachment:initial;background-origin: initial; background-clip: initial;background-color:initial;background-position:initial initial; background-repeat:initial initial"&gt;&lt;span style="color:#0645AD"&gt;Intel Core 2&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt;processor with&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size: 10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt;&lt;a href="http://en.wikipedia.org/wiki/Intel_vPro" title="Intel vPro" style="background-attachment:initial;background-origin: initial; background-clip: initial;background-color:initial;background-position:initial initial; background-repeat:initial initial"&gt;&lt;span style="color:#0645AD"&gt;Intel vPro&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt;technology and available in laptop PCs with&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt;&lt;a href="http://en.wikipedia.org/wiki/Centrino" title="Centrino" style="background-attachment: initial;background-origin: initial;background-clip: initial;background-color: initial;background-position:initial initial;background-repeat:initial initial"&gt;&lt;span style="color:#0645AD"&gt;Centrino&lt;/span&gt;&lt;/a&gt;or&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt;&lt;a href="http://en.wikipedia.org/wiki/Centrino_2" title="Centrino 2" style="background-attachment:initial;background-origin: initial;background-clip: initial; background-color:initial;background-position:initial initial;background-repeat: initial initial"&gt;&lt;span style="color:#0645AD"&gt;Centrino 2&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt;platform with vPro &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size: 10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black;mso-themecolor:text1"&gt;technology.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt; font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black;mso-themecolor:text1"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt; font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt;Intel&lt;sup&gt;®&lt;/sup&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt;Active Management Technology (Intel&lt;sup&gt;®&lt;/sup&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black"&gt;AMT) is a capability embedded in Intel-based platforms that enhances the ability of IT organizations to manage enterprise computing facilities. Intel AMT operates independently of the platform processor and operating system.&lt;b&gt; Remote platform management applications can access Intel AMT securely, even when the platform is turned off, as long as the platform is connected to line power and to a network&lt;/b&gt;. Independent software vendors (ISVs) can build applications that take advantage of the features of Intel AMT using the application programming interface (API).&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black;mso-themecolor:text1"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;Intel AMT SDK latest version is v7.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;u&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:black; mso-themecolor:text1"&gt;ref:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;Wiki - &lt;/span&gt;&lt;span style="font-size:10.0pt; font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Intel_Active_Management_Technology"&gt;http://en.wikipedia.org/wiki/Intel_Active_Management_Technology&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#1F497D"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Intel AMT implementation &amp;amp; reference guide - &lt;a href="http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/default.htm"&gt;http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/default.htm&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#1F497D"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;Intel AMT integration Reference guide - &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://download.intel.com/support/motherboards/desktop/sb/amt_quick_start_guide1.pdf"&gt;http://download.intel.com/support/motherboards/desktop/sb/amt_quick_start_guide1.pdf&lt;/a&gt;&lt;span style="color:#1F497D"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;AMT Architecture Guide - &lt;a href="http://software.intel.com/en-us/articles/architecture-guide-intel-active-management-technology/"&gt;http://software.intel.com/en-us/articles/architecture-guide-intel-active-management-technology/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;AMT Serial Over Lan(SOL) - &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://software.intel.com/en-us/articles/using-intel-amt-serial-over-lan-to-the-fullest/"&gt;http://software.intel.com/en-us/articles/using-intel-amt-serial-over-lan-to-the-fullest/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;Intel AMT SCS 7.0 - &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://software.intel.com/en-us/blogs/2011/03/18/discover-the-new-intel-amt-scs-70/"&gt;http://software.intel.com/en-us/blogs/2011/03/18/discover-the-new-intel-amt-scs-70/&lt;/a&gt;&lt;span style="color:#1F497D"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;Intel® vPro™ Enabling Tools for Now and the Future (&lt;span class="apple-style-span"&gt;Intel® Manageability Checker v2.0) - &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://software.intel.com/en-us/blogs/2011/04/15/intel-vpro-enabling-tools-for-now-and-the-future/"&gt;http://software.intel.com/en-us/blogs/2011/04/15/intel-vpro-enabling-tools-for-now-and-the-future/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#1F497D"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;Intel Management forum - &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://software.intel.com/en-us/forums/manageability-software-development/"&gt;http://software.intel.com/en-us/forums/manageability-software-development/&lt;/a&gt;&lt;span style="color:#1F497D"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;Intel AMT posts/blog by Ajit Illendula -&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;color:#1F497D"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://software.intel.com/en-us/blogs/author/ajith-illendula/"&gt;http://software.intel.com/en-us/blogs/author/ajith-illendula/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:#1F497D"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;Web Services Management (WS-Man) Specification - &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://dmtf.org/standards/wsman"&gt;http://dmtf.org/standards/wsman&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(31, 73, 125); font-family: Arial, sans-serif; font-size: 13px; "&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; color:black;mso-themecolor:text1"&gt;Open WS-Man Specification - &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://openwsman.org/"&gt;http://openwsman.org/&lt;/a&gt;&lt;span style="color:#1F497D"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-7735025535879794370?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/7735025535879794370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/7735025535879794370'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/05/integrate-with-intel-amtactive_23.html' title='Integrate with Intel AMT(Active Management Technology)'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-1414133228768691145</id><published>2011-05-23T15:58:00.001-07:00</published><updated>2011-06-07T00:11:56.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOFTWARE DESIGN'/><category scheme='http://www.blogger.com/atom/ns#' term='C++ PROGRAMMING'/><title type='text'>Integrate with Windows Security Center(WSC)</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Windows XP SP2 and above support Windows Security Center (WSC) integration.  Windows XP SP2 &amp;amp; Windows Vista use WMI interface to communicate with WSC.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Beginning in Windows Vista Service Pack 1 (SP1), application developers must use a new application programming interface (API) to provide status updates to Windows Security Center for developing firewall, antivirus, and malicious software detection and removal applications that report status to Windows Security Center in Windows Vista. You need to make sure that you sign the binary that communicates with WSC &amp;amp; compile the binary with /integritycheck linker flag.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Windows Vista SP1 &amp;amp; above supports the &lt;b&gt;IWscAVStatus &lt;/b&gt;API for antivirus applications to register, unregister, and send status updates.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;u&gt;FAQ:&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;1. How to enable Security Center AntiVirus view on Windows XP SP2: Change Group Policy&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Answer:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;a. To enable it Security Center Properties , do the following on your Windows XP SP2 workstation:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;START -&amp;gt; RUN -&amp;gt; gpedit.msc&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;In Group Policy go to Computer Configuration -&amp;gt; Administrative Templates -&amp;gt; WINDOWS COMPONENTS (not System as documented) -&amp;gt; Security Center -&amp;gt; Properties -&amp;gt; Enable.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;b. Start ‘Security Center’(wscsvc) Service. &lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Wscsvc depends on ‘Windows Management Instrumentation’ (wimmgmt) service. It means when wscsvc is started successfully, we are sure that WMI service is running great.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Wscsvc service is hosted by svchost.exe ; svchost.exe loads wscsvc.dll (present in \windows\system32 folder)&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"&gt;Winmgmt service is hosted by svchost.exe ; svchost.exe loads WMIsvc.dll (present in \windows\system32\wbem folder)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-1414133228768691145?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/1414133228768691145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/1414133228768691145'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/05/integrate-with-windows-security.html' title='Integrate with Windows Security Center(WSC)'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-8126353073280267552</id><published>2011-04-30T21:07:00.001-07:00</published><updated>2011-04-30T21:07:50.777-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TEST AUTOMATION'/><title type='text'>JavaScript Engines</title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;JavaScript&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt; is an object-oriented scripting language used to enable programmatic access to objects within both the client application and other applications. It is primarily used in the form of client-side JavaScript, implemented as an integrated component of the web browser, allowing the development of enhanced user interfaces and dynamic websites.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;A &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;JavaScript engine&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt; (also known as JavaScript interpreter or JavaScript implementation) is an interpreter that interprets JavaScript source code and executes the script accordingly. The first JavaScript engine was created by Brendan Eich at Netscape Communications Corporation, for the Netscape Navigator web browser. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;There are now a ton of JavaScript engines on the market (even when you only look at the ones being actively used in browsers):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol start="1" type="1"&gt;  &lt;li class="MsoNormal" style="color:black;"&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;JavaScriptCore:      The engine that powers Safari/WebKit (up until Safari 3.1).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;"&gt;&lt;span&gt;&lt;a href="http://webkit.org/blog/189/announcing-squirrelfish/" target="_blank"&gt;&lt;span style="color: rgb(56, 92, 133);"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;SquirrelFish&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;: The engine used by Safari      4.0.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;Note:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;The latest WebKit nightly for      Windows crashes on Dromaeo, so it's passed for now.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;"&gt;&lt;span&gt;&lt;a href="http://code.google.com/p/v8/" target="_blank"&gt;&lt;span style="color: rgb(56, 92, 133);"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;V8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;:      The engine used by Google Chrome.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;"&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;SpiderMonkey:      The engine that powers Firefox (up &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;, and including, Firefox 3.0).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;"&gt;&lt;span&gt;&lt;a href="http://ejohn.org/blog/tracemonkey/" target="_blank"&gt;&lt;span style="color: rgb(56, 92, 133);"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;TraceMonkey&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;:      The engine that will power Firefox 3.1 and newer (currently in nightlies,      but disabled by default).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" &gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;Futhark:      The engine used in Opera 9.5 and newer.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" &gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;IE      JScript: The engine that powers Internet Explorer.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;ref:&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://ejohn.org/blog/javascript-performance-rundown/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;http://ejohn.org/&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;blog&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;/&lt;wbr&gt;javascript-performance-&lt;wbr&gt;rundown/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-8126353073280267552?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/8126353073280267552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/8126353073280267552'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/04/javascript-engines.html' title='JavaScript Engines'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-2565751362026283029</id><published>2011-04-30T21:05:00.001-07:00</published><updated>2011-04-30T21:06:43.587-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SERVICE ORIENTED ARCHITECTURE (SOA)'/><title type='text'>Service Oriented Architecture(SOA) Design Patterns</title><content type='html'>&lt;span class="Apple-style-span"&gt;&lt;span&gt;&lt;strong&gt;Service-oriented architecture (SOA)&lt;/strong&gt; is an evolution of distributed computing based on the request/reply design paradigm for synchronous and asynchronous applications. An application's business logic or individual functions are modularized and presented as services for consumer/client applications. What's key to these services is their loosely coupled nature; i.e., the service interface is independent of the implementation. Application developers or system integrators can build applications by composing one or more services without knowing the services' underlying implementations. For example, a service can be implemented either in .Net or J2EE, and the application consuming the service can be on a different platform or language.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why SOA?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The reality in IT enterprises is that infrastructure is heterogeneous across operating systems, applications, system software, and application infrastructure. Some existing applications are used to run current business processes, so starting from scratch to build new infrastructure isn't an option. Enterprises should quickly respond to business changes with agility; leverage existing investments in applications and application infrastructure to address newer business requirements; support new channels of interactions with customers, partners, and suppliers; and feature an architecture that supports organic business. SOA with its loosely coupled nature allows enterprises to plug in new services or upgrade existing services in a granular fashion to address the new business requirements, provides the option to make the services consumable across different channels, and exposes the existing enterprise and legacy applications as services, thereby safeguarding existing IT infrastructure investments.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Service-oriented architectures have the following key characteristics:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;span&gt;1. SOA services have self-describing interfaces in platform-independent XML documents. Web Services Description Language (&lt;/span&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-06-2005/jw-0613-soa.html#resources"&gt;&lt;span&gt;WSDL&lt;/span&gt;&lt;/a&gt;&lt;span&gt;) is the standard used to describe the services.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. SOA services communicate with messages formally defined via XML Schema (also called &lt;/span&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-06-2005/jw-0613-soa.html#resources"&gt;&lt;span&gt;XSD&lt;/span&gt;&lt;/a&gt;&lt;span&gt;). Communication among consumers and providers or services typically happens in heterogeneous environments, with little or no knowledge about the provider. Messages between services can be viewed as key business documents processed in an enterprise.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. SOA services are maintained in the enterprise by a registry that acts as a directory listing. Applications can look up the services in the registry and invoke the service. Universal Description, Definition, and Integration (&lt;/span&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-06-2005/jw-0613-soa.html#resources"&gt;&lt;span&gt;UDDI&lt;/span&gt;&lt;/a&gt;&lt;span&gt;) is the standard used for service registry.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Each SOA service has a quality of service (QoS) associated with it. Some of the key QoS elements are security requirements, such as authentication and authorization, reliable messaging, and policies regarding who can invoke services.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;ref:&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;&lt;u&gt;SOA Introduction&lt;br /&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;What is SOA - &lt;/span&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-06-2005/jw-0613-soa.html"&gt;&lt;span&gt;http://www.javaworld.com/javaworld/jw-06-2005/jw-0613-soa.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SOA Overview - &lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1330269,00.html?offer=briefcase"&gt;&lt;span&gt;http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1330269,00.html?offer=briefcase&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SOA LifeCycle - &lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/guide/allInOne/0,296293,sid26_gci1262598,00.html?offer=briefcase"&gt;&lt;span&gt;http://searchsoa.techtarget.com/guide/allInOne/0,296293,sid26_gci1262598,00.html?offer=briefcase&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Principles of Service-Orientation -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1172714,00.html?offer=briefcase"&gt;&lt;span&gt;http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1172714,00.html?offer=briefcase&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;End-to-end testing for SOA and enterprise transactions -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1357238_mem1,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1357238_mem1,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;&lt;u&gt;SOA patterns&lt;br /&gt;&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SOA Patterns - &lt;/span&gt;&lt;a href="http://www.soapatterns.org/"&gt;&lt;span&gt;http://www.soapatterns.org/&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SOA Design Patterns by Thomas Erl - &lt;/span&gt;&lt;a href="http://www.soapatterns.com/"&gt;&lt;span&gt;http://www.soapatterns.com/&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SOA Design Patterns (by Arnon Rotem-Gal-Oz) -&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.rgoarchitects.com/Files/SoaPatterns.pdf"&gt;&lt;span&gt;http://www.rgoarchitects.com/Files/SoaPatterns.pdf&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.rgoarchitects.com/Files/SoaPatterns2.pdf"&gt;&lt;span&gt;http://www.rgoarchitects.com/Files/SoaPatterns2.pdf&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Best of Udi Dahan's Articles -&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.udidahan.com/first-time-here/"&gt;&lt;span&gt;http://www.udidahan.com/first-time-here/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;SOA Patterns: Implementing an SOA Using an Enterprise Service Bus(IBM Redbook) -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.redbooks.ibm.com/redbooks/pdfs/sg246346.pdf"&gt;&lt;span&gt;http://www.redbooks.ibm.com/redbooks/pdfs/sg246346.pdf&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Patterns: SOA with an Enterprise Service Bus in WebSphere Application Server V6 - &lt;/span&gt;&lt;a href="http://www.redbooks.ibm.com/redbooks/pdfs/sg246494.pdf"&gt;&lt;span&gt;http://www.redbooks.ibm.com/redbooks/pdfs/sg246494.pdf&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SOA Anti-Patterns - &lt;/span&gt;&lt;a href="http://www.infoq.com/articles/SOA-anti-patterns"&gt;&lt;span&gt;http://www.infoq.com/articles/SOA-anti-patterns&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Service Facade -&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1346145_mem1,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1346145_mem1,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Non-Agnostic Context -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1347582_mem1,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1347582_mem1,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Domain Inventory -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1349152_mem1,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1349152_mem1,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Service Normalization -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1350514,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1350514,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Service Decomposition -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1352917_mem1,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1352917_mem1,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Miscellaneous &lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How SAML fits into your SOA security scheme -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1337854_mem1,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1337854_mem1,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tips for tracing enterprise transactions -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1357445_mem1,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1357445_mem1,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enterprise Architecture in the Agile age - Part 1, Styles of EA -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1357017_mem1,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1357017_mem1,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SOA management vs SOA governance&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1335764,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1335764,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Business Process Execution Language (BPEL) Tutorial -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1330911,00.html"&gt;&lt;span&gt;http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1330911,00.html&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-2565751362026283029?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2565751362026283029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2565751362026283029'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/04/service-oriented-architecturesoa-design.html' title='Service Oriented Architecture(SOA) Design Patterns'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-59021125100625828</id><published>2011-01-28T17:55:00.000-08:00</published><updated>2012-02-08T22:06:35.073-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VIRTUALIZATION'/><title type='text'>Virtual Desktop Infrastructure (VDI)</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  &gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_gVC6MBcCa7g/TUN0IG0e3NI/AAAAAAAACYo/N65jmCTAnFs/s1600/virt.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;span class="Apple-style-span"  &gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 226px;" src="http://4.bp.blogspot.com/_gVC6MBcCa7g/TUN0IG0e3NI/AAAAAAAACYo/N65jmCTAnFs/s400/virt.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5567421246978579666" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  &gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;Desktop virtualization is the act of decoupling the different computing layers and storing some or all of them in a data center. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;Virtual desktop infrastructure (VDI) is the practice of hosting a desktop operating system within a virtual machine (&lt;a href="http://whatis.techtarget.com/definition/0,289893,sid9_gci213316,00.html" style="background-image:initial;background-attachment:initial;background-origin: initial; background-clip: initial;border-style:initial;border-color:initial;outline-width: 0px; outline-style: initial;outline-color: initial;border-style:initial;border-color: initial;background-position:initial initial;background-repeat:initial initial"&gt;&lt;span style="border:none windowtext 1.0pt;mso-border-alt:none windowtext 0in; padding:0in"&gt;VM&lt;/span&gt;&lt;/a&gt;) running on a centralized server. VDI is a variation on the&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;&lt;a href="http://whatis.techtarget.com/definition/0,289893,sid9_gci211796,00.html" style="background-image:initial;background-attachment:initial;background-origin: initial; background-clip: initial;border-style:initial;border-color:initial;outline-width: 0px; outline-style: initial;outline-color: initial;border-style:initial;border-color: initial;background-position:initial initial;background-repeat:initial initial"&gt;&lt;span style="border:none windowtext 1.0pt;mso-border-alt:none windowtext 0in; padding:0in"&gt;client/server&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; color: black; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; color: black; "&gt;computing model, sometimes referred to as server-based computing (SBC).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span class="Apple-style-span"  &gt;Let’s look at VDI from a high level and compare it to more traditional server-based computing models.&lt;/span&gt;&lt;/p&gt;  &lt;p align="center" style="text-align:center"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "  &gt;&lt;a href="http://4.bp.blogspot.com/_gVC6MBcCa7g/TUN0ijjgiQI/AAAAAAAACYw/7bsQnTbyq7A/s1600/virt2.gif"&gt;&lt;img src="http://4.bp.blogspot.com/_gVC6MBcCa7g/TUN0ijjgiQI/AAAAAAAACYw/7bsQnTbyq7A/s400/virt2.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5567421701368613122" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 162px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;The image on the right shows a traditional SBC model. The users all have access to a desktop GUI via an individual session on the terminal server. This server has a single OS installed; an instance of Terminal Services to provide the sessions and session management, and a set of applications that can be used by all the users on the server.&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;&lt;span  &gt;In the VDI model on the left, a single server is used again, but a hardware virtualization layer is added to this server in place of a more traditional OS like Windows Server. The Virtualization layer provides numerous Virtual Machines that are each supplied with an operating system, applications, and a unique GUI / desktop environment for each user.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span  &gt;As you can tell by the image, a VDI solution provides the same basic functionality of a traditional SBC solution. This functionality is (primarily) to provide a centralized desktop via a protocol like RDP or ICA. Besides the Virtualization layer and numerous OSes, the two solutions look almost identical. (The key word is ’almost’.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span  &gt;With VDI you gain a couple of benefits that you cannot achieve in a SBC environment, including things like:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span  &gt;The ability to provide a unique environment for each      and every user.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span  &gt;Each of these environments can be completely customized      with different apps and settings without impacting other users.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span  &gt;Users can be granted more control of their own      “virtual” desktop to allow them to install and modify applications if      needed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span  &gt;Applications that were not multi-user friendly (i.e.      “we can’t get this to run on Citrix”) can be run in this environment since      each instance is just like installing the app on a new desktop.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"  &gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"  &gt;&lt;b&gt;&lt;u&gt;&lt;b&gt;&lt;u&gt;&lt;span style="color: black; "&gt;ref:&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style="color: black; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span class="Apple-style-span"  &gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span style="color: black; "&gt;Virtualization Wiki - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Virtualization"&gt;http://en.wikipedia.org/wiki/Virtualization&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span class="Apple-style-span"  &gt;&lt;span class="Apple-style-span"&gt;Introduction to Virtualization - &lt;/span&gt;&lt;a href="http://www.kernelthread.com/publications/virtualization/"&gt;http://www.kernelthread.com/publications/virtualization/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span  &gt;&lt;span style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;Virtualization Best Practises -  &lt;/span&gt;&lt;a href="http://support.ca.com/phpdocs/0/common/impcd/r11/virtualization/doc/virtualization_best_practices.pdf" target="_blank" style="color: rgb(17, 85, 204); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;http://support.ca.com/phpdocs/&lt;wbr&gt;0/common/impcd/r11/&lt;wbr&gt;virtualization/doc/&lt;wbr&gt;virtualization_best_practices.&lt;wbr&gt;pdf&lt;/a&gt;&lt;span style="color: rgb(34, 34, 34); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt; , &lt;/span&gt;&lt;a href="http://support.ca.com/phpdocs/0/common/impcd/r11/virtualization/virt_main.htm" target="_blank" style="color: rgb(17, 85, 204); text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969); "&gt;http://support.ca.com/phpdocs/&lt;wbr&gt;0/common/impcd/r11/&lt;wbr&gt;virtualization/virt_main.htm&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  &gt;  &lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;Virtualization: Fueling Green Data Centers - &lt;a href="http://msdn.microsoft.com/en-us/library/dd347164.aspx"&gt;&lt;span style="color:blue"&gt;http://msdn.microsoft.com/en-us/library/dd347164.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; vertical-align: baseline; "&gt;&lt;span class="Apple-style-span"  &gt;&lt;span style="color: black; line-height: 11.25pt; "&gt;Microsoft Virtualization Portal - &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 15px; "&gt;&lt;a href="http://www.microsoft.com/virtualization/en/us/default.aspx"&gt;&lt;span style="color:blue"&gt;http://www.microsoft.com/virtualization/en/us/default.aspx&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="line-height: 18px; "&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;Virtualization White Papers - &lt;a href="http://www.microsoft.com/virtualization/en/us/resources.aspx"&gt;&lt;span style="color:blue"&gt;http://www.microsoft.com/virtualization/en/us/resources.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;Virtualization information on Microsoft Technet - &lt;a href="http://technet.microsoft.com/en-us/virtualization/default.aspx"&gt;&lt;span style="color:blue"&gt;http://technet.microsoft.com/en-us/virtualization/default.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;Virtualization Case Studies - &lt;a href="http://www.microsoft.com/virtualization/en/us/case-studies-featured.aspx"&gt;&lt;span style="color:blue"&gt;http://www.microsoft.com/virtualization/en/us/case-studies-featured.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;Microsoft Virtualization learning portal - &lt;a href="http://www.microsoft.com/learning/en/us/training/virtualization.aspx"&gt;&lt;span style="color:blue"&gt;http://www.microsoft.com/learning/en/us/training/virtualization.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;Virtualization implementations and optimization guide - &lt;a href="http://searchservervirtualization.techtarget.com/tutorial/Virtualization-implementations-and-optimization-guide"&gt;&lt;span style="color:blue"&gt;http://searchservervirtualization.techtarget.com/tutorial/Virtualization-implementations-and-optimization-guide&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 1.5pt; line-height: 11.25pt; vertical-align: baseline; "&gt;&lt;span style="color: black; "  &gt;VMWorld 2010 Presentations - &lt;a href="http://www.vmworld.com/community/conferences/2010/knowledge-experts"&gt;&lt;span style="color:blue"&gt;http://www.vmworld.com/community/conferences/2010/knowledge-experts&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  &gt;&lt;span&gt;The Xen™ virtual machine monitor -&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51); "&gt; &lt;/span&gt;&lt;span style="color: black; "&gt;&lt;a href="http://www.cl.cam.ac.uk/research/srg/netos/xen/"&gt;&lt;span style="color:blue"&gt;http://www.cl.cam.ac.uk/research/srg/netos/xen/&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="line-height: normal; "&gt;&lt;span style="color: black; "&gt;&lt;span class="Apple-style-span"  &gt;Xen Hypervisor 4.0.1 Source code - &lt;a href="http://www.xen.org/products/xen_source.html"&gt;&lt;span style="color: blue; "&gt;http://www.xen.org/products/xen_source.html&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;b style="text-decoration: underline; font-size: 10pt; font-family: Verdana, sans-serif; "&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-59021125100625828?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/59021125100625828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/59021125100625828'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2011/01/desktop-virtualization-is-act-of.html' title='Virtual Desktop Infrastructure (VDI)'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gVC6MBcCa7g/TUN0IG0e3NI/AAAAAAAACYo/N65jmCTAnFs/s72-c/virt.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-687079159991244761</id><published>2010-12-31T20:39:00.000-08:00</published><updated>2010-12-31T20:40:05.204-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOFTWARE DESIGN'/><title type='text'>4+1 Architecture</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_8I_rvyCm0l4/SY_boGsQH3I/AAAAAAAAAro/6GfWgv7T2PA/s1600-h/6.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5300696768475832178" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 169px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_8I_rvyCm0l4/SY_boGsQH3I/AAAAAAAAAro/6GfWgv7T2PA/s320/6.jpg" border="0" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;The "4+1" View Model of Software Architecture&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;It is a model for describing the architecture of software-intensive systems, based on the use of multiple, concurrent views. This use of multiple views allows to address separately the concerns of the various 'stakeholders' of the architecture: end-user, developers, systems engineers, project managers, etc., and to handle separately the functional and non functional requirements.&lt;br /&gt;&lt;br /&gt;Software architecture deals with abstraction, with decomposition and composition, with style and esthetics. To describe software architecture, we use a model composed of multiple views or perspectives. In order to eventually address large and challenging architectures, the model proposed is made up of five main views.&lt;br /&gt;&lt;br /&gt;• The logical view, which is the object model of the design (when an object-oriented design method is used),&lt;br /&gt;&lt;br /&gt;• The process view, which captures the concurrency and synchronization aspects of the design,&lt;br /&gt;&lt;br /&gt;• The physical view, which describes the mapping(s) of the software onto the hardware and reflects its distributed aspect,&lt;br /&gt;&lt;br /&gt;• The development view, which describes the static organization of the software in its development environment.&lt;br /&gt;&lt;br /&gt;The description of an architecture which is nothing but the decisions made can be organized around these four views, and then illustrated by a few selected use cases, or scenarios which become a fifth view. The architecture is in fact partially evolved from these scenarios.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;ref:&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Introducing the 4+1 view model - &lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;a href="http://www.ibm.com/developerworks/wireless/library/wi-arch11/"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.ibm.com/developerworks/wireless/library/wi-arch11/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Architectural Blueprints—The “4+1” View Model of Software Architecture - &lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;a href="http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;a href="http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;"The 4+1 Vew Model of Architecture" by PHILIPPE B . KRUCHTEN - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.ics.uci.edu/~andre/ics223w2006/kruchten3.pdf"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.ics.uci.edu/~andre/ics223w2006/kruchten3.pdf&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Understanding Software Architecture - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.ug.it.usyd.edu.au/~iango/home/ESA-Chapter-1.pdf"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.ug.it.usyd.edu.au/~iango/home/ESA-Chapter-1.pdf&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-687079159991244761?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/687079159991244761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/687079159991244761'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/12/41-architecture.html' title='4+1 Architecture'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8I_rvyCm0l4/SY_boGsQH3I/AAAAAAAAAro/6GfWgv7T2PA/s72-c/6.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-6918647542994857599</id><published>2010-12-31T20:37:00.000-08:00</published><updated>2010-12-31T20:38:09.490-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOFTWARE SECURITY'/><title type='text'>ShellCode</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;In computer security, a &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;shellcode&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt; is a small piece of code used as the &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;payload &lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;in the exploitation of a software vulnerability. It is called "&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;shellcode&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;" because it typically starts a command shell from which the attacker can control the compromised machine. Shellcode is commonly written in machine code, but any piece of code that performs a similar task can be called shellcode. Because the function of a payload is not limited to merely spawning a shell, some have suggested that the name shellcode is insufficient.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;The &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;payload &lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;is the actual data, or the cargo, carried by the headers. When referring to a computer exploit, the payload is the effect caused by a virus or other malicious code executed by the exploit on the target computer. The payload of a virus may include moving, altering, overwriting, and deleting files, or other destructive activity.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style=" line-height: normal; "&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;ref:&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Shellcode - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Shellcode"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://en.wikipedia.org/wiki/Shellcode&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Shellcode Tutorial - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://projectshellcode.com/?q=node/20"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://projectshellcode.com/?q=node/20&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Windows Shellcode CodeProject - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.codeproject.com/Tips/60571/simple-windows-shellcode-invoke-message-box.aspx"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.codeproject.com/Tips/60571/simple-windows-shellcode-invoke-message-box.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Understanding Windows Shellcode - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.hick.org/code/skape/papers/win32-shellcode.pdf"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.hick.org/code/skape/papers/win32-shellcode.pdf&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Windows Syscall Shellcode - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.symantec.com/connect/articles/windows-syscall-shellcode"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.symantec.com/connect/articles/windows-syscall-shellcode&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Windows Shellcode Mastery - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.blackhat.com/presentations/bh-europe-09/Caillat/BlackHat-Europe-09-Caillat-Wishmaster-slides.pdf"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.blackhat.com/presentations/bh-europe-09/Caillat/BlackHat-Europe-09-Caillat-Wishmaster-slides.pdf&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Shellcode Programming - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.l0t3k.org/programming/docs/shellcode/"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.l0t3k.org/programming/docs/shellcode/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Shellcoding for Linux and Windows - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.vividmachines.com/shellcode/shellcode.html"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.vividmachines.com/shellcode/shellcode.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Writing Shellcode - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.safemode.org/files/zillion/shellcode/doc/Writing_shellcode.html"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.safemode.org/files/zillion/shellcode/doc/Writing_shellcode.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Linux Shellcode - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.tenouk.com/Bufferoverflowc/Bufferoverflow5.html"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.tenouk.com/Bufferoverflowc/Bufferoverflow5.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Designing Shellcode demystified - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.enderunix.org/docs/en/sc-en.txt"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://www.enderunix.org/docs/en/sc-en.txt&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Network level polymorphic Shellcode detection - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://dcs.ics.forth.gr/Activities/papers/emulation.dimva06.pdf"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://dcs.ics.forth.gr/Activities/papers/emulation.dimva06.pdf&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;Shellcode detection Library(x86 Shellcode detection and emulation (libEmu)) - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://libemu.carnivore.it/"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;http://libemu.carnivore.it/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-6918647542994857599?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/6918647542994857599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/6918647542994857599'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/12/shellcode.html' title='ShellCode'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-7930756872383750687</id><published>2010-11-29T17:55:00.000-08:00</published><updated>2010-11-29T18:02:02.772-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><title type='text'>Stack unwinding</title><content type='html'>&lt;div&gt;&lt;div style="color: black; background-color: rgb(255, 255, 255); "&gt;&lt;h2 style="font-style: normal; margin-bottom: 0em; padding-bottom: 0em; "&gt;&lt;span class="Apple-style-span" style="font-family: verdana; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;When an exception is thrown and control passes from a try block &lt;/span&gt;&lt;/span&gt;&lt;span class="il" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;to&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;  a handler, the C++ run time calls destructors for all automatic objects  constructed since the beginning of the try block. This process is  called &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;stack unwinding&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;.&lt;a name="12c516d4c71c464b_idx1363"&gt;&lt;/a&gt; The  automatic objects are destroyed in reverse order of their construction.  (Automatic objects are local objects that have been declared &lt;/span&gt;&lt;/span&gt;&lt;tt style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;auto&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; or &lt;/span&gt;&lt;/span&gt;&lt;tt style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;register&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;, or not declared &lt;/span&gt;&lt;/span&gt;&lt;tt style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;static&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; or &lt;/span&gt;&lt;/span&gt;&lt;tt style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;extern&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;. An automatic object &lt;/span&gt;&lt;/span&gt;&lt;tt style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;x&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; is deleted whenever the program exits the block in which &lt;/span&gt;&lt;/span&gt;&lt;tt style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;x&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; is declared.)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;If an exception is thrown during construction of an object consisting  of subobjects or array elements, destructors are only called for those  subobjects or array elements successfully constructed before the  exception was thrown. A destructor for a local static object will only  be called if the object was successfully constructed.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;If during stack unwinding a destructor throws an exception and that exception is not handled, the &lt;tt&gt;terminate()&lt;/tt&gt; function is called. The following example demonstrates this:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre style="margin-left: 30px; margin-right: 30px; background-color: rgb(218, 218, 218); padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; "&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;#include &lt;iostream&gt; using namespace std;  struct E {   const char* message;   E(const char* arg) : message(arg) { } };  void my_terminate() {   cout &lt;&lt; "Call &lt;span class="il"&gt;to&lt;/span&gt; my_terminate" &lt;&lt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;The following is the output of the above example:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style="margin-left: 30px; margin-right: 30px; background-color: rgb(218, 218, 218); padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; "&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;In try block In constructor of A In constructor of B In destructor of B In destructor of A Call &lt;span class="il"&gt;to&lt;/span&gt; my_terminate&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;In the try block, two automatic objects are created: &lt;tt&gt;a&lt;/tt&gt; and &lt;tt&gt;b&lt;/tt&gt;. The try block throws an exception of type &lt;tt&gt;const char*&lt;/tt&gt;. The handler &lt;tt&gt;catch (const char* e)&lt;/tt&gt; catches this exception. The C++ run time unwinds the stack, calling the destructors for &lt;tt&gt;a&lt;/tt&gt; and &lt;tt&gt;b&lt;/tt&gt; in reverse order of their construction. The destructor for &lt;tt&gt;a&lt;/tt&gt; throws an exception. Since there is no handler in the program that can handle this exception, the C++ run time calls &lt;tt&gt;terminate()&lt;/tt&gt;. (The function &lt;tt&gt;terminate()&lt;/tt&gt; calls the function specified as the argument &lt;span class="il"&gt;to&lt;/span&gt; &lt;tt&gt;set_terminate()&lt;/tt&gt;. In this example, &lt;tt&gt;terminate()&lt;/tt&gt; has been specified &lt;span class="il"&gt;to&lt;/span&gt; call &lt;tt&gt;my_terminate()&lt;/tt&gt;.)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" &gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;ref:&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" &gt;&lt;a href="http://en.wikipedia.org/wiki/Call_stack"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;http://en.wikipedia.org/wiki/Call_stack&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" &gt;&lt;a href="http://www.devx.com/tips/Tip/5687"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;http://www.devx.com/tips/Tip/5687&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://c2.com/cgi/wiki?UnwindingTheStack"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;http://c2.com/cgi/wiki?UnwindingTheStack&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-7930756872383750687?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/7930756872383750687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/7930756872383750687'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/11/stack-unwinding.html' title='Stack unwinding'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-5494577606625523966</id><published>2010-09-25T17:11:00.000-07:00</published><updated>2010-09-25T17:17:58.104-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><title type='text'>Detecting the Remote Desktop Services(RDP) Environment</title><content type='html'>&lt;span style="font-family: 'Segoe UI',Verdana,Arial; font-size: 13px;"&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Detect Remote Desktop Services(RDP)&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;To&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; optimize performance, it is good practice for applications &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;  detect whether they are running in a Remote Desktop Services client  session. For example, when an application is running on a remote  session, it should eliminate unnecessary graphic effects, as described  in &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa380822" style="color: rgb(19, 100, 196); text-decoration: none;" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Graphic Effects&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;. If the user is running the application in a local environment, it is not as critical for the application &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; optimize its behavior.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;The following example shows a function that returns TRUE if the  application is running in a remote session and FALSE if the application  is running on the console.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;sample code:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;#include windows.h&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;#pragma comment(lib, "user32.lib")&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;BOOL IsRemoteSession(void)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;   return GetSystemMetrics( SM_REMOTESESSION );&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;ref:&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa380798" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://msdn.microsoft.com/en-&lt;wbr&gt;us/library/aa380798&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa380798" target="_blank"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;code to detect if an application is running under terminal server - &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://stackoverflow.com/questions/295415/how-do-i-tell-if-my-application-is-running-in-an-rdp-session"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://stackoverflow.com/questions/295415/how-do-i-tell-if-my-application-is-running-in-an-rdp-session&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;How to test the reachability of a VPN-Connection? - &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.codeproject.com/KB/IP/SimpleLineTester.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://www.codeproject.com/KB/IP/SimpleLineTester.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-5494577606625523966?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5494577606625523966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5494577606625523966'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/09/detecting-remote-desktop-servicesrdp.html' title='Detecting the Remote Desktop Services(RDP) Environment'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-8908244999394061527</id><published>2010-09-25T17:04:00.001-07:00</published><updated>2010-09-25T19:15:03.384-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><title type='text'>Detect Internet Connection</title><content type='html'>&lt;span style="font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Actually, there is no single function for determining if a machine is  connected &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; the Internet, and it is impossible &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; reliably determine what  is happening without side effects - such as automatic network connections  taking place. What you can do is reliably detect when there definitely  isn't an Internet Link: in the absence of any dial up or LAN connection the  system is definitely off line.   &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Some techniques include:&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;1. IsNetworkAlive() If you are targeting system with IE5 or later, this is the best API call  yet it even listens for traffic on a LAN. There is a secondary function  IsDestinationReachable() which tries &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; resolve the hostname and ping it.  This does not work through firewalls, and overestimates speed as the max  the LAN card can support, rather than the actual point &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; point bandwidth.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;2. RasEnumConnections() A reliable technique for modems and direct dial up networking, but not for  situations where Internet access is via a LAN. You should dynamically load  "RasEnumConnectionA" from "RASAPI32.DLL", as LAN installations of Windows  may not include the library.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;3. InternetGetConnectedState() This Wininet /IE4 function call can distinguish between modem and LAN, but  can't handle complex LAN+autodial router situations. It is "offline state  aware". Important: handling of the offline flage changed for IE5 -it  returns TRUE for connected'  even when off line, but signals the flags in  the LPDWORD parameter.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;4. InternetCheckConnection() A Winnet/IE4 function call. This is meant &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; determine if a URL is  reachable- in practice it is pretty unreliable and best voided.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;5. NT SP4, NT5: The IP helper API can tell you which network interface &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;  use &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; connect &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; a supplied IP address, and what the bandwidth and current  status of that link is  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;6. Using the Offline flag which is part of IE4 &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; allow users &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; manually  control the online/offline state of applications. This flag is stored in  the registry and can be manipulated via some funcions calls  These calls mostly determine the presence or absence of network connections  -not Internet access, so can't handle a home network sharing a dial up  connection, or two laptops connected directly &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; each other.   The global offline state flag of IE4 (and hence win98, NT5) and the call &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;  test it - InternetGetConnectedState()- look the best long term options, but  will take time &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; become universal. The IP Helper APIs even let you find  out how much traffic is going over a link, but only detect the 'loopback'  interface on Windows 98, so is not a lot of use. Wouldn't a  'GetSpeedToHost() function call be great?   &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Finally, whatever technique you use, when it's time &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; talk &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; a remote  site, always &lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;add&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; timeouts or a cancel button. Even a quick functions like  gethostbyname() can lock up an app if something in the network chain is  broken.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap;"&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;ref:&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; "&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;How to test the reachability of a VPN-Connection? - &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: normal; line-height: 16px; "&gt;&lt;a href="http://www.codeproject.com/KB/IP/SimpleLineTester.aspx" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://www.codeproject.com/KB/&lt;wbr&gt;IP/SimpleLineTester.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="word-wrap: break-word; "&gt;&lt;span class="Apple-style-span" style="white-space: normal; line-height: 16px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-8908244999394061527?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/8908244999394061527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/8908244999394061527'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/09/detect-internet-connection.html' title='Detect Internet Connection'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-8566104940615752733</id><published>2010-09-25T16:57:00.001-07:00</published><updated>2010-09-25T17:03:51.869-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><title type='text'>Get UserName from SessionId</title><content type='html'>&lt;windows.h&gt;&lt;vector&gt;&lt;string&gt;&lt;wtsapi32.h&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;#include windows.h&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;#include vector&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;#include string&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;#include wtsapi32.h&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;#pragma comment(lib, "WtsApi32.lib")&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;//&lt;br /&gt;typedef std::basic_string tstring;&lt;br /&gt;&lt;br /&gt;// Get current sessions&lt;br /&gt;bool EnumSessionIds(std::vector&amp;amp; list)&lt;br /&gt;{&lt;br /&gt;list.clear();&lt;br /&gt;&lt;br /&gt;WTS_SESSION_INFO *pSI = NULL;&lt;br /&gt;DWORD dwSICount;&lt;br /&gt;&lt;br /&gt;BOOL bRes = WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, &amp;amp;pSI, &amp;amp;dwSICount);&lt;br /&gt;if (bRes == 0)&lt;br /&gt;return false;&lt;br /&gt;&lt;br /&gt;for (unsigned int i = 0; i &lt; pbuffer =" NULL;" bres =" WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE," bres ="=" username =" pBuffer;" pbuffer =" NULL;" bres =" WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE," bres ="=" domain =" pBuffer;"&gt; sessionIds;&lt;br /&gt;bool bRes = EnumSessionIds(sessionIds);&lt;br /&gt;if (!bRes)&lt;br /&gt;{&lt;br /&gt;// error&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// enum sessions&lt;br /&gt;std::vector::iterator iter;&lt;br /&gt;for (iter = sessionIds.begin(); iter != sessionIds.end(); iter++)&lt;br /&gt;{&lt;br /&gt;// print session domain&lt;br /&gt;tstring domain;&lt;br /&gt;GetSessionDomain(*iter, domain);&lt;br /&gt;_tprintf(_T("Session Domain = %s\n"), domain.c_str());&lt;br /&gt;&lt;br /&gt;// print session username&lt;br /&gt;tstring username;&lt;br /&gt;GetSessionUserName(*iter, username);&lt;br /&gt;_tprintf(_T("Session UserName = %s\n"), username.c_str());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/wtsapi32.h&gt;&lt;/string&gt;&lt;/vector&gt;&lt;/windows.h&gt;&lt;div&gt;&lt;windows.h&gt;&lt;vector&gt;&lt;string&gt;&lt;wtsapi32.h&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/wtsapi32.h&gt;&lt;/string&gt;&lt;/vector&gt;&lt;/windows.h&gt;&lt;/div&gt;&lt;div&gt;&lt;windows.h&gt;&lt;vector&gt;&lt;string&gt;&lt;wtsapi32.h&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;ref:&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/wtsapi32.h&gt;&lt;/string&gt;&lt;/vector&gt;&lt;/windows.h&gt;&lt;/div&gt;&lt;div&gt;&lt;windows.h&gt;&lt;vector&gt;&lt;string&gt;&lt;wtsapi32.h&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;Windows-based application over Terminal Services using WtsAPI32 - &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.codeproject.com/KB/winsdk/LiviuBirjegaCode3.aspx"&gt;&lt;span class="Apple-style-span" &gt;http://www.codeproject.com/KB/winsdk/LiviuBirjegaCode3.aspx&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/wtsapi32.h&gt;&lt;/string&gt;&lt;/vector&gt;&lt;/windows.h&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-8566104940615752733?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/8566104940615752733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/8566104940615752733'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/09/get-username-from-sessionid.html' title='Get UserName from SessionId'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-4772824850602970257</id><published>2010-09-25T16:37:00.000-07:00</published><updated>2010-09-25T16:54:40.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WEB PROGRAMMING'/><title type='text'>REST vs SOAP</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; color: rgb(51, 51, 51); font-size: 13px; line-height: 16px; "&gt;&lt;div id="id0070002" class="ArticleTypeTitle" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: bold; font-style: normal; margin-top: 3px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; font-variant: normal; text-transform: none; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; line-height: 18px; "&gt;&lt;b style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;SOAP (Simple Object Access Protocol)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; and &lt;/span&gt;&lt;/span&gt;&lt;b style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;REST (Representational State Transfer)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; provide mechanisms for requesting information from endpoints (SOAP) or from resources (REST). Perhaps the best way to think of these technologies is as a method of making a remote procedure calls against a well-defined API. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;SOAP &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal; line-height: 18px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;has a more formal definition mechanism called WSDL (Web Services Definition Language) and is a bit more complex to implement. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;REST &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal; line-height: 18px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;uses the standard HTTP request and response mechanism, simplifying implementation and providing for a looser coupling of the client and server. Note that REST also supports the transfer of non-XML messages such as JSON (JavaScript Object Notation&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="id0070002" class="ArticleTypeTitle" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: bold; font-style: normal; margin-top: 3px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; font-variant: normal; text-transform: none; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="id0070002" class="ArticleTypeTitle" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: bold; font-style: normal; margin-top: 3px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; font-variant: normal; text-transform: none; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Which is better, REST or SOAP?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="id0070003" class="ArticleNormalPara" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;This is one of the most common questions I get about REST, and it is probably the least fair. Both REST and SOAP are often termed "Web services," and one is often used in place of the other, but they are totally different approaches. REST is an architectural style for building client-server applications. SOAP is a protocol specification for exchanging data between two endpoints.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="id0070004" class="ArticleNormalPara" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Comparing REST with the remote procedure call (RPC) style of building client-server applications would be more accurate. RPC is a style (rather than a protocol, which is what SOAP is) of building client-server applications in which a proxy (generally generated from metadata) is used in the client's address space to communicate with the server and the proxy's interface mimics the server's interface. Although SOAP doesn't require the RPC style, most modern SOAP toolkits are geared toward (at least they default to) using RPC.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="id0070005" class="ArticleNormalPara" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;In contrast to RPC, REST lacks the metadata-generated proxy (see the next question for more information), which means that the client is less coupled to the service. Also, because REST relies on the semantics of HTTP, requests for data (GET requests) can be cached. RPC systems generally have no such infrastructure (and even when performing RPC using SOAP over HTTP, SOAP responses can't be cached because SOAP uses the HTTP POST verb, which is considered unsafe). SOAP intentionally eschews HTTP, specifically to allow SOAP to work over other protocols, so it's actually a little disingenuous to call SOAP-based services Web services.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="id0070006" class="ArticleNormalPara" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;My perspective is that both REST and SOAP can be used to implement similar functionality, but in general SOAP should be used when a particular feature of SOAP is needed, and the advantages of REST make it generally the best option otherwise.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="id0070006" class="ArticleNormalPara" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-weight: inherit; font-style: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;ref:&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Rest vs Soap - &lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://blogs.msdn.com/b/swiss_dpe_team/archive/2008/11/28/rest-vs-soap.aspx" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://blogs.msdn.com/b/swiss_&lt;wbr&gt;dpe_team/archive/2008/11/28/&lt;wbr&gt;rest-vs-soap.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div class="im"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;a href="http://blogs.msdn.com/b/swiss_dpe_team/archive/2008/11/28/rest-vs-soap.aspx" target="_blank"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd942839.aspx" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://msdn.microsoft.com/&lt;wbr&gt;en-us/magazine/dd942839.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Soap vs Rest discussions - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/zainnab/archive/2007/12/16/rest-vs-soap-decision-decisions-decisions.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://blogs.msdn.com/b/zainnab/archive/2007/12/16/rest-vs-soap-decision-decisions-decisions.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Introduction to Restful Webservices - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd315413.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://msdn.microsoft.com/en-us/magazine/dd315413.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Web Services, Part 1: SOAP vs. REST - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Stefan Tilkov: REST vs SOAP - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Roots of REST vs SOAP - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.prescod.net/rest/rest_vs_soap_overview/"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://www.prescod.net/rest/rest_vs_soap_overview/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;REST vs SOAP from StackOverflow -&lt;/span&gt;&lt;/span&gt;&lt;a href="http://stackoverflow.com/questions/209905/rest-and-soap"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://stackoverflow.com/questions/209905/rest-and-soap&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Giving SOAP a REST -&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.devx.com/DevX/Article/8155"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;http://www.devx.com/DevX/Article/8155&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-4772824850602970257?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/4772824850602970257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/4772824850602970257'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/09/rest-vs-soap.html' title='REST vs SOAP'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-9040906132986307464</id><published>2010-09-25T16:32:00.000-07:00</published><updated>2010-09-25T16:35:37.371-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WEB PROGRAMMING'/><title type='text'>Http Message Length</title><content type='html'>&lt;span style="font-family: 'Segoe UI',Verdana,Arial; font-size: 13px;"&gt;&lt;b&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: 16px; font-weight: normal;"&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: 13px; font-weight: 800;"&gt;&lt;div&gt;&lt;div style="display: inline !important; "&gt;&lt;p style="display: inline !important; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;The  transfer-length of a message is the length of the message-body as it  appears in the message; that is, after any transfer-codings have been  applied. When a message-body is included with a message, the  transfer-length of that body is determined by one of the following (in  order of precedence):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;1.Any response message which "MUST NOT" include a message-body (such as the 1xx, 204, and 304 responses and any response &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;  a HEAD request) is always terminated by the first empty line after the  header fields, regardless of the entity-header fields present in the  message.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;2.If a Transfer-Encoding header field (section &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a rel="xref" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.41" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;14.41&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;)  is present and has any value other than "identity", then the  transfer-length is defined by use of the "chunked" transfer-coding  (section &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a rel="xref" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;3.6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;), unless the message is terminated by closing the connection.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;3.If a Content-Length header field (section &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a rel="xref" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;14.13&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;)  is present, its decimal value in OCTETs represents both the  entity-length and the transfer-length. The Content-Length header field  MUST NOT be sent if these two lengths are different (i.e., if a  Transfer-Encoding&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;     header field is present). If a message is received with both a      Transfer-Encoding header field and a Content-Length header field,      the latter MUST be ignored. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;4.If  the message uses the media type "multipart/byteranges", and the  transfer-length is not otherwise specified, then this self- delimiting  media type defines the transfer-length. This media type MUST NOT be used  unless the sender knows that the recipient can parse it; the presence  in a request of a Range header with multiple byte- range specifiers from  a &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a rel="xref" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec1.html#sec1.1" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;1.1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; client implies that the client can parse multipart/byteranges responses.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;       A range header might be forwarded by a 1.0 proxy that does not        understand multipart/byteranges; in this case the server MUST        delimit the message using methods defined in items 1,3 or 5 of        this section. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;5.By the server closing the connection. (Closing the connection cannot be used &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; indicate the end of a request body, since that would leave no possibility for the server &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; send back a response.)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;For  compatibility with HTTP/1.0 applications, HTTP/1.1 requests containing a  message-body MUST include a valid Content-Length header field unless  the server is known &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; be HTTP/1.1 compliant. If  a request contains a message-body and a Content-Length is not given,  the server SHOULD respond with 400 (bad request) if it cannot determine  the length of the message, or with 411 (length required) if it wishes &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; insist on receiving a valid Content-Length.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;All  HTTP/1.1 applications that receive entities MUST accept the "chunked"  transfer-coding (section 3.6), thus allowing this mechanism &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; be used for messages when the message length cannot be determined in advance.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Messages  MUST NOT include both a Content-Length header field and a non-identity  transfer-coding. If the message does include a non- identity  transfer-coding, the Content-Length MUST be ignored.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;When a  Content-Length is given in a message where a message-body is allowed,  its field value MUST exactly match the number of OCTETs in the  message-body. HTTP/1.1 user agents MUST notify the user when an invalid  length is received and detected.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;span style="line-height: 24px; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h1 style="color: black; margin-top: 0px; margin-right: 0px; margin-bottom: 0.1em; margin-left: 0px; padding-top: 0px; padding-bottom: 0px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170); width: auto; line-height: 1.2em; "&gt; &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="color: black; margin-top: 0px; margin-right: 0px; margin-bottom: 0.1em; margin-left: 0px; padding-top: 0px; padding-bottom: 0px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170); width: auto; line-height: 1.2em; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; Chunked transfer encoding&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="width: 1071px; line-height: 1.5em; "&gt;&lt;div style="display: inline; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;From Wikipedia, the free encyclopedia&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="line-height: 1.2em; margin-top: 0px; margin-right: 0px; margin-bottom: 1.4em; margin-left: 1em; color: rgb(125, 125, 125); width: auto; "&gt;&lt;/div&gt;&lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt; &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Chunked transfer encoding is a data transfer mechanism in the Hypertext Transfer Protocol (HTTP) that allows &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/HTTP" title="HTTP" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;HTTP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; data &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; be reliably delivered between a &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Web_server" title="Web server" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;web server&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; and a &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Client_%28computing%29" title="Client (computing)" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;client&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Application_software" title="Application software" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;application&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;, usually a &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Web_browser" title="Web browser" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;web browser&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;,  without knowing in advance of transmission the size of the entire  message body. This is achieved by splitting the data payload of the  message in small parts (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;chunks&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;) and transmitting with each chunk  its size. The data transfer is terminated by a final chunk of length  zero. This makes it possible &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; transmit  dynamically generated content in web pages. The chunked method is only  available in version 1.1 of the HTTP protocol (HTTP/1.1).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Without chunked transfer encoding, the size of data delivered in HTTP responses must be indicated by the &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Content-Length" title="Content-Length" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Content-Length&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_HTTP_headers" title="List of HTTP headers" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;header&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; &lt;wbr&gt;field &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; allow clients &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; determine the end of transmission.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;/p&gt;&lt;h2 style="color: black; margin-top: 0px; margin-right: 0px; margin-bottom: 0.6em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170); width: auto; "&gt; &lt;span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Format&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;If a &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Transfer-Encoding&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; field with a value of &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;chunked&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; is  specified in an HTTP message (either a request sent by a client or the  response from the server), the body of the message consists of an  unspecified number of chunks, a terminating &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;last-chunk&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;, an optional trailer of entity-header fields, and a final CRLF sequence.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Each chunk starts with the number of &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Octet_%28computing%29" title="Octet (computing)" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;octets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; of the data it embeds expressed in &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Hexadecimal" title="Hexadecimal" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;hexadecimal&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; followed by optional parameters (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;chunk extension&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;) and a terminating CRLF (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Carriage_return" title="Carriage return" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;carriage return&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;and &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Line_feed" title="Line feed" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;line feed&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;)  sequence, followed by the chunk data. The chunk is terminated by CRLF.  If chunk extensions are provided, the chunk size is terminated by a  semicolon followed with the extension name and an optional equal sign  and value.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;The last chunk is a zero-length chunk, with the chunk size coded as &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;, but without any chunk data section.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;The final chunk  may be followed by an optional trailer of additional entity-header  fields that are normally delivered in the HTTP header &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; allow the delivery of data that can only be computed after all chunk data has been generated. The sender may indicate in a &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Trailer&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; header field which additional fields it will send in the trailer after the chunks.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;h2 style="color: black; margin-top: 0px; margin-right: 0px; margin-bottom: 0.6em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170); width: auto; "&gt; &lt;span style="float: right; margin-left: 5px; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;[&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Chunked_transfer_encoding&amp;amp;action=edit&amp;amp;section=4" title="Edit section: Example" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;edit&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Example&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt; &lt;h3 style="color: black; margin-top: 0px; margin-right: 0px; margin-bottom: 0.3em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-style: none; width: auto; "&gt; &lt;span style="float: right; margin-left: 5px; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;[&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Chunked_transfer_encoding&amp;amp;action=edit&amp;amp;section=5" title="Edit section: Encoded response" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;edit&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Encoded response&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt; &lt;pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(47, 111, 171); border-right-color: rgb(47, 111, 171); border-bottom-color: rgb(47, 111, 171); border-left-color: rgb(47, 111, 171); color: black; background-color: rgb(249, 249, 249); line-height: 1.1em; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;HTTP/1.1 200 OK Content-Type: text/plain Transfer-Encoding: chunked  25 This is the data in the first chunk  1C and this is the second one  3 con 8 sequence 0  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;h3 style="color: black; margin-top: 0px; margin-right: 0px; margin-bottom: 0.3em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-style: none; width: auto; "&gt; &lt;span style="float: right; margin-left: 5px; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;[&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Chunked_transfer_encoding&amp;amp;action=edit&amp;amp;section=6" title="Edit section: Anatomy of encoded response" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;edit&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Anatomy of encoded response&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt; &lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;The first two chunks contain explicit &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;\r\n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; characters in the chunk data.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(47, 111, 171); border-right-color: rgb(47, 111, 171); border-bottom-color: rgb(47, 111, 171); border-left-color: rgb(47, 111, 171); color: black; background-color: rgb(249, 249, 249); line-height: 1.1em; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;"This is the data in the first chunk\r\n"      (37 chars =&gt; hex: 0x25) "and this is the second one\r\n"               (28 chars =&gt; hex: 0x1C) "con"                                          (3  chars =&gt; hex: 0x03) "sequence"                                     (8  chars =&gt; hex: 0x08) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;The response ends with a zero-length &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;last&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; chunk: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;"0\r\&lt;wbr&gt;n"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt; and the final &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;"\r\n"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 style="color: black; margin-top: 0px; margin-right: 0px; margin-bottom: 0.3em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-style: none; width: auto; "&gt; &lt;span style="float: right; margin-left: 5px; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;[&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/w/index.php?title=Chunked_transfer_encoding&amp;amp;action=edit&amp;amp;section=7" title="Edit section: Decoded data" style="text-decoration: none; color: rgb(6, 69, 173);" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;edit&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;Decoded data&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt; &lt;pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(47, 111, 171); border-right-color: rgb(47, 111, 171); border-bottom-color: rgb(47, 111, 171); border-left-color: rgb(47, 111, 171); color: black; background-color: rgb(249, 249, 249); line-height: 1.1em; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" &gt;This is the data in the first chunk and this is the second one consequence&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-9040906132986307464?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/9040906132986307464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/9040906132986307464'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/09/http-message-length.html' title='Http Message Length'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-7458510233052929828</id><published>2010-08-21T19:08:00.000-07:00</published><updated>2010-08-21T19:54:04.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WEB PROGRAMMING'/><title type='text'>Http Message Overview</title><content type='html'>&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Http Status Codes&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:21.0pt;margin-right:0in;margin-bottom: 0in;margin-left:0in;margin-bottom:.0001pt;line-height:15.0pt;mso-outline-level: 3"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Status Codes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;HTTP status codes are returned by web servers to describe if and how a request was processed. The codes are grouped by the first digit:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:21.0pt;margin-right:0in;margin-bottom: 0in;margin-left:0in;margin-bottom:.0001pt;line-height:15.0pt;mso-outline-level: 3"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;1xx - Informational&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: 13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Any code starting with '1' is an intermediate response and indicates that the server has received the request but has not finished processing it. For example, IIS initially replies with &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;100 Continue&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; when it receives a POST request and then with &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;200 OK&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; once it has been processed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:21.0pt;margin-right:0in;margin-bottom: 0in;margin-left:0in;margin-bottom:.0001pt;line-height:15.0pt;mso-outline-level: 3"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;2xx - Successful&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: 13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;These codes are used when a request has been successfully processed. For example, the value &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;200&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; is used when the requested resource is being returned to the HTTP client in the body of the response message.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:21.0pt;margin-right:0in;margin-bottom: 0in;margin-left:0in;margin-bottom:.0001pt;line-height:15.0pt;mso-outline-level: 3"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;3xx - Redirection&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Codes starting with a '3' indicate that the request was processed, but the browser should get the resource from another location. Some examples are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="80%" style="width:80.0%;border-collapse:collapse;mso-yfti-tbllook:1184;mso-padding-alt:  0in 0in 0in 0in"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td width="60" valign="top" style="width:45.0pt;padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;302&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td valign="top" style="padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:   normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The requested resource has been   temporarily moved and the browser should issue a request to the URL   supplied in the &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Location&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; response header. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:   normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td width="60" valign="top" style="width:45.0pt;padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;304&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td valign="top" style="padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:   normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The requested resource has not   been modified and the browser should read from its local cache instead. The &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Content-Length&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; header   will be zero or absent because content is never returned with a 304 response&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal" style="margin-top:21.0pt;margin-right:0in;margin-bottom: 0in;margin-left:0in;margin-bottom:.0001pt;line-height:15.0pt;mso-outline-level: 3"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;4xx - Client Error&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The server returns these codes when they is a problem with the client's request. Here are some examples:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="80%" style="width:80.0%;border-collapse:collapse;mso-yfti-tbllook:1184;mso-padding-alt:  0in 0in 0in 0in"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td width="60" valign="top" style="width:45.0pt;padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;401&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td valign="top" style="padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:   normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Anonymous clients are not   authorized to view the requested content and must provide authentication   information in the &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;WWW-Authenticate&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; request header. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:   normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td width="60" valign="top" style="width:45.0pt;padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;404&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td valign="top" style="padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The requested resource does not exist on the server&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal" style="margin-top:21.0pt;margin-right:0in;margin-bottom: 0in;margin-left:0in;margin-bottom:.0001pt;line-height:15.0pt;mso-outline-level: 3"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;5xx - Server Error&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;A status code starting with the digit 5 indicates that an error occurred on the server while processing the request. For example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="80%" style="width:80.0%;border-collapse:collapse;mso-yfti-tbllook:1184;mso-padding-alt:  0in 0in 0in 0in"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td width="60" valign="top" style="width:45.0pt;padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;500&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td valign="top" style="padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;An internal error occurred on the server. This may be   because of an application error or configuration problem&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td width="60" valign="top" style="width:45.0pt;padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;503&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td valign="top" style="padding:0in 0in 0in 0in"&gt;   &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The service is currently unavailable, perhaps because of   essential maintenance or overloading&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal" style="text-align: center;margin-bottom: 6pt; line-height: 18pt; "&gt;&lt;b&gt;&lt;u&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Http Authentication&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:6.0pt; line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Here is a typical transaction between an HTTP client and an HTTP server running on the local machine (localhost). It comprises the following steps.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-bottom:1.2pt; margin-left:.25in;line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;1. The client asks for a page that requires authentication but does not provide a user name and password. Typically this is because the user simply entered the address or followed a link to the page.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-bottom:1.2pt; margin-left:.25in;line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-bottom:1.2pt; margin-left:.25in;line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;2. The server responds with the 401 response code and provides the authentication realm.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-bottom:1.2pt; margin-left:.25in;line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-bottom:1.2pt; margin-left:.25in;line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;3. At this point, the client will present the authentication realm (typically a description of the computer or system being accessed) to the user and prompt for a user name and password. The user may decide to cancel at this point.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-bottom:1.2pt; margin-left:.25in;line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-bottom:1.2pt; margin-left:.25in;line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;4. Once a user name and password have been supplied, the client adds an authentication header (with value &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;base64encode(username+":"+password)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;) to the original request and re-sends it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-bottom:1.2pt; margin-left:.25in;line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-bottom:1.2pt; margin-left:.25in;line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;5. In this example, the server accepts the authentication and the page is returned. If the user name is invalid or the password incorrect, the server might return the 401 response code and the client would prompt the user again.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:6.0pt; line-height:18.0pt"&gt;&lt;b&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Note:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; A client may pre-emptively send the authentication header in its first request, with no user interaction required.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:6.0pt; line-height:18.0pt"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;margin-bottom: 9pt; line-height: 13.5pt; "&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Http Encoding&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;When an HTTP client is reading a response message from a server it needs to know when it has reached the end of the message. This is particularly important with persistent (keep alive) connections, because a connection can only be re-used by another HTTP transaction after the response message has been fully received. The following sections describe the four ways in which an HTTP server can indicate the end of the response message:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:21.0pt;margin-right:0in;margin-bottom: 0in;margin-left:0in;margin-bottom:.0001pt;line-height:15.0pt;mso-outline-level: 3"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Connection Closed by Server&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:9.0pt;line-height:13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The connection can be closed at the end of the response message by the server, but this prevents connections being re-used.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:21.0pt;margin-right:0in;margin-bottom: 0in;margin-left:0in;margin-bottom:.0001pt;line-height:15.0pt;mso-outline-level: 3"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Content-Length Header&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: 13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The length of the content after the response headers can be specified in bytes with the &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Content-Length &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;header&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:21.0pt;margin-right:0in;margin-bottom: 0in;margin-left:0in;margin-bottom:.0001pt;line-height:15.0pt;mso-outline-level: 3"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Implied Content Length&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: 13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Some types of responses, such as &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;304&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;, are defined to never have content and therefore the client can assume that the response message is terminated by the double CRLF after the headers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top:21.0pt;margin-right:0in;margin-bottom: 0in;margin-left:0in;margin-bottom:.0001pt;line-height:15.0pt;mso-outline-level: 3"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Chunked Encoding&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: 13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The content can be broken up into a number of chunks; each of which is prefixed by its size in bytes. A zero size chunk indicates the end of the response message. If a server is using chunked encoding it must set the&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Transfer-Encoding&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; header to "chunked".&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: 13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Chunked encoding is useful when a large amount of data is being returned to the client and the total size of the response may not be known until the request has been fully processed. An example of this is generating an HTML table of results from a database query. If you wantedto use the &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Content-Length&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; header you would have to buffer the whole result set before calculating the total content size. However, with chunked encoding you could just write the data one row at a time and write a zero sized chunk when the end of the query was reached.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: 13.5pt"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;ref: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Http Wiki - &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Http header fields - &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;How to find ed of Http response - &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%;  color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.httpwatch.com/httpgallery/chunked/" target="_blank"&gt;&lt;span style="color:#0000CC;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.httpwatch.com&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000CC;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;wbr&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000CC;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;httpgallery/chunked/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h2 style="margin-top:11.25pt;margin-right:0in;margin-bottom:9.0pt;margin-left: 0in;line-height:16.5pt"&gt;&lt;span class="Apple-style-span" style="font-weight: normal; line-height: normal; "&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;HttpMessage structure -&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal; line-height: normal; "&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal; line-height: normal; "&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%;  color:black;"&gt;&lt;a href="http://web-sniffer.net/" target="_blank"&gt;&lt;span style="color:#0000CC;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://web-sniffer.net/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%;  color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Http Message - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html" target="_blank"&gt;&lt;span style="color:#0000CC;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.w3.org/Protocols&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000CC;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;wbr&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000CC;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;rfc2616/rfc2616-sec4.html&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;  color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Http Authentication – &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000CC;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Basic_access_authentication" target="_blank"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://en.wikipedia.org/wiki/Basic_access_authentication&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;  "&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="line-height: 115%;  "&gt;&lt;h2 style="margin-top:11.25pt;margin-right:0in;margin-bottom:9.0pt;margin-left: 0in;line-height:16.5pt"&gt;&lt;span style=" font-weight: normal; color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;HTTP Status Codes and Errors -&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.httpwatch.com/httpgallery/errors/"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.httpwatch.com/httpgallery/errors/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;  &lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;  "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http 1.1 RFC - &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 204); line-height: 18px; "&gt;&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.w3.org/Protocols/rfc2616/rfc2616.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;  color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http over TLS RFC -&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000CC;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tools.ietf.org/html/rfc2818"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://tools.ietf.org/html/rfc2818&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;ssl 3.0 RFC - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-tls-ssl-version3-00"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://tools.ietf.org/html/draft-ietf-tls-ssl-version3-00&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-7458510233052929828?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/7458510233052929828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/7458510233052929828'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/08/http-message-overview.html' title='Http Message Overview'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-707876767108895636</id><published>2010-08-21T18:44:00.000-07:00</published><updated>2010-08-21T18:45:11.318-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WINDOWS OPERATING SYSTEM'/><title type='text'>Windows Debuggers - OllyDbg</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;OllyDbg is a 32-bit assembler level analysing debugger for Microsoft&lt;/span&gt;&lt;/span&gt;&lt;sup&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;®&lt;/span&gt;&lt;/span&gt;&lt;/sup&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Windows&lt;/span&gt;&lt;/span&gt;&lt;sup&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;®&lt;/span&gt;&lt;/span&gt;&lt;/sup&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;. Emphasis on&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;binary code analysis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;makes it particularly useful in cases where source is unavailable.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;OllyDbg’s primary strength is working with code that you don't have the source for.  It does superb job of disassembling apps and augmenting the dissasembly with analysis that includes visual indications of function entry and exit points, loops, switch statements, common Win32 API calls and window messages (including cracking the parameters!), dynamically showing current stack, good tracing/logging, and support for patching.  When you step through code it shows you even more …&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;ref:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;OllyDbg - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.ollydbg.de/"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.ollydbg.de/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; , &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.ollydbg.de/download.htm"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.ollydbg.de/download.htm&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;OllyDbg Wiki - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/OllyDbg"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://en.wikipedia.org/wiki/OllyDbg&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;OllyDbg Tutorial - &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.pcdebug.com/debugging/ollydbg-tutorial-reverse-engineering-olly-dbg-plugins.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.pcdebug.com/debugging/ollydbg-tutorial-reverse-engineering-olly-dbg-plugins.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;SoftICE, OllyDbg, W32DASM - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.programmersheaven.com/2/Inject-code-to-Portable-Executable-file-Page-2"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.programmersheaven.com/2/Inject-code-to-Portable-Executable-file-Page-2&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Programmer’s tools -&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#333333"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 115%; "&gt;&lt;a href="http://weblogs.asp.net/sjoseph/archive/2007/05/21/programmer-s-tools.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://weblogs.asp.net/sjoseph/archive/2007/05/21/programmer-s-tools.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Windows Debuggers - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/tonyschr/archive/2004/01/17/59828.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://blogs.msdn.com/b/tonyschr/archive/2004/01/17/59828.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;An Anti-Reverse Engineering guide - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.codeproject.com/KB/security/AntiReverseEngineering.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.codeproject.com/KB/security/AntiReverseEngineering.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; "&gt;&lt;o:p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-707876767108895636?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/707876767108895636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/707876767108895636'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/08/windows-debuggers-ollydbg.html' title='Windows Debuggers - OllyDbg'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-5295064835476026721</id><published>2010-07-30T17:16:00.000-07:00</published><updated>2010-07-30T17:20:33.869-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TECHNICAL MISCELLANEOUS'/><title type='text'>Schools Interoperability Framework(SIF)</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;div&gt;&lt;span style="font-family: sans-serif; font-size: 13px; line-height: 19px; "&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Schools Interoperability Framework&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Systems Interoperability Framework&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;(UK), or SIF, is a data sharing &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_standard" title="Open standard" target="_blank" style="color: rgb(6, 69, 173); text-decoration: none; background-color: initial; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;open&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Specification" title="Specification" target="_blank" style="color: rgb(6, 69, 173); text-decoration: none; background-color: initial; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;specification&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; for academic institutions from kindergarten through twelfth grade (&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/K-12" title="K-12" target="_blank" style="color: rgb(6, 69, 173); text-decoration: none; background-color: initial; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;K-12&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;). Until recently, it has been used primarily in the United States alone; however, it is increasingly being implemented in Australia, the UK, India and elsewhere.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The specification is composed of two parts: an &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/XML" title="XML" target="_blank" style="color: rgb(6, 69, 173); text-decoration: none; background-color: initial; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;XML&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; specification for &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Data_modeling" title="Data modeling" target="_blank" style="color: rgb(6, 69, 173); text-decoration: none; background-color: initial; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;modeling&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; educational data, and a &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture" title="Service-oriented architecture" target="_blank" style="color: rgb(6, 69, 173); text-decoration: none; background-color: initial; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Service-Oriented Architecture (SOA)&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; specification for sharing that data between institutions.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;ref:&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://en.wikipedia.org/wiki/Schools_Interoperability_Framework" target="_blank" style="color: rgb(42, 93, 176); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://en.wikipedia.org/wiki/&lt;wbr&gt;Schools_Interoperability_&lt;wbr&gt;Framework&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.sifinfo.org/us/sif-certification.asp" target="_blank" style="color: rgb(42, 93, 176); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.sifinfo.org/us/sif-&lt;wbr&gt;certification.asp&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Schools_Interoperability_Framework" target="_blank" style="color: rgb(42, 93, 176); "&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://certification.sifinfo.org/" target="_blank" style="color: rgb(42, 93, 176); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://certification.sifinfo.&lt;wbr&gt;org/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.opengroup.org/RI/sif.htm"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.opengroup.org/RI/sif.htm&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;a href="http://certification.sifinfo.org/" target="_blank" style="color: rgb(42, 93, 176); "&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.opengroup.org/certification/sif-home.html" target="_blank" style="color: rgb(42, 93, 176); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.opengroup.org/&lt;wbr&gt;certification/sif-home.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://compliance.sifinfo.org/sifcompliance/home.jsp" target="_blank" style="color: rgb(42, 93, 176); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://compliance.sifinfo.org/&lt;wbr&gt;sifcompliance/home.jsp&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://xml.coverpages.org/sif.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://xml.coverpages.org/sif.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-5295064835476026721?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5295064835476026721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/5295064835476026721'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/07/schools-interoperability-frameworksif.html' title='Schools Interoperability Framework(SIF)'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-2764249149765921599</id><published>2010-06-24T19:04:00.001-07:00</published><updated>2010-06-24T19:11:16.247-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++ PROGRAMMING'/><title type='text'>DACL - Discretionary Access Control List</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', Verdana, Arial; font-size: 13px; "&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;An &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms721532(v=VS.85).aspx#_security_access_control_list_gly" style="text-decoration: none; "&gt;&lt;em xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;access control list&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; (ACL) is a list of &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa374868(v=VS.85).aspx" style="text-decoration: none; "&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;access control entries&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; (ACE). Each ACE in an ACL identifies a &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa379637(v=VS.85).aspx" style="text-decoration: none; "&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;trustee&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; and specifies the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa374902(v=VS.85).aspx" style="text-decoration: none; "&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;access rights&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; allowed, denied, or audited for that trustee. The &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa379563(v=VS.85).aspx" style="text-decoration: none; "&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;security descriptor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; for a &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa379557(v=VS.85).aspx" style="text-decoration: none; "&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;securable object&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; can contain two types of ACLs: a DACL and a SACL.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;A &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms721573(v=VS.85).aspx#_security_discretionary_access_control_list_gly" style="text-decoration: none; "&gt;&lt;em xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;discretionary access control list&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; (DACL) identifies the trustees that are allowed or denied access to a securable object. When a &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms721603(v=VS.85).aspx#_security_process_gly" style="text-decoration: none; "&gt;&lt;em xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;process&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; tries to access a securable object, the system checks the ACEs in the object's DACL to determine whether to grant access to it. If the object does not have a DACL, the system grants full access to everyone. If the object's DACL has no ACEs, the system denies all attempts to access the object because the DACL does not allow any access rights. The system checks the ACEs in sequence until it finds one or more ACEs that allow all the requested access rights, or until any of the requested access rights are denied.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;DACL identifies the trustees that are allowed or denied access to a secured object. If you are setting the &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms721573%28VS.85%29.aspx" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;discretionary access control list&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; (DACL) or &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms721625%28VS.85%29.aspx" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;system access control list&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; (SACL) of an object, the system automatically propagates any inheritable &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms721532%28VS.85%29.aspx" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;access control entries&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; (ACEs) to existing child objects, according to the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa374924%28VS.85%29.aspx" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;ACE inheritance rules&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;ref:&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Access Control Lists - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa374872(VS.85).aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://msdn.microsoft.com/en-us/library/aa374872(VS.85).aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Windows Access Control Lists - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.tenouk.com/ModuleH.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.tenouk.com/ModuleH.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The Windows Access Control Model : Part 1 - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.codeproject.com/KB/winsdk/accessctrl1.aspx?msg=1081536"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.codeproject.com/KB/winsdk/accessctrl1.aspx?msg=1081536&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The Windows Access Control Model : Part 2 - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.codeproject.com/KB/winsdk/accessctrl2.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.codeproject.com/KB/winsdk/accessctrl2.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;The Windows Access Control Model : Part 3 - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.codeproject.com/KB/system/accessctrl3.aspx"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://www.codeproject.com/KB/system/accessctrl3.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-2764249149765921599?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2764249149765921599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2764249149765921599'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/06/dacl.html' title='DACL - Discretionary Access Control List'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-1735437476465814105</id><published>2010-05-19T15:33:00.000-07:00</published><updated>2012-02-04T20:16:54.957-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DOMAIN KNOWLEDGE'/><category scheme='http://www.blogger.com/atom/ns#' term='SOFTWARE SECURITY'/><title type='text'>Cryptography - Verifying the Signature of a Windows PE File</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-family:verdana;"&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;o:p&gt;Cryptography is the use of codes to convert data so that only a specific recipient will be able to read it, using a key.&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: Verdana, sans-serif; color: black; "&gt;Microsoft cryptographic technologies include CryptoAPI, Cryptographic Service Providers (CSP), CryptoAPI Tools, CAPICOM, WinTrust, issuing and managing certificates, and developing customizable public key infrastructures. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-family: Verdana, sans-serif; color: black; "&gt;ref:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: Verdana, sans-serif; color: black; "&gt;Cryptography - &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; "&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa380255(v=VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa380255(v=VS.85).aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Example C Program: Verifying the Signature of a PE File - &lt;a href="http://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;CryptoAPI Tools Reference - &lt;a href="http://msdn.microsoft.com/en-us/library/aa380240(v=VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa380240(v=VS.85).aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Windows Script Host: New Code-Signing Features Protect Against Malicious Scripts - &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc302149.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/cc302149.aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Understanding Authentication and Security - &lt;a href="http://uk.dwarner.org/library/SHELF5/Internet%20Explorer%20Plug-In%20and%20ActiveX%20Companion/ch5.htm"&gt;http://uk.dwarner.org/library/SHELF5/Internet%20Explorer%20Plug-In%20and%20ActiveX%20Companion/ch5.htm&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Tools to Sign Files and Check Signatures - &lt;a href="http://msdn.microsoft.com/en-us/library/aa388151(v=VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa388151(v=VS.85).aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Tools to Create, View, and Manage Certificates - &lt;a href="http://msdn.microsoft.com/en-us/library/aa388150(v=VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa388150(v=VS.85).aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Example C Code for Opening Certificate Stores -  &lt;a href="http://msdn.microsoft.com/en-us/library/aa382035(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa382035(VS.85).aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;How To Get Information from Authenticode Signed Executables -  &lt;a href="http://support.microsoft.com/kb/323809"&gt;http://support.microsoft.com/kb/323809&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;How to retrieve the authenticode information - &lt;a href="http://www.ucosoft.com/how-to-program-to-retrieve-the-authenticode-information.html"&gt;http://www.ucosoft.com/how-to-program-to-retrieve-the-authenticode-information.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;a href="http://stackoverflow.com/questions/2008519/how-to-verify-that-my-orgainization-signed-a-trusted-windows-binary"&gt;http://stackoverflow.com/questions/2008519/how-to-verify-that-my-orgainization-signed-a-trusted-windows-binary&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;An application that calls Cryptography API (CryptoAPI) functions may stop responding on a Windows XP-based computer - &lt;a href="http://support.microsoft.com/kb/899420"&gt;http://support.microsoft.com/kb/899420&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Validating embedded digital signatures - &lt;a href="http://rsanidad.wordpress.com/2008/10/31/validating-embeded-digital-signatures/"&gt;http://rsanidad.wordpress.com/2008/10/31/validating-embeded-digital-signatures/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;;color:#3F529C"&gt;Other C Code Examples&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;;color:black"&gt;The following topics present other procedures and extended C code examples that use the &lt;a href="http://msdn.microsoft.com/en-us/library/ms721572(v=VS.85).aspx#_security_cryptoapi_gly"&gt;&lt;i&gt;&lt;span style="color:#1364C4;text-decoration:none;text-underline:none"&gt;CryptoAPI&lt;/span&gt;&lt;/i&gt;&lt;/a&gt; functions:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;  &lt;li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:      auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;      mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa388188(v=VS.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;Verifying a CTL&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:      auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;      mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa388191(v=VS.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;Verifying Signed Messages by Using CTLs&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:      auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;      mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa382038(v=VS.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;Example C Program: Certificate Verification      Operations&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:      auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;      mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa382378(v=VS.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;Example C Program: Working with Key Identifiers&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:      auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;      mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa382042(v=VS.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;Example C Program: Creating a Certificate Chain&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:      auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;      mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa382364(v=VS.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;Example C Program: Making a Certificate Request&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:      auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;      mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa382036(v=VS.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;Example C Program: ASN.1 Encoding and Decoding&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:      auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;      mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa382374(v=VS.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;Example C Program: Using CertOIDToAlgId and      CertCompareIntegerBlob&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:      auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;      mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa382384(v=VS.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;Example C Program: Verifying the Signature of a PE      File&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:      auto;line-height:normal;mso-list:l0 level1 lfo1;tab-stops:list .5in"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;      mso-bidi-font-family:&amp;quot;Segoe UI&amp;quot;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa818335(v=VS.85).aspx"&gt;&lt;span style="color:#1364C4"&gt;Modifying Key Container Access&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span class="Apple-style-span" style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-1735437476465814105?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/1735437476465814105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/1735437476465814105'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/05/cryptography-verifying-signature-of.html' title='Cryptography - Verifying the Signature of a Windows PE File'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-2182435015978864048</id><published>2010-05-17T17:16:00.000-07:00</published><updated>2010-05-17T17:18:34.643-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VC++ PROGRAMMING'/><title type='text'>Windows Services</title><content type='html'>&lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal;mso-outline-level:3"&gt;&lt;b&gt;&lt;span style="color: rgb(53, 66, 120); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Windows Services&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Almost every operating system has a mechanism to start processes at system startup time that provide services not tied to an interactive user. In Windows, such processes are called &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;services&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; or &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;b&gt;Windows services&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;, because they rely on the Windows API to interact with the system. Services are similar to UNIX daemon processes and often implement the server side of client/ server applications. An example of a Windows service might be a Web server because it must be running regardless of whether anyone is logged on to the computer and it must start running when the system starts so that an administrator doesn't have to remember, or even be present, to start it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;b&gt;Windows services consist of three components: a service application, a service control program (SCP), and the service control manager (SCM)&lt;/b&gt;. First, we'll describe service applications, service accounts, and the operations of the SCM. Then we'll explain how auto-start services are started during the system boot. We'll also cover the steps the SCM takes when a service fails during its startup and the way the SCM shuts down services.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal;mso-outline-level:4"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;a name="ch04lev2sec7"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(53, 66, 120); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Service Applications&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;a name="ind4271"&gt;&lt;/a&gt;&lt;a name="ind4141"&gt;&lt;/a&gt;&lt;a name="ind4091"&gt;&lt;/a&gt;&lt;a name="ind4073"&gt;&lt;/a&gt;&lt;a name="ind4062"&gt;&lt;/a&gt;&lt;a name="ind3985"&gt;&lt;/a&gt;&lt;a name="ind3738"&gt;&lt;/a&gt;&lt;a name="ind1229"&gt;&lt;/a&gt;&lt;a name="ind0696"&gt;&lt;/a&gt;&lt;a name="ind0591"&gt;&lt;/a&gt;&lt;a name="ind0178"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Service applications, such as Web servers, consist of at least one executable that runs as a Windows service. A user wanting to start, stop, or configure a service uses an SCP. Although Windows supplies built-in SCPs that provide general start, stop, pause, and continue functionality, some service applications include their own SCP that allows administrators to specify configuration settings particular to the service they manage.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Service applications are simply Windows executables (GUI or console) with additional code to receive commands from the SCM as well as to communicate the application's status back to the SCM. Because most services don't have a user interface, they are built as console programs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;When you install an application that includes a service, the application's setup program must register the service with the system. To register the service, the setup program calls the Windows &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;CreateService&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; function, a services-related function implemented in Advapi32.dll (\Windows\System32\Advapi32.dll). &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Advapi32&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;, the "Advanced API" DLL, implements all the client-side SCM APIs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;When a setup program registers a service by calling &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;CreateService&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;, a message is sent to the SCM on the machine where the service will reside. The SCM then creates a registry key for the service under &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;HKLM\SYSTEM\CurrentControlSet\Services&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;. The Services key is the nonvolatile representation of the SCM's database. The individual keys for each service define the path of the executable image that contains the service as well as parameters and configuration options.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;After creating a service, an installation or management application can start the service via the &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;StartService&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; function. Because some service-based applications also must initialize during the boot process to function, it's not unusual for a setup program to register a service as an autostart service, ask the user to reboot the system to complete an installation, and let the SCM start the service as the system boots.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; line-height:normal"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;When a program calls &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;CreateService&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;, it must specify a number of parameters describing the service's characteristics. The characteristics include the service's type (whether it's a service that runs in its own process rather than a service that shares a process with other services), the location of the service's executable image file, an optional display name, an optional account name and password used to start the service in a particular account's security context, a start type that indicates whether the service starts automatically when the system boots or manually under the direction of an SCP, an error code that indicates how the system should react if the service detects an error when starting, and, if the service starts automatically, optional information that specifies when the service starts relative to other services.The SCM stores each characteristic as a value in the service's registry key.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;ref:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;A description of Svchost.exe in Windows XP Professional Edition - &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;a href="http://support.microsoft.com/kb/314056" target="_blank"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://support.microsoft.com/kb/314056&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;How to debug Windows services - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://support.microsoft.com/kb/824344"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://support.microsoft.com/kb/824344&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Preparing to debug a Service Application - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff553427%28VS.85%29.aspx" target="_blank"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://msdn.microsoft.com/&lt;wbr&gt;en-us/library/ff553427(VS.85).&lt;wbr&gt;aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;How to troubleshoot a service that crashes in Windows XP - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://support.microsoft.com/kb/934650" target="_blank"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://support.microsoft.com/&lt;wbr&gt;kb/934650&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Windows Shared Services - &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;a href="http://blogs.msdn.com/larryosterman/archive/2005/09/09/463018.aspx" target="_blank"&gt;&lt;span style="color:#2A5DB0;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://blogs.msdn.com/larryosterman/archive/2005/09/09/463018.aspx&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Debugging Shared Services : BREAKING UP (SHARED SERVICES) IS(N'T) HARD TO DO - &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;a href="http://blogs.msdn.com/larryosterman/archive/2005/09/12/464077.aspx" target="_blank"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://blogs.msdn.com/larryosterman/archive/2005/09/12/464077.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Trouble Shooting SVCHost.exe =&gt; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://blogs.technet.com/askperf/archive/2008/01/11/getting-started-with-svchost-exe-troubleshooting.aspx" target="_blank"&gt;&lt;span style="color:#2A5DB0;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://blogs.technet.com/askperf/archive/2008/01/11/getting-started-with-svchost-exe-troubleshooting.aspx&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;USEFUL SERVICE TRICKS : DEBUGGING SERVICE STARTUP  -&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;a href="http://blogs.msdn.com/larryosterman/archive/2006/03/01/541403.aspx" target="_blank"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://blogs.msdn.com/larryosterman/archive/2006/03/01/541403.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;WHEN SECURITY FIRMS OFFER BAD ADVICE  -&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;a href="http://blogs.msdn.com/LarryOsterman/archive/2004/03/17/91464.aspx" target="_blank"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;http://blogs.msdn.com/LarryOsterman/archive/2004/03/17/91464.aspx&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3169260607385504892-2182435015978864048?l=softwarekishorekoney.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2182435015978864048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3169260607385504892/posts/default/2182435015978864048'/><link rel='alternate' type='text/html' href='http://softwarekishorekoney.blogspot.com/2010/05/windows-services.html' title='Windows Services'/><author><name>kishore koney</name><uri>http://www.blogger.com/profile/02298514187016456470</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://2.bp.blogspot.com/_gVC6MBcCa7g/S3T-Y-L8H_I/AAAAAAAACUg/cQdHTPizsI0/S220/kishore.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-3169260607385504892.post-137077881463262123</id><published>2010-05-17T17:12:00.001-07:00</published><updated>2010-05-17T17:12:50.167-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WINDOWS
