<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Weblog of Gopalakrishna Palem</title><subtitle type="html" /><id>http://blogs.msdn.com/gpalem/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/gpalem/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-02-28T16:46:00Z</updated><entry><title>Temple scene with Maya Fluids, Particle Dynamics and Realflow Meshes</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2009/11/14/temple-scene-with-maya-fluids-particle-dynamics-and-realflow-meshes.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2009/11/14/temple-scene-with-maya-fluids-particle-dynamics-and-realflow-meshes.aspx</id><published>2009-11-14T03:56:17Z</published><updated>2009-11-14T03:56:17Z</updated><content type="html">Here is a brief demonstration of Maya fluids, particle dynamics and Nurbs combined together to create an early morning Temple scene effect. The light source is being animated with soft body particle dynamics, while the smoke emitting from sticks is typical fluid. The background haze &amp;amp; ray effect is created with a spot light shadowing a mask onto a 3d fluid container. The flowing water effect is created with Realflow meshes. For more, visit: http://gpalem.web.officelive.com/vfx/...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2009/11/14/temple-scene-with-maya-fluids-particle-dynamics-and-realflow-meshes.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9922382" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="Maya SDK" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+SDK/default.aspx" /><category term="Maya Developers" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+Developers/default.aspx" /><category term="Maya API" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+API/default.aspx" /><category term="3D Graphics" scheme="http://blogs.msdn.com/gpalem/archive/tags/3D+Graphics/default.aspx" /><category term="Animation" scheme="http://blogs.msdn.com/gpalem/archive/tags/Animation/default.aspx" /><category term="Demo Reel" scheme="http://blogs.msdn.com/gpalem/archive/tags/Demo+Reel/default.aspx" /><category term="Realflow" scheme="http://blogs.msdn.com/gpalem/archive/tags/Realflow/default.aspx" /></entry><entry><title>Animating a Tree Growth</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2009/11/13/animating-a-tree-growth.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2009/11/13/animating-a-tree-growth.aspx</id><published>2009-11-13T08:50:47Z</published><updated>2009-11-13T08:50:47Z</updated><content type="html">Here is a brief demonstration of tree growth animation in Vue. Animating the Diameter, Gnarl, Falloff, length and other related parameters gives the required result. Also note the growing grass at the base of the tree and the animated clouds. For more, visit: http://gpalem.web.officelive.com/vfx/...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2009/11/13/animating-a-tree-growth.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9921827" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="Vue" scheme="http://blogs.msdn.com/gpalem/archive/tags/Vue/default.aspx" /><category term="3D Graphics" scheme="http://blogs.msdn.com/gpalem/archive/tags/3D+Graphics/default.aspx" /><category term="Visual Effects" scheme="http://blogs.msdn.com/gpalem/archive/tags/Visual+Effects/default.aspx" /><category term="Animation" scheme="http://blogs.msdn.com/gpalem/archive/tags/Animation/default.aspx" /><category term="Demo Reel" scheme="http://blogs.msdn.com/gpalem/archive/tags/Demo+Reel/default.aspx" /></entry><entry><title>Fixing JDKMidi to auto sort MIDI Events</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2009/08/29/fixing-jdkmidi-to-auto-sort-midi-events.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2009/08/29/fixing-jdkmidi-to-auto-sort-midi-events.aspx</id><published>2009-08-29T09:27:00Z</published><updated>2009-08-29T09:27:00Z</updated><content type="html">After reviewing many existing C/C++ MIDI libraries, it appears JDKMidi seems to be the one having the features required by many midddlware libraries. However, JDKMIDI library (as of Revision 560) suffers a huge drawback of not being able to auto sort the MIDI events. You have to supply the events in correct time order. Fortunately, this is very easy to correct and here is how it can be done. (Get the complete code with modifications from: http://musicnote.svn.sourceforge.net/viewvc/musicnote/MusicNote/libjdkmidi/...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2009/08/29/fixing-jdkmidi-to-auto-sort-midi-events.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9888904" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="JDKMidi" scheme="http://blogs.msdn.com/gpalem/archive/tags/JDKMidi/default.aspx" /><category term="Music Programming" scheme="http://blogs.msdn.com/gpalem/archive/tags/Music+Programming/default.aspx" /><category term="MIDI" scheme="http://blogs.msdn.com/gpalem/archive/tags/MIDI/default.aspx" /></entry><entry><title>Maya 2010 to include Compositing and Camera Tracking Tools</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2009/08/04/maya-2010-to-include-compositing-and-camera-tracking-tools.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2009/08/04/maya-2010-to-include-compositing-and-camera-tracking-tools.aspx</id><published>2009-08-04T17:38:00Z</published><updated>2009-08-04T17:38:00Z</updated><content type="html">Autodesk, as usual, announced its next version of Maya at Siggraph. The interesting part, however, is the range of tools planned to be shipped as part of it: Maya Composite high dynamic range compositing system Matchmoving camera tracking system Additional MentalRay for batch rendering nodes etc... Not to mention the entire Maya unlimited 2009 tool-set as part of its unified Nucleus dynamic simulation framework. Certainly this is a great step towards unifying multiple tools of the pipeline into a...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2009/08/04/maya-2010-to-include-compositing-and-camera-tracking-tools.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9857169" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="Maya SDK" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+SDK/default.aspx" /><category term="Maya Developers" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+Developers/default.aspx" /><category term="Maya API" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+API/default.aspx" /></entry><entry><title>How to make QT SDK work with VisualStudio 2008 (Express/Complete)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2009/03/09/how-to-make-qt-sdk-work-with-visualstudio-2008-express-complete.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2009/03/09/how-to-make-qt-sdk-work-with-visualstudio-2008-express-complete.aspx</id><published>2009-03-09T17:32:00Z</published><updated>2009-03-09T17:32:00Z</updated><content type="html">You can use the following steps to make QT SDK work with your Visual Studio 2008 (either express version or commercial version). Download the QT SDK from http://www.qtsoftware.com/downloads/sdk-windows-cpp If you do not have VisualStudio 2008 get it from http://www.microsoft.com/express/download/ Once QT and VisualStudio 2008 both are installed and ready, open the VisualStudio 2008 Command Prompt (from Microsoft Visual Studio 2008 | Visual Studio Tools menu of Program Files) Change directory to the...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2009/03/09/how-to-make-qt-sdk-work-with-visualstudio-2008-express-complete.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9467807" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="Visual Studio" scheme="http://blogs.msdn.com/gpalem/archive/tags/Visual+Studio/default.aspx" /><category term="QTSDK" scheme="http://blogs.msdn.com/gpalem/archive/tags/QTSDK/default.aspx" /></entry><entry><title>How to make my water surface animate in Vue?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2009/01/13/how-to-make-my-water-surface-animate-in-vue.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2009/01/13/how-to-make-my-water-surface-animate-in-vue.aspx</id><published>2009-01-13T19:13:00Z</published><updated>2009-01-13T19:13:00Z</updated><content type="html">When a Water object is added to the Vue scene, it will be in a staic form without any animation applied to its surface. If you would like to have the water surface animated, then we have to enable its Displaced Water Surface property. This property allows the waves at the surface to be converted to true geometry that can be animated. To enable this property, Right-click the water object and choose Edit Object option. Under the Geometry options, check the Displaced Water Surface option. You can optionally...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2009/01/13/how-to-make-my-water-surface-animate-in-vue.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9315744" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="Maya Developers" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+Developers/default.aspx" /><category term="Vue" scheme="http://blogs.msdn.com/gpalem/archive/tags/Vue/default.aspx" /></entry><entry><title>Listing the codecs intalled on the machine</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2008/11/28/listing-the-codecs-intalled-on-the-machine.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2008/11/28/listing-the-codecs-intalled-on-the-machine.aspx</id><published>2008-11-28T16:10:00Z</published><updated>2008-11-28T16:10:00Z</updated><content type="html">Often an application requires to list all the Audio/Video compressors installed on the machine. We can achieve this easily with the ICreateDevEnum interface available from DirectShow. ICreateDevEnum exposes a method named CreateClassEnumerator that allows us to create enumerators for different categories of devices, such as audio/video codecs, Directx Media Objects (DMO) etc. The typical usage is as shown below: CComPtr&amp;lt;ICreateDevEnum&amp;gt; pSysDevEnum; if(FAILED(hr = pSysDevEnum.CoCreateInstance(CLSID_SystemDeviceEnum)))...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2008/11/28/listing-the-codecs-intalled-on-the-machine.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9151492" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="Windows Controls" scheme="http://blogs.msdn.com/gpalem/archive/tags/Windows+Controls/default.aspx" /><category term="Direct Show" scheme="http://blogs.msdn.com/gpalem/archive/tags/Direct+Show/default.aspx" /><category term="Codecs" scheme="http://blogs.msdn.com/gpalem/archive/tags/Codecs/default.aspx" /></entry><entry><title>Displaying the currently selected components with MSelectionList</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2008/08/21/displaying-the-currently-selected-components-with-mselectionlist.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2008/08/21/displaying-the-currently-selected-components-with-mselectionlist.aspx</id><published>2008-08-22T01:10:00Z</published><updated>2008-08-22T01:10:00Z</updated><content type="html">The MGlobal::getActiveSelectionList() offers a convenient way of accessing the currently selected objects in the view. However, if you wish to find the selected components then you need to use the MSelectionList's getDagPath() method. It returns the dagPath of the seleted object and also the selected components of it. Once we have the dagPath of the selected objects and its selected components, we can use the corresponding MIt classes to iterate over the individual elements of the component. For...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2008/08/21/displaying-the-currently-selected-components-with-mselectionlist.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8886237" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="Maya SDK" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+SDK/default.aspx" /><category term="Maya Developers" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+Developers/default.aspx" /><category term="Maya API" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+API/default.aspx" /></entry><entry><title>How to find the Shading Groups for a Shape node in Maya API?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2008/08/20/how-to-find-the-shading-groups-for-the-given-shape-node-in-maya-api.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2008/08/20/how-to-find-the-shading-groups-for-the-given-shape-node-in-maya-api.aspx</id><published>2008-08-21T01:55:00Z</published><updated>2008-08-21T01:55:00Z</updated><content type="html">Given the DagPath for any Mesh object, listing the Shading Groups connected to it is easy. The MFnMesh::getConnectedSetsAndMembers() will do the trick as shown below: MStatus ListShadingGroups(const MDagPath&amp;amp; inputShapeDagPath) { if(inputShapeDagPath.hasFn(MFn::kMesh)) { // Find the Shading Engines Connected to the SourceNode MFnMesh fnMesh(inputShapeDagPath.node()); // A ShadingGroup will have a MFnSet MObjectArray sets, comps; fnMesh.getConnectedSetsAndMembers(inputShapeDagPath.instanceNumber(),...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2008/08/20/how-to-find-the-shading-groups-for-the-given-shape-node-in-maya-api.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8882614" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="Maya Developers" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+Developers/default.aspx" /><category term="Maya API" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+API/default.aspx" /></entry><entry><title>Tracking C++ variable state changes</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2008/06/19/tracking-c-variable-state-changes.aspx" /><link rel="enclosure" type="application/oda" length="28322" href="http://blogs.msdn.com/gpalem/attachment/8622766.ashx" /><id>http://blogs.msdn.com/gpalem/archive/2008/06/19/tracking-c-variable-state-changes.aspx</id><published>2008-06-19T21:56:00Z</published><updated>2008-06-19T21:56:00Z</updated><content type="html">Tracking class variables' state changes can be tricky, especially if we are using too many asynchronous constructs. This is especially true for game and graphic application scenarios where hundreds and perhaps even thousands of object fly around changing their values in who knows which thread. (Who is forcing that character position into that map corner - physics thread or AI thread?) Couple of years back I wrote few tiny classes to address this problem as part of my Object Intropsection Library...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2008/06/19/tracking-c-variable-state-changes.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8622766" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="C++ Design" scheme="http://blogs.msdn.com/gpalem/archive/tags/C_2B002B00_+Design/default.aspx" /><category term="Object Introspection" scheme="http://blogs.msdn.com/gpalem/archive/tags/Object+Introspection/default.aspx" /><category term="Debugging" scheme="http://blogs.msdn.com/gpalem/archive/tags/Debugging/default.aspx" /><category term="Data-dependencies" scheme="http://blogs.msdn.com/gpalem/archive/tags/Data-dependencies/default.aspx" /></entry><entry><title>Having trouble with PoserFusion Shelf in Maya?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2008/06/11/having-trouble-with-poserfusion-shelf-in-maya.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2008/06/11/having-trouble-with-poserfusion-shelf-in-maya.aspx</id><published>2008-06-11T23:51:00Z</published><updated>2008-06-11T23:51:00Z</updated><content type="html">If you are encountering errors with Poser Fusion shelf buttons in Maya such as "Error: No Selection, or the Currently Selected object is not linked to a Poser file", then try the below steps and see if its helps. First of all ensure that your POSER_LOCATION environment variable is set correctly. It should read something like "C:\Program Files\Smith Micro\Poser Pro". Next, ensure that the PoserFusion plug-in is loaded in Maya. You can do this by going to Window &amp;gt; Settings|Preferences &amp;gt; Plugin...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2008/06/11/having-trouble-with-poserfusion-shelf-in-maya.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8592157" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="Maya Developers" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+Developers/default.aspx" /></entry><entry><title>How to create and manipulate Terabyte size Arrays with Win32API</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2008/06/05/huge-arrays-with-file-mapping.aspx" /><link rel="enclosure" type="application/zip" length="599828" href="http://blogs.msdn.com/gpalem/attachment/8576161.ashx" /><id>http://blogs.msdn.com/gpalem/archive/2008/06/05/huge-arrays-with-file-mapping.aspx</id><published>2008-06-05T23:01:00Z</published><updated>2008-06-05T23:01:00Z</updated><content type="html">If you are looking for a way of creating and accessing very large arrays, arrays that can handle content in the order of Tera Bytes, then probably you might find the File Mapping techniques useful for that purpose. File mapping is the association of a file's contents with a portion of the virtual address space of a process. It allows the process to work efficiently with a large data files without having to map the whole file into memory. Processes read from and write to the file view using pointers,...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2008/06/05/huge-arrays-with-file-mapping.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8576161" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="C++ Design" scheme="http://blogs.msdn.com/gpalem/archive/tags/C_2B002B00_+Design/default.aspx" /><category term="Operating System Internals" scheme="http://blogs.msdn.com/gpalem/archive/tags/Operating+System+Internals/default.aspx" /></entry><entry><title>Multiplication Circuit for Prime Factorization</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2008/06/03/multiplication-circuit-for-prime-factorization.aspx" /><link rel="enclosure" type="application/zip" length="16394" href="http://blogs.msdn.com/gpalem/attachment/8571842.ashx" /><id>http://blogs.msdn.com/gpalem/archive/2008/06/03/multiplication-circuit-for-prime-factorization.aspx</id><published>2008-06-03T20:32:00Z</published><updated>2008-06-03T20:32:00Z</updated><content type="html">Deriving a multiplication circuit for the Prime Factorization problem is trivial if you know how to convert the arithmetic and relational expressions into propositional logic. Below I will show few expressions and their corresponding CNF formulation. Converting Arithmetic and Relational expressions to Propositional Logic Here symbols such as x, y, z, a, b, c etc... each denote a single boolean value that can take either true or false value. We use ≠ to represent inequality, and ! to denote logical...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2008/06/03/multiplication-circuit-for-prime-factorization.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8571842" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="C++ Design" scheme="http://blogs.msdn.com/gpalem/archive/tags/C_2B002B00_+Design/default.aspx" /><category term="Theory of Computation" scheme="http://blogs.msdn.com/gpalem/archive/tags/Theory+of+Computation/default.aspx" /><category term="Boolean Satisfiability" scheme="http://blogs.msdn.com/gpalem/archive/tags/Boolean+Satisfiability/default.aspx" /><category term="Multiplication Circuit" scheme="http://blogs.msdn.com/gpalem/archive/tags/Multiplication+Circuit/default.aspx" /><category term="Prime Factorization" scheme="http://blogs.msdn.com/gpalem/archive/tags/Prime+Factorization/default.aspx" /><category term="CNF Expressions" scheme="http://blogs.msdn.com/gpalem/archive/tags/CNF+Expressions/default.aspx" /></entry><entry><title>How to check if my code is executing inside a Managed App or Native App?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2008/02/29/how-to-check-if-i-am-with-in-a-managed-app-or-native-app.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2008/02/29/how-to-check-if-i-am-with-in-a-managed-app-or-native-app.aspx</id><published>2008-02-29T21:56:00Z</published><updated>2008-02-29T21:56:00Z</updated><content type="html">If you check the CRT source code (inside VC\crt\src\crt0.c ) you can find an interesting function check_managed_app() that returns 1 if managed app, 0 if not based on the COM Runtime Descriptor in the Image Data Directory of the PE or PE+ header. You can generalize it to test if you are running as part of a managed process or native process. extern "C" int WRAPPER_API check_managed_app (LPVOID pImageBase) { PIMAGE_DOS_HEADER pDOSHeader; PIMAGE_NT_HEADERS pPEHeader; pDOSHeader = (PIMAGE_DOS_HEADER)pImageBase;...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2008/02/29/how-to-check-if-i-am-with-in-a-managed-app-or-native-app.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7956997" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="C++ Design" scheme="http://blogs.msdn.com/gpalem/archive/tags/C_2B002B00_+Design/default.aspx" /><category term="Operating System Internals" scheme="http://blogs.msdn.com/gpalem/archive/tags/Operating+System+Internals/default.aspx" /><category term="Debugging" scheme="http://blogs.msdn.com/gpalem/archive/tags/Debugging/default.aspx" /><category term="Marshalling" scheme="http://blogs.msdn.com/gpalem/archive/tags/Marshalling/default.aspx" /><category term="Interoperability" scheme="http://blogs.msdn.com/gpalem/archive/tags/Interoperability/default.aspx" /><category term="MFC Libraries" scheme="http://blogs.msdn.com/gpalem/archive/tags/MFC+Libraries/default.aspx" /></entry><entry><title>Well-designed libraries</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/gpalem/archive/2008/02/28/well-designed-libraries.aspx" /><id>http://blogs.msdn.com/gpalem/archive/2008/02/28/well-designed-libraries.aspx</id><published>2008-02-28T19:46:00Z</published><updated>2008-02-28T19:46:00Z</updated><content type="html">It is very rare that we come across a well-designed library every day, and even rare that we get a chance to work on them on daily basis. While it is hard to define what makes any given library "well-designed", it is rather easy to identify what is not. However, there are few exceptionally good libraries that from the moment you lay your hands on give you the feeling "… this has quality …" Of course, there are unbeatable whole complex operating systems that were well-designed in the past and give...(&lt;a href="http://blogs.msdn.com/gpalem/archive/2008/02/28/well-designed-libraries.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7936343" width="1" height="1"&gt;</content><author><name>P.Gopalakrishna</name><uri>http://blogs.msdn.com/members/P.Gopalakrishna.aspx</uri></author><category term="C++ Design" scheme="http://blogs.msdn.com/gpalem/archive/tags/C_2B002B00_+Design/default.aspx" /><category term="Object Introspection" scheme="http://blogs.msdn.com/gpalem/archive/tags/Object+Introspection/default.aspx" /><category term="Interoperability" scheme="http://blogs.msdn.com/gpalem/archive/tags/Interoperability/default.aspx" /><category term="Maya SDK" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+SDK/default.aspx" /><category term="Maya Developers" scheme="http://blogs.msdn.com/gpalem/archive/tags/Maya+Developers/default.aspx" /><category term="OpenSceneGraph" scheme="http://blogs.msdn.com/gpalem/archive/tags/OpenSceneGraph/default.aspx" /></entry></feed>