<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Cluebat-man to the rescue - All Comments</title><link>http://msmvps.com/blogs/vandooren/default.aspx</link><description>A weblog dedicated to Visual C++, interoperability and other stuff.</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>re: Preventing a DLL from being unloaded by the app that uses it</title><link>http://msmvps.com/blogs/vandooren/archive/2006/10/09/Preventing-a-DLL-from-being-unloaded-by-the-app-that-uses-it.aspx#1696934</link><pubDate>Sun, 28 Jun 2009 18:13:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1696934</guid><dc:creator>bullet</dc:creator><description>&lt;p&gt;From what I read your &amp;quot;right way&amp;quot; shouldn&amp;#39;t be done this way. The MSDN says calling LoadLibrary() in a DLLMain() should not be done which you do. I don&amp;#39;t even understand why this doesn&amp;#39;t get a lock-up, you call LoadLibrary() on a DLL that hasn&amp;#39;t finished loading. From my understanding this should go into an infinite loop. I didn&amp;#39;t read the referenced article on the NT Loader though. I assume it tags loaded-but-not-intialized DLLs?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1696934" width="1" height="1"&gt;</description></item><item><title>re: Installing Zune software without internet connection</title><link>http://msmvps.com/blogs/vandooren/archive/2008/10/24/installing-zune-software-without-internet-connection.aspx#1695494</link><pubDate>Mon, 15 Jun 2009 19:38:34 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1695494</guid><dc:creator>noko</dc:creator><description>&lt;p&gt;I bought a zune and found that microsoft made it so that the zune software can&amp;#39;t be run on a linux-based operating system with wine. this annoyed me, but i prepared a desktop computer with XP installed so that i can get the zune software going on it. come to find out, i needed an internet connection. i was pissed. thanks for the tutorial though. helped me out a lot!&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1695494" width="1" height="1"&gt;</description></item><item><title>re: Creating a thread safe producer consumer queue in C++ without using locks</title><link>http://msmvps.com/blogs/vandooren/archive/2007/01/05/creating-a-thread-safe-producer-consumer-queue-in-c-without-using-locks.aspx#1694963</link><pubDate>Thu, 11 Jun 2009 06:41:32 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1694963</guid><dc:creator>Sauvaget</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;To have atomic manipulation on basic types like integers (readIndex and writeIndex ) you can use (only under linux with the pthread library) the __sync_fetch_and_add() function to increment it for example.&lt;/p&gt;
&lt;p&gt;I guess you have to align your basic type.&lt;/p&gt;
&lt;p&gt;Theses atomic functions are made to be used with basic types, not structures.&lt;/p&gt;
&lt;p&gt;Nicolas.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1694963" width="1" height="1"&gt;</description></item><item><title>re: Creating a thread safe producer consumer queue in C++ without using locks</title><link>http://msmvps.com/blogs/vandooren/archive/2007/01/05/creating-a-thread-safe-producer-consumer-queue-in-c-without-using-locks.aspx#1694127</link><pubDate>Fri, 05 Jun 2009 10:21:02 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1694127</guid><dc:creator>Angelovic</dc:creator><description>&lt;p&gt;Hi Bruno,&lt;/p&gt;
&lt;p&gt;thank you a lot for this useful article.&lt;/p&gt;
&lt;p&gt;I&amp;#39;d like to ask you for an expert advice :-) &amp;nbsp;since I&amp;#39;m not sure about 1 thing. I was considering why elements in the queue need to be volatile.&lt;/p&gt;
&lt;p&gt;Proper instruction ordering is still ensured even if queue is not volatile: since m_Read and m_Write are volatile, and they have proper Acquire/Release semantics - the compiler will not reorder memory instructions and so flag is always set after the queue has really been updated.&lt;/p&gt;
&lt;p&gt;So it appears to me that the only important reason why the queue is volatile is when there are multiple processors, each one having its own cache. That way reads/writes to the queue are immediately reflected in the shared memory, am I right ?&lt;/p&gt;
&lt;p&gt;I&amp;#39;m asking because type T in my case is a class which is not under my control, and compiler insists on having operator= for that class defined as volatile.&lt;/p&gt;
&lt;p&gt;And one more question: If I&amp;#39;m right with the above presumption, then even if I do use locks to synchronize access to the queue, it still needs to be volatile to work in multi-processor enviroments. Is this correct... ?&lt;/p&gt;
&lt;p&gt;I thank you in advance for your reply,&lt;/p&gt;
&lt;p&gt;S. Angelovic&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1694127" width="1" height="1"&gt;</description></item><item><title>re: My 2 new kitchen knives</title><link>http://msmvps.com/blogs/vandooren/archive/2008/10/20/buying-2-new-kitchen-knives.aspx#1688662</link><pubDate>Sat, 18 Apr 2009 18:34:18 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1688662</guid><dc:creator>Vic</dc:creator><description>&lt;p&gt;Wusthof are excellent choice for kitchen knives, there are many types of Wusthof knife. If you got the right type to cut meat, then Wusthof will be better choice than The Kai. Yes its true there are saying that japan knives are sharper than any other knives in the world, but nowadays choice of sharp knives also available from different brand.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1688662" width="1" height="1"&gt;</description></item><item><title>re: Scheduled task would not run</title><link>http://msmvps.com/blogs/vandooren/archive/2009/02/25/scheduled-task-would-not-run.aspx#1687776</link><pubDate>Wed, 15 Apr 2009 12:39:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1687776</guid><dc:creator>vanDooren</dc:creator><description>&lt;p&gt;In the scheduled task properties you can specify that the task has to be aborted if it runs for longer than x time. And after that it can be restarted.&lt;/p&gt;
&lt;p&gt;Bear in mind that IF the task is aborted, any processes started with it are NOT aborted.&lt;/p&gt;
&lt;p&gt;In some cases, the first thing my task does is to kill all processes normally associated with that task to avoid problems. I have one task that starts Excel to produce a report via some macros. And sometimes it fails.&lt;/p&gt;
&lt;p&gt;To avoid problems, it kills all Excel processes and instances of teh ActiveX servers that are running.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1687776" width="1" height="1"&gt;</description></item><item><title>re: Scheduled task would not run</title><link>http://msmvps.com/blogs/vandooren/archive/2009/02/25/scheduled-task-would-not-run.aspx#1686662</link><pubDate>Fri, 10 Apr 2009 15:28:06 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1686662</guid><dc:creator>Tom</dc:creator><description>&lt;p&gt;What happens if the Task is already running when the Scheduler calls it again. &amp;nbsp;Is there a configuration setting that allows you to stop the current or delay the new task until the previous one finishes, etc.?&lt;/p&gt;
&lt;p&gt;I had the same issue as you and used a program called IsUsedBy mstsoftware.com to determine what program is using the Task. &amp;nbsp;It showed me I had 17 calls to the program that had been abandoned. &amp;nbsp;A reboot would have fixed mine as well but I would not have known.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1686662" width="1" height="1"&gt;</description></item><item><title>re: Practical ATL: Understanding the class object</title><link>http://msmvps.com/blogs/vandooren/archive/2009/02/10/practical-atl-understanding-the-class-object.aspx#1686223</link><pubDate>Thu, 09 Apr 2009 11:30:02 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1686223</guid><dc:creator>glass</dc:creator><description>&lt;p&gt;So good article!I have kown lot of &amp;nbsp;detals about COM,Thanks very much! I think I will read more of your blog articles in the feature !&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1686223" width="1" height="1"&gt;</description></item><item><title>re: Good riddance to /clr:oldSyntax</title><link>http://msmvps.com/blogs/vandooren/archive/2006/11/13/calling-labview-vis-through-c-style-callback-function-pointers.aspx#1678467</link><pubDate>Mon, 16 Mar 2009 22:19:17 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1678467</guid><dc:creator>vanDooren</dc:creator><description>&lt;p&gt;There are 2 ways that spring to mind. The first is that /clr:oldSyntax is configured under configuration properties -&amp;gt;general-&amp;gt;Common Language Runtime Support which could still be set to &amp;#39;Use common language, old syntax.&lt;/p&gt;
&lt;p&gt;The other place where it could be specified would be under configuration properties -&amp;gt;c++-&amp;gt;command line&lt;/p&gt;
&lt;p&gt;But my money would be on the first option.&lt;/p&gt;
&lt;p&gt;NOTE: this can also be specified on a file by file basis.&lt;/p&gt;
&lt;p&gt;So first check the project settings. if you don&amp;#39;t find it there, have a look for which file generats this problem, and then look at the file settings.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1678467" width="1" height="1"&gt;</description></item><item><title>re: Good riddance to /clr:oldSyntax</title><link>http://msmvps.com/blogs/vandooren/archive/2006/11/13/calling-labview-vis-through-c-style-callback-function-pointers.aspx#1678400</link><pubDate>Mon, 16 Mar 2009 18:15:19 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1678400</guid><dc:creator>Dilip</dc:creator><description>&lt;p&gt;I am a little late to this party but how in the God&amp;#39;s name do I remove this compiler option from the set of compiler switches? &amp;nbsp;I have migrated my project to VS 2008 and I get that dreaded D9035 warning which says that the /clr:oldSyntax option will be deprecated in a future release. &amp;nbsp;Ok I get that but how do I remove it?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1678400" width="1" height="1"&gt;</description></item><item><title>re: Preventing a DLL from being unloaded by the app that uses it</title><link>http://msmvps.com/blogs/vandooren/archive/2006/10/09/Preventing-a-DLL-from-being-unloaded-by-the-app-that-uses-it.aspx#1675930</link><pubDate>Fri, 06 Mar 2009 04:53:41 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1675930</guid><dc:creator>Frank Young</dc:creator><description>&lt;p&gt;By the way, I believe your idea of injecting second dll to the remote process and having that dll unhook the first one would definitely work.&lt;/p&gt;
&lt;p&gt;And it seems easier. I try my current method is just out of curiosity.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1675930" width="1" height="1"&gt;</description></item><item><title>re: Preventing a DLL from being unloaded by the app that uses it</title><link>http://msmvps.com/blogs/vandooren/archive/2006/10/09/Preventing-a-DLL-from-being-unloaded-by-the-app-that-uses-it.aspx#1675928</link><pubDate>Fri, 06 Mar 2009 04:41:38 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1675928</guid><dc:creator>Frank Young</dc:creator><description>&lt;p&gt;Hi vanDooren,&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;
&lt;p&gt;It turns out I have to inject the binary executable code to the remote thread and have that code to call the GetProcAddress(&amp;quot;MyExportedFunc&amp;quot;) to obtain the function pointer.&lt;/p&gt;
&lt;p&gt;A weird thing is: when I WriteProcessMemory to copy the &amp;amp;LocalThread to RemoteAddress, the copied binary isn&amp;#39;t exactly the same as the original code. There are 4bit error in the 5th byte&lt;/p&gt;
&lt;p&gt;I verify this by reading the runtime memory address in the processes, respectively. And I also memcpy the binary code to a local buffer and the same error happens.&lt;/p&gt;
&lt;p&gt;I guess this may be due to Windows Vista has some protection on reading data from the code segment.&lt;/p&gt;
&lt;p&gt;I work around this by declaring a const char[] to maintain the machine code I want to inject and now everything sees ok.&lt;/p&gt;
&lt;p&gt;Thank you for your help and hope my experience can be of any use.&lt;/p&gt;
&lt;p&gt;Frank&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1675928" width="1" height="1"&gt;</description></item><item><title>re: Preventing a DLL from being unloaded by the app that uses it</title><link>http://msmvps.com/blogs/vandooren/archive/2006/10/09/Preventing-a-DLL-from-being-unloaded-by-the-app-that-uses-it.aspx#1675662</link><pubDate>Wed, 04 Mar 2009 18:33:44 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1675662</guid><dc:creator>vanDooren</dc:creator><description>&lt;p&gt;what you could do is to export a function in your dll that will perform the unhook function. the hook handle will be stored in a global variable in your dll.&lt;/p&gt;
&lt;p&gt;then a second application will inject a thread in the target process that will call that dll function. this should unhook the hook.&lt;/p&gt;
&lt;p&gt;to be honest, I never tried this, so there might be a caveat or 2. one thing that could be necessary is to store the hook handle in a shared data segment (using declspec). But if the unhook function executes in the context of the target process, this shouldn&amp;#39;t be necessary.&lt;/p&gt;
&lt;p&gt;Another thing that could be necessary is to have your thread function call LoadLibary after it is injected to load the dll, and then use getprocaddress to load the function pointer for the DLL function that will perform the unhook.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1675662" width="1" height="1"&gt;</description></item><item><title>re: Preventing a DLL from being unloaded by the app that uses it</title><link>http://msmvps.com/blogs/vandooren/archive/2006/10/09/Preventing-a-DLL-from-being-unloaded-by-the-app-that-uses-it.aspx#1675505</link><pubDate>Wed, 04 Mar 2009 04:37:22 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1675505</guid><dc:creator>Frank Young</dc:creator><description>&lt;p&gt;Hi vanDooren,&lt;/p&gt;
&lt;p&gt;Your description here is valuable to me since I&amp;#39;m having trouble to unload the dll that contains some Detours code. And Your solution 3) on Dec. 17 exactly matches my requirement.&lt;/p&gt;
&lt;p&gt;However, I don&amp;#39;t know how to obtain the function pointer in my DLL module which unhooks the system calls. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Existing sample codes I found leverage GetProcAddress() to obtain a well-known function pointer (which is assumed to be the same across different processes) in Kernel32.dll (like LoadLibrary). But the function in my DLL is not shared across process. Even it&amp;#39;s shared, different process may load it onto different memory address.&lt;/p&gt;
&lt;p&gt;Are you aware of any solution to this?&lt;/p&gt;
&lt;p&gt;Thank you very much!&lt;/p&gt;
&lt;p&gt;Frank&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1675505" width="1" height="1"&gt;</description></item><item><title>re: Scheduled task would not run</title><link>http://msmvps.com/blogs/vandooren/archive/2009/02/25/scheduled-task-would-not-run.aspx#1675402</link><pubDate>Tue, 03 Mar 2009 20:46:43 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1675402</guid><dc:creator>Andy</dc:creator><description>&lt;p&gt;Thanks! &amp;nbsp;This helped me solve a problem i was having.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1675402" width="1" height="1"&gt;</description></item><item><title>re: Practical ATL: Implementing an enumerator object</title><link>http://msmvps.com/blogs/vandooren/archive/2009/01/21/practical-atl-implementing-an-enumerator-object.aspx#1675316</link><pubDate>Mon, 02 Mar 2009 23:25:10 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1675316</guid><dc:creator>vanDooren</dc:creator><description>&lt;p&gt;Sorry we were talking about 2 different things.&lt;/p&gt;
&lt;p&gt;I just read that section in the C++PL, and it says what you mean, but that is not why I had the NULL. I should perhaps rephrase that part.&lt;/p&gt;
&lt;p&gt;I know I can simply do something like end=begin + size, for example, and the pointer will work for the sake of arithmetic.&lt;/p&gt;
&lt;p&gt;But there is nothing there to dereference. I misinterpreted your earlier remark to mean that you thought that C++ inserted a dummy element that could be dereferenced. My bad.&lt;/p&gt;
&lt;p&gt;Anyway, yes I know the address value will be valid.&lt;/p&gt;
&lt;p&gt;But I have learned the hard way never to pass pointers to other components without making sure that there is something valid there.&lt;/p&gt;
&lt;p&gt;I have worked with enough programmers who had problems with the concepts that pointers had to point TO something. I learned not to give out pointers on the understandig that it was for arithmetic only.&lt;/p&gt;
&lt;p&gt;Yes, they should have known these things. But it&amp;#39;s not like I had any say in whom I worked with, since I was the outside consultant.&lt;/p&gt;
&lt;p&gt;And if their component causes trouble, they are to blame. But unfortunately, I was the lead programmer who had to fly to France to figure out why this very expensive satelite testing system was crashing regularly.&lt;/p&gt;
&lt;p&gt;So learned to apply &amp;#39;defensive driving&amp;#39; skills to programming. Adding the NULL doesn&amp;#39;t have any significant cost, but if someone else screws up by making a simple mistake, using my pointer, it doesn&amp;#39;t take down the system.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1675316" width="1" height="1"&gt;</description></item><item><title>re: Practical ATL: Implementing an enumerator object</title><link>http://msmvps.com/blogs/vandooren/archive/2009/01/21/practical-atl-implementing-an-enumerator-object.aspx#1675246</link><pubDate>Mon, 02 Mar 2009 15:54:19 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1675246</guid><dc:creator>Daniel Anderson</dc:creator><description>&lt;p&gt;you can doubt as much as you can, read TC++PL 3rd edition, chapter 5, section 3 state:&lt;/p&gt;
&lt;p&gt;&amp;quot;Taking a pointer to the element one beyond the end of an array is guaranteed to work.&amp;quot;&lt;/p&gt;
&lt;p&gt;see also 2.7.2&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve often seen this error in C++ samples from microsoft. which probably explains why this error is so frequent.&lt;/p&gt;
&lt;p&gt;Of course dereferencing that pointer one past the last element is a big no-no.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1675246" width="1" height="1"&gt;</description></item><item><title>re: Creating a thread safe producer consumer queue in C++ without using locks</title><link>http://msmvps.com/blogs/vandooren/archive/2007/01/05/creating-a-thread-safe-producer-consumer-queue-in-c-without-using-locks.aspx#1674804</link><pubDate>Sat, 28 Feb 2009 10:34:30 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1674804</guid><dc:creator>vanDooren</dc:creator><description>&lt;p&gt;Aieee....&lt;/p&gt;
&lt;p&gt;Yes you are right. I know this is true. The default compiler settings of gcc and vc make this a non issue in normal circumstances, but you are right that changing the default packing size can cause serious problems if the integers are not naturally alligned.&lt;/p&gt;
&lt;p&gt;I should have though to mention it. I&amp;#39;ll see if I can update my article. Thanks.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1674804" width="1" height="1"&gt;</description></item><item><title>re: Practical ATL: Implementing an enumerator object</title><link>http://msmvps.com/blogs/vandooren/archive/2009/01/21/practical-atl-implementing-an-enumerator-object.aspx#1674801</link><pubDate>Sat, 28 Feb 2009 10:20:14 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1674801</guid><dc:creator>vanDooren</dc:creator><description>&lt;p&gt;I&amp;#39;ll check it out to see if I can find a mention of that in the C++ reference. I doubt this is true, because I would have noticed it in e.g the size of a struct with embedded arrays. It could cause other problems as well (the dummy unconstructed elements)&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll post a follow up with the answer, regardless if I am right or wrong. Thanks for commenting&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1674801" width="1" height="1"&gt;</description></item><item><title>re: More Terminal Server License Server  weirdness</title><link>http://msmvps.com/blogs/vandooren/archive/2009/01/06/more-terminal-server-license-server-weirdness.aspx#1674676</link><pubDate>Sat, 28 Feb 2009 01:14:54 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1674676</guid><dc:creator>Allen</dc:creator><description>&lt;p&gt;I had this same event happen.&lt;/p&gt;
&lt;p&gt;I was running Server 2008 for 120 days and when the terminal license server expired, it was offline for a day or so. I reset the actual server and now I have been running Terminal License Free for about 3 months.&lt;/p&gt;
&lt;p&gt;I have purchased 20 extra license just in case it flips out on one day and tries connecting to the terminal licensing server, but for now, its alll good.&lt;/p&gt;
&lt;p&gt;Strange.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1674676" width="1" height="1"&gt;</description></item></channel></rss>