Link-time code generation invalidates a lot of classical assumptions about...
The discussion of DLL imports and exports from a few years back relied heavily on what I called the classical model of linking. Even though modern linkers can be quite non-classical, they do what they...
View ArticleImproving the performance of CF_HDROP by providing file attribute information
The CF_HDROP clipboard format is still quite popular, despite its limitation of being limited to files. You can't use it to represent virtual content, for example. For all of you still using CF_HDROP,...
View ArticleMicrospeak: Brownbag
Remember, Microspeak is not merely for jargon exclusive to Microsoft, but it's jargon that you need to know. The term brownbag (always one word, accent on the first syllable) refers to a presentation...
View ArticleWhy do network servers sometimes show up as a Recycle Bin Location?
A customer wanted to know why some of their users showed network servers among the locations shown in the Recycle Bin property sheet. Answer: Because those users are using Folder Redirection. In...
View ArticleCan we continue to call FindNextFile() with the same handle that returned an...
A customer wanted to know whether it was okay to call FindNextFile with the same handle that returned an error last time. In other words, consider the following sequence of events: h =...
View ArticleNon-classical processor behavior: How doing something can be faster than not...
Consider the following program: #include <windows.h> #include <stdlib.h> #include <stdlib.h> #include <stdio.h> int array[10000]; int countthem(int boundary) { int count = 0;...
View ArticleEnumerating bit strings with a specific number of bits set (binomial...
Today's Little Program prints all bit strings of length n subject to the requirement that the string have exactly k 1-bits. For example, all bit strings of length 4 with 2 bits set are 0011, 0101,...
View ArticleWho would ever write a multi-threaded GUI program?
During the development of Windows 95, the user interface team discovered that a component provided by another team didn't work well under multi-threaded conditions. It was documented that the...
View Article10 is the new 6
While it may no longer be true that everything at Microsoft is built using various flavors of Visual C++ 5.0, 6.0, and 7.0, there is still a kernel of truth in it: A lot of customers are still using...
View ArticleWhat happened to the Shut Down menu in classic Task Manager?
The great thing about open comments is that anybody can use them to introduce their favorite gripe as long as it shares at least four letters of the alphabet in common with the putative topic of the...
View ArticleOnce you go input-idle, your application is deemed ready to receive DDE messages
Feel free to stop using DDE. There was one customer who confessed that they were still using DDE, and they asked for help debugging a DDE problem. They found that sometimes, when their application was...
View ArticleAdding a sound to the Alt+Tab window
Today's Little Program plays a sound when the Alt+Tab window appears and disappears. #define STRICT #include <windows.h> #include <mmsystem.h> HWND g_hwndAltTab = nullptr; void CALLBACK...
View ArticleFinding the "Run as administrator" command, a game of hide-and-seek
Back in the old days, the "Run as administrator" menu option was placed on the extended menu. To get the extended menu, you hold the shift key when you right-click on the shortcut. In Windows 7, the...
View ArticleThe social interactions in two preschool classes, in graphic form
Each preschooler at my daughter's school was asked a few simple questions, and the answers were printed in the yearbook. Among other things, the preschoolers were asked to complete the sentence, "I...
View ArticleGetting past the question to solving the problem, episode 2014.06.25
Today is another example where the right thing to do is not to answer the customer's question but rather to solve the customer's problem. A customer liaison asked, "What do the registry keys X and Y...
View ArticleFor Honor, For Excellence, For Pizza
Hacker News member citizenlow recalls the time I went over after hours to help out the Money team debug a nasty kernel issue. They were running into mysterious crashes during their stress testing and...
View ArticleUndefined behavior can result in time travel (among other things, but time...
The C and C++ languages are notorious for the very large section of the map labeled here be dragons, or more formally, undefined behavior. When undefined behavior is invoked, anything is possible. For...
View ArticleGetting the location of the Close button in the title bar, from Windows 2000...
Today's Little Program locates the × button in the corner of the window and displays a balloon tip pointing at it. We did this some time ago with the help of the WM_GETTITLEBARINFOEX message,...
View Article2014 mid-year link clearance
Another round of the semi-annual link clearance. Academic researchers summarizes their thesis in one snarky sentence on lol my thesis. Mine would be "Tesselation in 3D is much harder than 2D, and you...
View ArticleWhat is the default size of the Recycle Bin, and how can an administrator...
A customer was setting up a file server to which they intended to redirect all their employees' documents. They were concerned about the amount of disk space used by all the Recycle Bins on that...
View Article