The Curious Engineer

The Old New Thing

2013–2016

1,204 posts

← 2009–2012 2017–2021 →

2016 276

December 2016

  1. 2016 year-end link clearance
  2. The invisible work of preparing PC BIOSes for the year 2000
  3. The evolution of the text size limits related to the standard static control
  4. The case of the four unlabeled toggle buttons
  5. Why don’t I get properly translated program output after installing the corresponding language pack?
  6. Wireless AC is, unfortunately, not what it sounds like
  7. The mother lode of well-known SIDs
  8. Another pattern for using the InitOnce functions
  9. What is the maximum numeric value for a socket, and what is the maximum number of sockets a Windows program can create?
  10. If you ask robocopy to destroy the destination, then it will destroy the destination
  11. Why can’t VarDateFromStr parse back a Hungarian date that was generated by VarBstrFromDate?
  12. My colleague who thought he held the unofficial record for consecutive months of skiing
  13. How bad is it to delay closing a thread handle for a long time after the thread has exited?
  14. Dubious security vulnerability: Discovering the salt
  15. Can a server-side Web application trigger the creation of thumbs.db files?
  16. Why does tapping the Alt key cause my owner-draw static control to repaint?
  17. Answers to a customer’s questions about memory and DLLs
  18. What is this race condition that the OpenMutex documentation is trying to warn me about?
  19. Why don’t I get a broken pipe when the child process terminates?
  20. How can I reset a PC if I forgot the administrator password?
  21. The case of the unexpected ERROR_ACCESS_DENIED when calling MapViewOfFile
  22. Why do I get a _BLOCK_TYPE_IS_VALID debug assertion failure when I try to delete a WIC pixel buffer?
  23. What is __wchar_t (with the leading double underscores) and why am I getting errors about it?

November 2016

  1. What could be happening in Safe Mode to make my heap corruption bug go away?
  2. The case of the volume label that doesn’t change
  3. If I simply want to create a registry key but don’t intend to do anything else with it, what security access mask should I ask for?
  4. The Gävle Goat is now 50 years old
  5. Lock free many-producer/single-consumer patterns: A work queue of distinct events, FIFO
  6. Turkeys Away: An Oral History
  7. Lock free many-producer/single-consumer patterns: A work queue of distinct events, order not important
  8. Lock free many-producer/single-consumer patterns: A work queue of identical non-coalescable events
  9. Lock free many-producer/single-consumer patterns: A work queue where the last one wins
  10. Lock free many-producer/single-consumer patterns: A work queue with task coalescing
  11. Why does calling SetForegroundWindow immediately followed by GetForegroundWindow not return the same window back?
  12. Is RunAsInvoker a secret, even higher UAC setting?
  13. When you decide to travel at the speed of light, you have to accept the consequences
  14. The speed of light is unlikely to improve: consequences
  15. What does the shield over a WiFi network mean?
  16. The long-awaited Redmond Costco opens today, and some useless Costco trivia
  17. If you don’t blow up a debug session every so often, you’re not debugging hard enough
  18. Under what circumstances will GetProcessTimes report that a process exited before it was created?
  19. Zeroing out my memory does cause them to page in faster after all
  20. Why do my file creation, access, or modified time disappear if I set it to midnight on January 1, 1980?
  21. How do I programmatically add a folder to my Documents library?
  22. Why is my crash dump file filled with 0xAAAAAAAA?
  23. Solving the problem instead of answering the question: How do I get this RichEdit control to look just like a static control?
  24. What happens if you call RevertToSelf when not impersonating?
  25. Windows file system compression had to be dumbed down

October 2016

  1. This processor has no stack (insert spooky laughter)
  2. Why does SetThreadPriority sometimes take a really long time?
  3. How to electrify your own fence: ProcessStrictHandleCheckPolicy
  4. Why does the documentation for ReadFile say that the lpNumberOfBytesRead parameter is optional when it is sometimes mandatory?
  5. Microspeak: lift up
  6. Why is Identical COMDAT Folding called Identical COMDAT Folding?
  7. Is there anything better than GetThreadTimes for obtaining per-thread CPU usage information?
  8. Using DuplicateHandle to help manage the ownership of kernel handles
  9. Three short questions about LogonUser (with answers!)
  10. Was it intentional that the Media Control Interface has the same acronym as a telecommunications company?
  11. The Windows 8.1 ship-it awards were yellow
  12. How can I force memory to be allocated above the 4GB boundary (for debugging purposes) on Windows 7?
  13. Dubious security vulnerability: Attacking the application directory in order to fool yourself?
  14. Nasty gotcha: The inadvertently named resource
  15. Oh, you’re with them?
  16. A Little Program to fix one particular type of mojibake
  17. How can I get the default code page for a locale?
  18. How do I cancel autoplay from a wizard page?
  19. Why doesn’t my custom-drawn trackbar get a paint notification when the position changes from 1 to 0?
  20. Wow, that’s amazing. You got Picabo Street and Alberto Tomba to autograph the same poster!
  21. You can register your child’s name in any language providing you use any Unicode character

September 2016

  1. When are global objects constructed and destructed by Visual C++?, redux
  2. The lackey catastrophe
  3. When can you free the memory backing the HSTRING you created with WindowsCreateStringReference?
  4. What’s up with Windows developer tools being written in perl?
  5. It says that I should use USB usage page 1 and usage 6 to get raw keyboard data, but what if I have a PS/2 keyboard?
  6. When you break into a user-mode application in the kernel debugger, how do you connect a user-mode debugger?
  7. Dither me this
  8. The case of the system() call that returned before finishing
  9. The social skills of a thermonuclear device: Ruining a conversation
  10. It’s an unfortunate choice of data type for the file system redirection cookie
  11. Does the page table entry really have a sad-face for pages that are reserved?
  12. Decoding the parameters of a thrown C++ exception (0xE06D7363), revisited
  13. What exactly does the msWindowLength parameter to SetThreadpoolTimer mean?
  14. What are these ghost drivers named dump_diskdump.sys and other dump_*.sys that didn’t come from any file?
  15. How can I have a window that rejects activation but still receives pointer input?
  16. How can I get the memory manager to prefetch bigger chunks of data from my memory-mapped file?
  17. How can I change a registry key from within the debugger?
  18. If I zero out my memory pages, does that make them page in faster?
  19. How to get people who installed a leaked build to stop using that build?
  20. The complicated engineering behind an ice cream social
  21. A customer question about shortcuts that don’t have a target path
  22. Discardability in drivers has nothing to do with discardability in user-mode (which has nothing to do with discardability, really)

August 2016

  1. The ship date predictor: Redux
  2. What is the NTDiskQuotaSidCache.ndx file for?
  3. Detecting what language or script a run of text is written in, redux
  4. Spurious wakes, race conditions, and bogus FIFO claims: A peek behind the curtain of WaitOnAddress
  5. Soarin’ over California + Seattle = Wings over Washington
  6. Implementing a critical section in terms of WaitOnAddress
  7. The International Fair Play Committee announces the Rio 2016 Fair Play Awards, but spends most of the time congratulating themselves
  8. Implementing a synchronization barrier in terms of WaitOnAddress
  9. WaitOnAddress lets you create a synchronization object out of any data variable, even a byte
  10. Adventures in application compatibility: The bogus memory calculation
  11. Is it okay to call TryAcquireSRWLock from a thread that has already acquired the lock?
  12. If I have a modeless dialog box with custom accelerators, which should I call first: IsDialogMessage or TranslateAccelerator
  13. On installing a custom unhandled exception filter and intentionally raising an exception to get its attention
  14. There are really only two effectively distinct settings for the UAC slider
  15. Things I learned from my recent trip to Vancouver
  16. How can I debug a function that has been subjected to COMDAT folding?
  17. On the importance of making sure WaitForInputIdle doesn’t think you’re idle, episode 2
  18. I’m speaking at the brand new Microsoft Canada Excellence Centre tomorrow
  19. On the importance of making sure WaitForInputIdle doesn’t think you’re idle, episode 1
  20. How to create a file mapping that allows others to open the file in exclusive mode?
  21. What is a ZDP, and what’s so Z about it?
  22. Why didn’t Windows 95 suck the brains out of the XMS driver?
  23. The case of the hung Explorer window
  24. The origin story of the Microsoft ninjacat
  25. Using #pragma detect_mismatch to help catch ODR violations
  26. Why don’t I get a file deletion confirmation warning from Explorer when I undo a copy?
  27. How do I disable edge gestures when my window is full screen?

July 2016

  1. Further discussion of the synchronization barrier
  2. How can I check whether a parameter is a pointer to a stack variable?
  3. Why does setting the horizontal scroll bar range for the first time also set the vertical range, and vice versa?
  4. Why does sharing a folder in Explorer grant full permission on the share to everyone?
  5. Is there a Windows API for IntelliSense?
  6. What is the significance of changing the registration for CLSIDs to point to a private copy of MSXML3?
  7. If you don’t want the changes to be permanent, the don’t pass the flag that says that you want the changes to be permanent
  8. Microspeak: Tick-tock
  9. Having trouble with Windows Hello face recognition? Try a Jedi mind trick!
  10. When I tell Windows to compress a file, the compression is far worse than I get if I ask WinZip to compress the file; why is that?
  11. Trying to recover from enhancement software that generates fake input incorrectly
  12. How can I preallocate disk space for a file without it being reported as readable?
  13. What happens if I have multiple asynchronous ReadDirectoryChangesW calls outstanding on the same directory handle?
  14. Why does the Windows 8 sign-in animation slide upward?
  15. Where can I get the glossary of Microsoft’s standard translations for computer terms?
  16. It rather involved being on the other side of this airtight hatchway: Elevating the elevator
  17. Even if you modify a high contrast theme so it isn’t quite so high-contrast, it’s still a high contrast theme
  18. Mathematical term or Hollywood movie?
  19. How can I detect whether my PC is in tablet mode?
  20. Observing the bizarre rumor mill from the other side
  21. Attention all humorless technaheads
  22. How exactly are page tables allocated on demand for large reserved regions?

June 2016

  1. 2016 mid-year link clearance
  2. How can I detect whether the Game Bar is covering my window?
  3. Why does the Windows calculator generate tiny errors when calculating the square root of a perfect square?
  4. If I have multiple attached keyboards, how can I read input from each one individually?
  5. Why is my message queue full of WM_TIMER messages?
  6. Why does the x64 calling convention reserve four home spaces for parameters even for functions that take fewer than four parameters?
  7. Using the Windows::Globalization::Calendar object from a Win32 app
  8. How to recognize DNS zone scavenging availability timestamps from quite a long way away
  9. Peeking inside an IShellItem to see what it’s made of
  10. How can I update my WinForms app to behave better at high DPI, or at normal DPI on very large screens?
  11. Why do I get a spurious WM_MOUSEMOVE message whenever Resource Manager is running?
  12. Raymond’s complete guide to HSTRING semantics
  13. Is there a way to change the minimum size for large pages?
  14. What’s so special about the number 64 when it comes to TLS slots?
  15. Investigating an app compat problem: Part 3: Paydirt
  16. Investigating an app compat problem: Part 2: Digging in
  17. Investigating an app compat problem: Part 1: The initial plunge
  18. I finally finished this awesome game called Photoshop, let me send you a video
  19. If I create multiple selectors each of size 4GB, do I get a combined address space larger than 4GB?
  20. Why does SetFileValidData fail even though I enabled the SE_MANAGE_VOLUME_NAME privilege?
  21. How can I tell whether a file is on a removable drive, a fixed drive, or a remote drive?
  22. Why does SHGetKnownFolderPath fail when impersonating?

May 2016

  1. The chain reaction started when a customer’s line of business application doesn’t work with UNCs
  2. Printing the name and position of the focused item on the desktop
  3. Diagnosing a crash in unloaded_something.dll
  4. Debugging session: Which of the many things happening in this single line of code is the one that crashed?
  5. How can I generate a stack backtrace that is independent of ASLR?
  6. How do I create a directory where people can create subdirectories but cannot mess with those created by other users?
  7. Security through lying
  8. How long do I have to keep the SECURITY_ATTRIBUTES and SECURITY_DESCRIPTOR structures valid after using them to create a file?
  9. Why did the friendly name for the Network Service account change?
  10. Why doesn’t RevertToSelf undo the most recent SetThreadToken?
  11. But Australian Telecom loves it!
  12. Wow, that article sounds an awful lot like something I would have writt… hey, wait a second
  13. Is Metro on fire today?
  14. Why am I being told that my message ID is too large?
  15. How come a duplicated token doesn’t behave identically to the original?
  16. What’s the difference between duplicating the handle to a token and duplicating a token?
  17. How can my CPU be running faster than the maximum speed?
  18. Taking shortcuts when following driving instructions doesn’t always pay off
  19. Is it okay to acquire an SRWLOCK recursively? (And why not?)
  20. How can I write an unkillable program, redux
  21. How can I detect whether the user’s keyboard has a Break key?
  22. Getting MS-DOS games to run on Windows 95: Not enough XMS handles
  23. Does Mulan speak Chinese?
  24. Startup apps start up when I tell them

April 2016

  1. What does QueryThreadCycleTime actually count?
  2. Is there an API for redrawing a specific window from another application?
  3. How does Explorer calculate “Size on disk”?
  4. Why can’t I pin a document to the taskbar?
  5. Getting MS-DOS games to run on Windows 95: Too much EMM memory
  6. Should I be concerned that WaitForSingleObject is taking a large percentage of my performance test’s execution time
  7. It rather involved being on the other side of this airtight hatchway: Invalid parameters from one security level crashing code at the same security level (doesn’t get old)
  8. Why are mouse wheel messages delivered to the focus window instead of the window under the mouse?
  9. Why is there a screen that says “It is now safe to turn off your computer”?
  10. Getting MS-DOS games to run on Windows 95: Too much memory!
  11. What happens if I call EnumPropsEx while another thread is mutating the properties?
  12. Even though the target audience may be programmers, it can still be seen by users
  13. If relocated DLLs cannot share pages, then doesn’t ASLR cause all pages to be non-shared?
  14. Inherited access control entries are captured when the child object is created
  15. Getting MS-DOS games to run on Windows 95: The interrupt flag
  16. Why does FindExecutable behave erratically for files with extensions longer than three characters? (And what can you do about it?)
  17. Why can’t the debugger call GetFinalPathNameByHandle via .call?
  18. How does GetFinalPathNameByHandle choose the name if there are multiple names due to hard links?
  19. Dubious security vulnerability: Disk space consumption
  20. Getting MS-DOS games to run on Windows 95: Working around the iretd problem
  21. Is it really a prank if the victim doesn’t realize there’s a prank going on?

March 2016

  1. Why are there four functions for parsing strings into GUIDs, and why are they in three different DLLs?
  2. The numerology of the build, redux
  3. Why doesn’t a program show up on the Start menu’s Recently Used Programs list if I just used it to open a document?
  4. Getting MS-DOS games to run on Windows 95: Virtual memory
  5. Fixing a floating point exception when operating on NaN
  6. Why does PathIsUNC say that paths that begin with \\?\ are not UNCs?
  7. Don’t be helpless: You can find information too, if you try (episode 3)
  8. How can I find out how much disk space the WinSxS folder is really occupying?
  9. Were there specific criteria for making a game work at all costs vs. leaving it be if it had problems too weird to debug?
  10. What are the consequences of reserving a huge amount of memory, most of which is never committed?
  11. Why not use weak linking to solve the retargetable library problem?
  12. Randomly-generated passwords still have to be legal strings
  13. Why doesn’t this registry hack for disabling autorun work?
  14. Adventures in UI Automation: Scraping the Driver Files dialog
  15. On week numbering in the United States
  16. Could there be any problems with calling GetModuleFileNameEx on your own process?
  17. String comparisons against program output is not usually the best solution
  18. If what you’re doing is undocumented, it’s not guaranteed to keep working, and your promise not to complain doesn’t really hold water
  19. On word breaking in Chinese and Japanese
  20. Why not auto convert week-based time zone information to date-based?
  21. Are SetProp and RemoveProp thread-safe?
  22. How can I get the name of the function that crashed given just a module name and offset?
  23. You kids are so cute, thinking you invented email

February 2016

  1. The 2016/2017 Seattle Symphony subscription season at a glance
  2. How can I get the original shortcut target path with environment variables unexpanded?
  3. Changing a loop into a promise or task chain
  4. How do I preload a chunk of memory into a memory-mapped file?
  5. A static_cast is not always just a pointer adjustment
  6. Why does the date disappear from my taskbar, sometimes?
  7. Finding the shortest binary string in a given interval
  8. When I try to calculate a performance counter manually, the answer is off by a factor of 100
  9. Nasty gotcha: VarCmp vs VariantCompare
  10. Don’t just grab the foreground window and host UI on it, redux
  11. I have difficulty following Swedish when spoken at conversational speed, and I count on being able to read the subtitles in order to catch up
  12. If I select multiple files of different types, why does the Open verb disappear?
  13. How can I get the name for the user’s profile directory that is shown in Explorer?
  14. We batched up our COM requests and return a single stream of results, but the performance is still slow
  15. Debugging walkthrough: Diagnosing an NX exception
  16. If somebody creates or deletes a file in a directory while I am enumerating its contents, what happens?
  17. Hey, you work for Microsoft. Do you know…?
  18. How can I get the canonical name for a known folder?
  19. The overly complicated rules for American football
  20. If I issue a second overlapped I/O operation without waiting for the first one to complete, are they still guaranteed to complete in order?
  21. How do I prevent a child process from displaying the Windows Error Reporting dialog?
  22. Localization gotcha: The RTL question mark
  23. What happened to the ability to use … (three dots) to refer to the grandparent directory?
  24. A brief tour of the console alias functions

January 2016

  1. Does the thread pool have different handle access privileges? Why am I getting ERROR_INVALID_HANDLE?
  2. Why is getting the HP_HASHSIZE so weird?
  3. Why does CryptDestroyHash crash, but only sometimes?
  4. Some senior executives are afraid to provide feedback, because they know that their feedback will be given too much weight
  5. How can I tell whether my console program was launched from Explorer or from a command prompt?
  6. If I’m going to store a SID in a file, should I store the string form or the binary form?
  7. What does the /V (verify) flag to XCOPY mean, and how did it get that way?
  8. So how bad is it that I’m calling RegOpenKey instead of RegOpenKeyEx?
  9. What makes XCOPY so X?
  10. Some notes about the blog migration
  11. A puzzle involving dynamic programming, or maybe it doesn’t, episode 2
  12. What does this crash in TppRaiseHandleStatus mean?
  13. When you start talking about numbers as small as 2⁻¹²², you have to start looking more closely at the things you thought were zero
  14. My program for faking debugging demos
  15. Getting one’s paycheck from some mysterious pile of money
  16. Creating a shell extension that applies only to files with a very specific name
  17. The FILE_FLAG_DELETE_ON_CLOSE flag applies to the handle, also known as the file object, which is not the same as the file
  18. It rather involved being on the other side of this airtight hatchway: Attacking the system clock
  19. Why does the mouse cursor jump a few pixels when you right-click on the Start button?
  20. Why did Windows NT decline to support an undocumented flag to TrackPopupMenuEx?
  21. Slam City with Scottie Pippen (1995): A flashback
  22. If you want to receive a message that is broadcast to top-level windows, you need a top-level window

2015 276

December 2015

  1. 2015 year-end link clearance
  2. Why is my call to ChangeTimerQueueTimer having no effect? (And another case of looking past the question to solve the problem.)
  3. Why are Windows setup logs stored in a Panther directory? Does it have anything to do with the abandoned Panther project from the precursor to Windows 95?
  4. Determining how each Explorer window is sorted
  5. When is the correct time to call FreeLibraryWhenCallbackReturns?
  6. Why does my in-place tooltip dismiss itself as soon as it appears?
  7. Confusing gotcha: PSECURITY_DESCRIPTOR is not a pointer to a SECURITY_DESCRIPTOR
  8. Unhandled Exception: Cannot print exception string because Exception.ToString() failed.
  9. Allocating page file space without allocating RAM
  10. Are views of memory-mapped files coherent within a single process? (And how this was the wrong question.)
  11. Dubious security vulnerability: Messing with the Recycle Bin
  12. You’d think that with the name TEMP, people wouldn’t expect it to be around for a long time
  13. Great moments in forgetfulness: Does anybody have a copy of this file?
  14. Calculating integer factorials in constant time, taking advantage of overflow behavior
  15. Hasn’t the problem of updates being partially installed until the next reboot already been solved by changes in Windows?
  16. Why does OpenProcess return access denied, even if I enable debug privilege?
  17. Why doesn’t findstr use the standard regular expression library?
  18. How do I register a command on the desktop background context menu? (And how do I remove one I don’t like?)
  19. Enumerating all the programs that can launch a particular protocol
  20. Why did disabling interrupts cause Windows 95 to hang?
  21. A question about how to detect whether Windows Update needs the system to be restarted turns out to be the wrong question
  22. Hidden gotcha in the thread pool sample program on MSDN
  23. What does Ctrl+Enter mean? It depends on whom you ask

November 2015

  1. Enumerating all the programs that can open a particular file extension
  2. In order to serve you better: Charging your credit card in your home currency
  3. How can I append to a file and know where it got written, even if the file is being updated by multiple processes?
  4. The increasing urgency of a request to fill out a survey
  5. Clarifying the documentation on wildcards accepted by FindFirstFile/FindFirstFileEx
  6. We got around three
  7. Playing with synchroninzation barriers
  8. Investigating a problem constructing a security descriptor to deny thread-specific access rights to Everyone
  9. Stupid JavaScript debugging tricks: Abusing the conditional breakpoint
  10. If You Are The One: The crazy Chinese dating show
  11. Why is the StartRunNOHOMEPATH policy so very specific about what it does?
  12. The ritual of choosing your next office
  13. How can I get notified when the cursor changes?
  14. Exploring the Supercute World of Hello Kitty
  15. Diagnosing high CPU by studying profiling results, example
  16. Why is January 1 being reported as the last week of the previous year?
  17. Oh, that’s probably why I’m in the Quake credits
  18. It’s called “proofreading”, give it a shot why don’t you, episode 2
  19. I cloned a project, but the new project still groups with the old project on the taskbar
  20. Some helper functions for interlocked pointer operations
  21. Why does the access violation error message put the operation in quotation marks, redux
  22. Sometimes a function returns NULL because NULL really is the answer
  23. Changing the conditions under which ReadFile produces fewer bytes than requested
  24. Microspeak: North star
  25. How can I make my custom namespace extension get categorized correctly in My Computer?

October 2015

  1. Why does the timestamp of a file increase by up to 2 seconds when I put it in a ZIP archive, then extract it?
  2. When you open a securable object, make sure you pass the security mask you actually want (no more, no less)
  3. How do I create a wizard that contains none of the things that makes a wizard a wizard?
  4. The Redmond Reality Distortion Field: Analogies involving high-performance cars, usually Ferraris
  5. Are there any negative consequences to having a ton of files on the desktop?
  6. CoGetInterfaceAndReleaseStream does not mix with smart pointers
  7. What are the rules for CoMarshalInterface and CoUnmarshalInterface?
  8. What are the rules for CoMarshalInterThreadInterfaceInStream and CoGetInterfaceAndReleaseStream?
  9. What is COM marshaling and how do I use it?
  10. How do I get the user-customized name of a mapped network drive?
  11. I have the handle to a file; how can I get the file name from the debugger?
  12. What’s the difference between UuidFromString, IIDFromString, CLSIDFromString, GUIDFromString…
  13. The MoveSecurityAttributes policy affects only how Explorer recalculates ACLs when a file is moved; everybody else is on their own
  14. Why do Saturation and Luminance go all the way to 240, but Hue goes only to 239? And why 239 anyway?
  15. How do I get the user-customed name of My Computer or Recycle Bin?
  16. Learning about farm animals from my niece
  17. How does a shell namespace extension provide icons for virtual items that track the standard icons set by the user’s file associations?
  18. What happens if you call VirtualAlloc to MEM_COMMIT a page you never MEM_RESERVE?
  19. How do we change permissions on a share as fast as Explorer does it?
  20. First, try reading the error message, episode 4: Even programmers see error messages without reading them
  21. How do I obtain the comment for a share?
  22. Hacking the law: On the role of the marriage officiant in the State of Washington
  23. Calling ShutdownBlockReasonCreate from my service doesn’t stop the user from shutting down
  24. If you can’t remember the exact text of a dialog box (so you can search for it), you can ask the Internet

September 2015

  1. Why can’t I create a file equal to the available disk space?
  2. The trust relationship between this workstation and the primary domain failed, what does this mean?
  3. What happens to lost timer messages if I don’t process them fast enough?
  4. Why doesn’t my keyboard hook get called for keyboard messages I manually posted?
  5. How do I call SetTimer with a timer ID that is guaranteed not to conflict with any other timer ID?
  6. It rather involved being on the other side of this airtight hatchway: Elevation from Administrator to SYSTEM
  7. Thanks for informing us that you know about the compatibility issue in your application, so we don’t have to fix it
  8. How can I tell if Windows Update is waiting for the system to reboot?
  9. Why are there all these processes lingering near death, and what is keeping them alive?
  10. How can I start my service as soon as possible, before any other service?
  11. Why doesn’t GetAddrInfo work from behind a proxy?
  12. A process inherits its environment from its parent, and the consequences of this simple statement
  13. How do I run a Web search in the user’s default Web browser using their default search provider?
  14. The C runtime library cannot be mixed and matched
  15. How do you get network connectivity from the worst PC in the world?
  16. Raymond’s Windows Universal Samples API concordance
  17. Cynical interpretations of various project milestones
  18. I guess this explains why Warren Buffett hasn’t retired
  19. Using an intermediate library to make the main library retargetable
  20. When I change the icon in my shortcut, why doesn’t it update on the screen?
  21. I saved some files into the Program Files directory, and now they’re gone!
  22. Microspeak: move the needle

August 2015

  1. How do I enumerate remembered connections that are not currently connected?
  2. Debugging walkthrough: Access violation on nonsense instruction, episode 3
  3. The Windows 95 I/O system assumed that if it wrote a byte, then it could read it back
  4. Rules can exist not because there’s a problem, but in order to prevent future problems
  5. Microspeak: DRI, the designated response individual
  6. Insightful graph: The ship date predictor
  7. Handy delegate shortcut hides important details: The hidden delegate
  8. I saw a pinvoke signature that passed a UInt64 instead of a FILETIME, what’s up with that?
  9. If you are going to call Marshal.GetLastWin32Error, the function whose error you’re retrieving had better be the one called most recently
  10. If you are going to call Marshal.GetLastWin32Error, the function whose error you’re retrieving had better have SetLastError=true
  11. p/invoke gotcha: C++ bool is not Win32 BOOLEAN is not UnmanagedType.Bool
  12. Windows started picking up the really big pieces of TerminateThread garbage on the sidewalk, but it’s still garbage on the sidewalk
  13. Crashes in the I/O stack tend to occur in programs which do the most I/O
  14. Why does the taskbar icon for grouped windows change to something weird?
  15. The ARM processor architecture: Somebody else’s introduction
  16. The changing fortunes of being the last program on the Start menu
  17. What if I have two programs that are logically a single application, and I want them to be treated as a single group on the taskbar?
  18. The Itanium processor, part 10: Register rotation
  19. The Itanium processor, part 9: Counted loops and loop pipelining
  20. The Itanium processor, part 8: Advanced loads
  21. The Itanium processor, part 7: Speculative loads
  22. The Itanium processor, part 6: Calculating conditionals

July 2015

  1. The Itanium processor, part 5: The GP register, calling functions, and function pointers
  2. The Itanium processor, part 3b: How does spilling actually work?
  3. The Itanium processor, part 4: The Windows calling convention, leaf functions
  4. The Itanium processor, part 3: The Windows calling convention, how parameters are passed
  5. The Itanium processor, part 2: Instruction encoding, templates, and stops
  6. The Itanium processor, part 1: Warming up
  7. The curse of the redefinition of the symbol HLOG
  8. Corrupted file causes application to crash; is that a security vulnerability?
  9. When you think you found a problem with a function, make sure you’re actually calling the function, episode 2
  10. Please enjoy the new eco-friendly printers, now arguably less eco-friendly
  11. How can I detect whether a keyboard is attached to the computer?
  12. What did the Ignore button do in Windows 3.1 when an application encountered a general protection fault?
  13. Why do I get ERROR_INVALID_HANDLE from GetModuleFileNameEx when I know the process handle is valid?
  14. Why doesn’t the Print command appear when I select 20 files and right-click?
  15. Hazy memories of the Windows 95 ship party
  16. Generating different types of timestamps from quite a long way away
  17. On the various ways of creating large files in NTFS
  18. Why is my x64 process getting heap address above 4GB on Windows 8?
  19. What would be the point of creating a product that can’t do its job?
  20. Intentionally making the suggestion look nothing like any scripting language, yet understandable enough to get the point across
  21. Trying out all the different ways of recognizing different types of timestamps from quite a long way away
  22. Why does the BackupWrite function take a pointer to a modifiable buffer when it shouldn’t be modifying the buffer?
  23. Is a SID with zero subauthorities a valid SID? It depends whom you ask
  24. How secure are GUIDs? Can I use it to generate passwords?

June 2015

  1. 2015 mid-year link clearance
  2. Microspeak: Stretch goal
  3. Parsing a string as a 64-bit integer, somehow
  4. Windows 95 and Windows NT manage the TEB on x86 differently
  5. Where is the full version of the music that plays when you start Windows 98 for the first time?
  6. A trick for finding the correct internal mailing list
  7. Sorry for the interruption, but it doesn’t happen often
  8. Reinterpreting the bits of a 64-bit integer as if they were a double-precision floating point number (and vice versa)
  9. Random links on taking better pictures
  10. Why does the class name for Explorer change depending on whether you open it with /e?
  11. How come the technique for launching an unelevated process from an elevated process doesn’t work?
  12. When you think you found a problem with a function, make sure you’re actually calling the function
  13. One way to make sure nobody reports problems with your Web site
  14. How can I reposition my window so it isn’t covered by the touch keyboard?
  15. How can I force a CreateFile call to hang, in order to test something?
  16. Keep your eye on the code page: Is this string CP_ACP or UTF-8?
  17. Taking ownership of a file doesn’t give you access, yet
  18. Bitter or acerbic? or does it make a difference?
  19. How can I reposition my controls so they aren’t covered by the touch keyboard?
  20. There is no /8TB flag on 64-bit Windows
  21. What’s the point of giving my unnamed object proper security attributes since unnamed objects aren’t accessible outside the process anyway (or are they?)
  22. Adding a little marker to your comments in Microsoft Word
  23. Why do events logged by the ReportEvent function show up in the wrong order in the Event Viewer?
  24. How can I make the touch keyboard appear automatically when focus enters an edit control in my program?

May 2015

  1. Under what conditions can SetFocus crash? Another debugging investigation
  2. When designing your user interface, be mindful of the selection-readers
  3. Dubious security vulnerability: Luring somebody into your lair
  4. The tadpole operators explained
  5. New C++ experimental feature: The tadpole operators
  6. So you decided to call SHFileOperation from a service, at least remember to disable copy hooks
  7. If you can set enforcement for a rule, you can set up lack of enforcement
  8. When you inadvertently become a collector of something you really aren't all that into
  9. It rather involved being on the other side of this airtight hatchway: Code injection via QueueUserAPC
  10. Determining programmatically whether a file was built with LAA, ASLR, DEP, or OS-assisted /GS
  11. MapGenericMask is just a convenience function for converting generic access to specific access, according to the instructions you provide
  12. Low-level hooks have thread affinity, so make sure you keep an eye on the thread
  13. Why don't you forward WM_GETMINMAXINFO and clamp the results?
  14. How does Task Manager compute Up Time, and why doesn't it agree with GetTickCount?
  15. Can I run a service executable from a network location?
  16. Documentation creates contract, which is why you need to be very careful what you document
  17. Hidden message in a T-shirt, it's been done before
  18. Why is there an invisible U+202A at the start of my file name?
  19. What does it mean when the Advanced Security Settings dialog says that an ACE was inherited from "Parent Object" without naming the specific parent?
  20. Creating a window that can be resized in only one direction
  21. How does the window manager adjust ptMaxSize and ptMaxPosition for multiple monitors?
  22. That's not how you start a boat

April 2015

  1. How can I tell if a file is an image of some type?
  2. Is the atom returned by RegisterClass(Ex) a "real" atom?
  3. Access to a file's attributes is controlled by two things
  4. Wow, they really crammed a lot into those 410 transistors
  5. How do I extract the path to Control Panel from this shortcut so I can launch it?
  6. Why can't I have variadic COM methods?
  7. How did the scopes for the CryptProtectMemory function end up in a strange order?
  8. It rather involved being on the other side of this airtight hatchway: Invalid parameters from one security level crashing code at the same security level (yet again)
  9. What was the starting point for the Panther Win32 kernel?
  10. How to find the IP address of a hacker, according to CSI: Cyber
  11. Why are there both TMP and TEMP environment variables, and which one is right?
  12. Why did the original code for FIND.COM use lop as a label instead of loop?
  13. When I set the "force X off" policy to Disabled, why doesn't it force X on?
  14. In the Seattle area, people treat you nicer once they learn your last name is Gates
  15. After I encrypt memory with CryptProtectMemory, can I move it around?
  16. On the ways of creating a GUID that looks pretty
  17. If more than one object causes a WaitForMultipleObjects to return, how do I find out about the other ones?
  18. Why is the System.DateCreated property off by a few seconds?
  19. The details of the major incident were not clearly articulated, but whatever it is, it's already over
  20. Opening the classic folder browser dialog with a specific folder preselected
  21. Why is CreateToolhelp32Snapshot returning incorrect parent process IDs all of a sudden?
  22. It appears that some programmers think that Windows already ships with that time machine the Research division is working on
  23. Under what circumstances will a dialog box not use the caption specified in the resource file?

March 2015

  1. What was the relationship between Outlook and Outlook Express?
  2. I want you to chase your sisters until they throw up
  3. How do I make a boldface item on a context menu?
  4. Flaw reported in Windows 95
  5. Switching on a tuple: Sneaky trick
  6. What's the difference between PathIsSystemFolder and Protected Operating System Files?
  7. A Venn diagram demonstrating the dining options in one of the new cafeterias
  8. CancelIoEx can cancel I/O on console input, which is kind of nice
  9. Finding the constructor by scanning memory for the vtable
  10. Sure, we have RegisterWindowMessage and RegisterClipboardFormat, but where are DeregisterWindowMessage and DeregisterClipboardFormat?
  11. Travel tip: Don't forget your car on the ferry
  12. Microspeak: Headcount, req, and related personnel terms
  13. Does the CLR really call CoInitializeEx on the first call to unmanaged code, even if you don't deal with COM at all and are just calling native code via p/invoke?
  14. Debugging walkthrough: Access violation on nonsense instruction, episode 2
  15. Under what conditions will the IUnknown::AddRef method return 0?
  16. Dubious security vulnerability: Copying a program and running the copy
  17. The more times you use the word "simply" in your instructions, the more I suspect you don't know what that word means
  18. How can I programmatically resize a listview column to fit its contents?
  19. A question about the FileTimeToLocalFileTime function turned out to be something else
  20. Modifying the CS_NOCLOSE style does affect all windows of the class, just not necessarily in an immediately noticeable way
  21. Why are the dimensions of a maximized window larger than the monitor?
  22. Setting up a new computer often results in leftover slot covers, so what do you do with the slot covers?
  23. Connecting some blocks: Tell me more about the current image in my wallpaper slide show

February 2015

  1. Solving the problem rather than answering the question: How can a non-administrator modify a registry key that requires administrator permission?
  2. RegNotifyChangeKeyValue sucks less
  3. Why does the mouse cursor jump a few pixels if you click on the very bottom row of pixels on the taskbar?
  4. Nice job, you got an A minus from Bill
  5. Further adventures in trying to guess what encoding a file is in
  6. Non-capturing C++ lambdas can be converted to a pointer to function, but what about the calling convention?
  7. What's the point of using a custom timer queue if there is a default one already?
  8. When asking about the capacity of a program, you also need to consider what happens when you decide to stop using the program
  9. Microspeak: Light up
  10. The 2015/2016 Seattle Symphony subscription season at a glance
  11. Reading the word under the cursor via UI Automation
  12. What is this inconsistent heap state that MSDN warns me about during DLL_PROCESS_DETACH?
  13. Who is this rogue operative that filled my object with 0xDD, then sent me a message?
  14. Why was the replacement installer for recognized 16-bit installers itself a 32-bit program instead of a 64-bit program?
  15. Staying cool is one of the skills of a corporate president
  16. Using thread pool cleanup groups to clean up many things at once
  17. Use GFlags to catch the silent killer (silent but deadly)
  18. The SuspendThread function suspends a thread, but it does so asynchronously
  19. If you wonder why a function can't be found, one thing to check is whether the function exists in the first place
  20. Another way to make sure nobody sends you feedback
  21. Customizing item enumeration with IShellItem, the old-fashioned way

January 2015

  1. Got errands? Now is the time
  2. Creating a shared memory block that can grow in size
  3. Color-aware ClearType requires access to fixed background pixels, which is a problem if you don't know what the background pixels are, or if they aren't fixed
  4. The compiler can make up its own calling conventions, within limits
  5. Tip for trying to boost morale: Don't brag about your overseas trips
  6. Customizing item enumeration with IShellItem
  7. Helper functions to make shell bind contexts slightly more manageable
  8. The wonderful world of shell bind context strings
  9. Why does my synchronous overlapped ReadFile return FALSE when the end of the file is reached?
  10. Why does the copy dialog give me the incorrect total size of the files being copied?
  11. Why does Outlook use a semicolon to separate multiple recipients by default?
  12. Why does a single integer assignment statement consume all of my CPU?
  13. Why does CreateFile take a long time on a volume handle?
  14. Where can I find the standard asynchronous stream?
  15. Microspeak: landing (redux)
  16. Limiting the bottom byte of an XMM register and clearing the other bytes
  17. Finding the leaked object reference by scanning memory: Example
  18. What happens if I don't pass a pCreateExParams to CreateFile2?
  19. Why is there a BSTR cache anyway?
  20. No good deed goes unpunished: Marking a document as obsolete
  21. More notes on calculating constants in SSE registers
  22. How do you prevent the linker from discarding a function you want to make available for debugging?
  23. Horrifically nasty gotcha: FindResource and FindResourceEx

2014 304

December 2014

  1. 2014 year-end link clearance
  2. Even the publishing department had its own Year 2000 preparedness plan
  3. How did that program manage to pin itself to my taskbar when I installed it?
  4. Integer signum in SSE
  5. Debugging walkthrough: Access violation on nonsense instruction
  6. My pants are fancy!
  7. How can I let my child use an app that I bought from the Windows Store?
  8. The Softsel Hot List for the week of December 22, 1986
  9. Setting, clearing, and testing a single bit in an SSE register
  10. How did protected-mode 16-bit Windows fix up jumps to functions that got discarded?
  11. How can I query the location of the taskbar on secondary monitors?
  12. It's not too late (okay maybe it's too late) to get this gift for the physicist who has everything
  13. It rather involved being on the other side of this airtight hatchway: Account vulnerable to Active Directory administrator
  14. If you set up roaming profiles, you are expected to set up each machine identically, for the most part
  15. When corporate policies meet precision scientific equipment
  16. Notes on calculating constants in SSE registers
  17. Detecting whether a SID is well-known SID
  18. What states are possible in a DRAWITEMSTRUCT structure?
  19. If you get a procedure address by ordinal, you had better be absolutely sure it's there, because the failure mode is usually indistinguishable from success
  20. The psychology of confirmation, or something, I don't know what to call it
  21. Creating double-precision integer multiplication with a quad-precision result from single-precision multiplication with a double-precision result
  22. Killing a window timer prevents the WM_TIMER message from being generated for that timer, but it doesn't retroactively remove ones that were already generated
  23. If my WM_TIMER handler takes longer than the timer period, will my queue fill up with WM_TIMER messages?
  24. What happens if I don't paint when I get a WM_PAINT message?
  25. Microspeak: Redlines
  26. Counting array elements which are below a particular limit value using SSE

November 2014

  1. A user's SID can change, so make sure to check the SID history
  2. Some light reading on lock-free programming
  3. If 16-bit Windows had a single input queue, how did you debug applications on it?
  4. What is the difference between Full Windows Touch Support and Limited Touch Support?
  5. The crazy world of stripping diacritics
  6. Is it wrong to call SHFileOperation from a service? Revised
  7. A library loaded via LOAD_LIBRARY_AS_DATAFILE (or similar flags) doesn't get to play in any reindeer module games
  8. Distinguishing between normative and positive statements to help people answer your question
  9. File version information does not appear in the property sheet for some files
  10. How do I enumerate drives the same way that the NET USE command does?
  11. How to view the stack of a user-mode thread when its kernel stack has been paged out
  12. When does GetTickCount consider the system to have started?
  13. How can I wait until all startup applications have finished launching?
  14. A little cheat in my Tiger Beat photo homage
  15. Kicking around a function that formats stuff
  16. Why does an attempt to create a SysLink control in my plug-in sometimes fail?
  17. Raymond, why did you stop studying Chinese? It has no grammar!
  18. How do I get a handle to the primary monitor?
  19. Passing the incorrect object type for a handle, how bad is it?
  20. Microspeak: Line of sight
  21. Applying a filter to the contents of an Explorer Browser

October 2014

  1. The case of the file that won't copy because of an Invalid Handle error message
  2. Why is the FAT driver called FASTFAT? Why would anybody ever write SLOWFAT?
  3. The contents of the Start page are not programmatically accessible
  4. A question about preventing the system from going to the idle state turns out to be misguided
  5. Enumerating the ways of distributing n balls into k boxes
  6. Debugging a hang: Chasing the wait chain inside a process
  7. How can I detect programmatically whether the /3GB switch is enabled?
  8. How do I disable Windows 8 touch contact visualizations for my application?
  9. The great thing about regular expression languages is that there are so many to choose from!
  10. Scripting an Internet Explorer window
  11. When are global objects constructed and destructed by Visual C++?
  12. If only DLLs can get DllMain notifications, how can an EXE receive a notification when a thread is created (for example)?
  13. The GetCurrentThread function is like a check payable to Bearer: What it means depends on who's holding it
  14. Is there a way to disable a specific balloon notification without disabling all of them?
  15. Enumerating notification icons via UI Automation
  16. Some parts of an interface can change but others can't
  17. Why is there a 64KB no-man's land near the end of the user-mode address space?
  18. Standard handles are really meant for single-threaded programs
  19. Microspeak: All-up
  20. Enumerating cyclical decompositions with Stirling numbers
  21. Why is 0x00400000 the default base address for an executable?
  22. In the red corner, EXCEPTION_INT_DIVIDE_BY_ZERO and STATUS_INTEGER_DIVIDE_BY_ZERO; and in the blue corner, EXCEPTION_INT_OVERFLOW and STATUS_INTEGER_OVERFLOW
  23. You can name your car, and you can name your kernel objects, but there is a qualitative difference between the two

September 2014

  1. Why does misdetected Unicode text tend to show up as Chinese characters?
  2. Simulating media controller buttons like Play and Pause
  3. Marshaling won't get in your way if it isn't needed
  4. If a process crashes while holding a mutex, why is its ownership magically transferred to another process?
  5. What is the story of the mysterious DS_RECURSE dialog style?
  6. The grand ambition of giving your project the code name Highlander
  7. Receiving a notification any time the selection changes in an Explorer window
  8. I marked my parameter as [optional], so why do I get an RPC error when I pass NULL?
  9. The stream pointer position in IDataObject::GetData and IDataObject::GetDataHere is significant
  10. The citizenship test is pass/fail; there’s no blue ribbon for acing it
  11. Poor man's comments: Inserting text that has no effect into a configuration file
  12. Microspeak: spend
  13. Enumerating all the ways of making change
  14. What did Windows 3.1 do when you hit Ctrl+Alt+Del?
  15. A lie repeated often enough becomes the truth: The continuing saga of the Windows 3.1 blue screen of death (which, by the way, was never called that)
  16. The history of Win32 critical sections so far
  17. I wrote the original blue screen of death, sort of
  18. Steve Ballmer did not write the text for the blue screen of death
  19. The wisdom of seventh graders: The emergency survival kit
  20. Piping to notepad
  21. You can use a file as a synchronization object, too
  22. Aha, I have found a flaw in the logic to detect whether my program is running on 64-bit Windows
  23. Why does the timestamp of a file increase by up to 2 seconds when I copy it to a USB thumb drive?
  24. Who wrote the text for the Ctrl+Alt+Del dialog in Windows 3.1?
  25. It’s a trap! Employment documents that require you to violate company policy

August 2014

  1. How can I detect that a user's SID has changed and recover their old data?
  2. Taking advantage of the fact that the handle returned when you create a kernel synchronization object has full access regardless of the actual ACL
  3. Where does the Installed Updates control panel get the install date from?
  4. It's time we face reality, my friends: We're not rocket scientists
  5. How do I read the "Double-click to open an item (single-click to select)" setting in Folder Options?
  6. Dispelling the myths, rumors, and innuendo surrounding the QueryPerformanceCounter function
  7. Why does the OpenThread function behave differently when the target thread belongs to another process?
  8. Some reasons not to do anything scary in your DllMain, part 3
  9. If you're looking for the code that displays a particular dialog box, the most directly way to find it is to look for the dialog box
  10. My friend and his buddy invented the online shopping cart back in 1994
  11. News flash: Big houses cost more to maintain
  12. Deleting elements from an JavaScript array and closing up the gaps
  13. The scope of the C# checked/unchecked keyword is static, not dynamic
  14. Customers not getting the widgets they paid for if they click too fast -or- In C#, the += operator is not merely not guaranteed to be atomic, it is guaranteed not to be atomic
  15. Keep your eye on the code page: C# edition (the mysterious third code page)
  16. Keep your eye on the code page: C# edition (warning about DllImport)
  17. Revival of the Daleks: Act One, Scene One
  18. If you want to set a thread's apartment model via Thread.CurrentThread.ApartmentState, you need to act quickly
  19. The case of the orphaned LpdrLoaderLock critical section
  20. The latest technologies in plaintext editing: NotepadConf
  21. Since clean-up functions can't fail, you have to soldier on
  22. Why does Explorer say "File too large" for my custom file system, when the problem has nothing to do with the file being too large (heck it's not even a file)
  23. Microspeak: 1 – 1 is not zero
  24. Enumerating the ways of choosing teams in a group of players
  25. Before claiming that a function doesn't work, you should check what you're passing to it and what it returns

July 2014

  1. What is the strange garbage-looking string in the "command" value of a static verb?
  2. If you want to be notified when your app is uninstalled, you can do that from your uninstaller
  3. Did the Windows 95 interface have a code name?
  4. Finding the shortest path to the ground while avoiding obstacles
  5. How do I obtain the computer manufacturer's name from C++?
  6. When I send a WM_GETFONT message to a window, why don't I get a font?
  7. When will GetSystemWindowsDirectory return something different from GetWindowsDirectory?
  8. Microspeak: Tell Mode / Ask Mode
  9. The alternate story of the time one of my colleagues debugged a line-of-business application for a package delivery service
  10. How can I get the URL to the Web page the clipboard was copied from?
  11. The time one of my colleagues debugged a line-of-business application for a package delivery service
  12. Outdoor Trek: Mirror, Mirror starts this weekend
  13. What does it mean when GetQueuedCompletionStatus return ERROR_SEM_TIMEOUT?
  14. How do I configure Windows Update programmatically?
  15. Why does Outlook map Ctrl+F to Forward instead of Find, like all right-thinking programs?
  16. Enumerating integer compositions (the return of the binomial coefficients)
  17. If I duplicate a handle, can I keep using the duplicate after closing the original?
  18. Using the REFIID/void** pattern for returning COM objects for future-proofing and to avoid problems with dependencies
  19. Why are only some of the Windows 7 system notification icons colorless?
  20. How do I turn off email reminders for my Windows Live calendar, and disable the birthday calendar while I'm at it?
  21. Customing the standard color-picker dialog
  22. Communication between moving vehicles during the narrow window of the late 1990s
  23. It rather involved being on the other side of this airtight hatchway: Surreptitious file access by administrator
  24. Redirecting the Favorites folder is technically legal, but you wouldn't like it
  25. What is the default size of the Recycle Bin, and how can an administrator control the size of the Recycle Bin?

June 2014

  1. 2014 mid-year link clearance
  2. Getting the location of the Close button in the title bar, from Windows 2000 or Windows XP
  3. Undefined behavior can result in time travel (among other things, but time travel is the funkiest)
  4. For Honor, For Excellence, For Pizza
  5. Getting past the question to solving the problem, episode 2014.06.25
  6. The social interactions in two preschool classes, in graphic form
  7. Finding the "Run as administrator" command, a game of hide-and-seek
  8. Adding a sound to the Alt+Tab window
  9. Once you go input-idle, your application is deemed ready to receive DDE messages
  10. What happened to the Shut Down menu in classic Task Manager?
  11. 10 is the new 6
  12. Who would ever write a multi-threaded GUI program?
  13. Enumerating bit strings with a specific number of bits set (binomial coefficients strike again)
  14. Non-classical processor behavior: How doing something can be faster than not doing it
  15. Can we continue to call FindNextFile() with the same handle that returned an error last time?
  16. Why do network servers sometimes show up as a Recycle Bin Location?
  17. Microspeak: Brownbag
  18. Improving the performance of CF_HDROP by providing file attribute information
  19. Link-time code generation invalidates a lot of classical assumptions about linking
  20. Closing over the loop variable is just as harmful in JavaScript as it is in C#, and more cumbersome to fix
  21. Why did it take so long for Windows to support a taskbar on more than one monitor?
  22. As long as your file names meet operating system requirements, you can use whatever you like; the rest is up to you
  23. Obtaining information about the user's wallpaper on multiple monitors

May 2014

  1. Why does GetFileVersionInfo map the whole image into memory instead of just parsing out the pieces it needs?
  2. Get your hex wrench ready, because here comes the Ikea bicycle
  3. It rather involved being on the other side of this airtight hatchway: Denial of service by high CPU usage
  4. How to take down the entire Internet with this one weird trick, according to Crisis
  5. Cargo-cult registry settings and the people who swear by them
  6. Only senior executives can send email to the All Employees distribution list, but mistakes still happen
  7. Find the index of the smallest element in a JavaScript array
  8. Why is the debugger telling me I crashed because my DLL was unloaded, when I see it loaded right here happily executing code?
  9. Eventually, we may find out where notes eight through twelve came from
  10. Why does my radio button group selection get reset each time my window regains activation?
  11. Dialog boxes return focus to the control that had focus when you last switched away; how do I get in on that action for my own windows?
  12. The code names for various subprojects within Windows 95
  13. Creating a simple shell item, just as fake as a simple pidl
  14. An extensible interlocked arithmetic function (via lambdas)
  15. Is WriteProcessMemory atomic?
  16. The mystery of the icon that never appears
  17. How do I change among the three levels of play in Space Cadet Pinball?
  18. Enumerating bit sequences with isolated zero-bits via the Fibonacci recurrence
  19. Even if you're the President, your mother still has the power to embarrass you
  20. When was the WM_COPYDATA message introduced, and was it ported downlevel?
  21. How can you use both versions 5 and 6 of the common controls within the same module?
  22. Why does saving a file in Notepad fire multiple FindFirstChangeNotification events?
  23. Letting the boss think your project is classier than it really is
  24. Warehouse holding 1000 cans of surströmming burns to the ground, insert punch line here
  25. Getting the location of the Close button in the title bar
  26. If a lot of settings are ignored when set in a DLL, why bother even letting you set them on a DLL?
  27. How do I extract an icon at a nonstandard size if IExtractIcon::Extract tells me to go jump in a lake?

April 2014

  1. The StartRunNoHOMEPATH policy affects whether the user's HOME path is the current directory when you use Start.Run, but make sure you read that carefully
  2. Why does the common file save dialog create a temporary file and then delete it?
  3. Showing a balloon tip at a specific position, then removing it
  4. A discovered quirk is just few steps away from becoming a feature
  5. I thought you could use SWP_FRAMECHANGED to force a control to recalculate its properties after a change in styles
  6. How do I programmatically create folders like My Pictures if they were manually deleted?
  7. Le Chatelier's Principle in action: Administrative overrides
  8. How can I get information about the items in the Recycle Bin from script?
  9. Raymond's house rules for Easter Egg Hunts
  10. How do I set a breakpoint on a function whose name contains spaces or other special characters?
  11. How can I get the Windows 8 touch keyboard to display autocomplete suggestions like the Bing app?
  12. There is no complete list of all notifications balloon tips in Windows
  13. The gradual erosion of the car trip experience, part 2
  14. Microspeak: bar check
  15. The geeky thrill of discovering that two things are really the same thing, just with different labels
  16. Enumerating subsets with binomial coefficients
  17. Windows is not a Microsoft Visual C/C++ Run-Time delivery channel
  18. Why does PrintWindow hate CS_PARENTDC? redux
  19. What happens to my COM server-side object when clients die unexpectedly?
  20. Why is Rundll32 called Rundll32 and not just Rundll?
  21. Using WM_SETREDRAW to speed up adding a lot of elements to a control
  22. It's bad enough for a guest to demolish the host's house; demolishing an unrelated person's house is taking it to a whole new level
  23. Why does the access violation error message put the operation in quotation marks? Is is some sort of euphemism?
  24. It rather involved being on the other side of this airtight hatchway: Invalid parameters from one security level crashing code at the same security level (again)
  25. Buggy milk cartons, beeping computers, and other silliness

March 2014

  1. A puzzle involving dynamic programming, or maybe it doesn't
  2. The dangers of buffering up posted messages and then reposting them later
  3. Functions that return GDI regions rarely actually return regions
  4. Can CoCreateGuid ever return GUID_NULL?
  5. Geeky t-shirt alert: Windows 7's so-called God Mode
  6. Enumerating set partitions with Bell numbers and Stirling numbers of the second kind
  7. Different senses of scale create different travel expectations
  8. Why can’t I __declspec(dllexport) a function from a static library?
  9. When visitors to the United States underestimate the size of the country
  10. Going for the facts: Who is displaying this message box?
  11. I think this person's monitor is broken: It doesn't know how to render text in capital letters
  12. Raymond's highly scientific predictions for the 2014 NCAA men's basketball tournament
  13. Why do I have to hit an arrow key before a keyboard-initiated Move operation will follow the mouse?
  14. How do I show the contents of a directory while respecting the user's preferences for hidden and super-hidden files as well as the user's language preferences?
  15. How do I create an IShellItemArray from a bunch of file paths?
  16. Why does the Directory.GetFiles method sometimes ignore *.html files when I ask for *.htm?
  17. Operations jargon: Internet egress
  18. On live performances of Star Trek
  19. How do I disable zone markers for downloaded files, so that Explorer stops being a nag about running downloaded files and just trusts me to do the right thing?
  20. Why Johnny can't read music
  21. Programmatically uploading a file to an FTP site
  22. Converting from a UTC-based SYSTEMTIME directly to a local-time-based SYSTEMTIME
  23. We’re currently using FILE_FLAG_NO_BUFFERING and FILE_FLAG_WRITE_THROUGH, but we would like our WriteFile to go even faster
  24. Why do I have to add 1 to the color index when I set it as the hbrBackground of a window class?
  25. What order does the DIR command arrange files if no sort order is specified?
  26. What two-year-olds think about when they are placed in time-out
  27. Adventures in automation: Dismissing all message boxes from a particular application but only if they say that the operation succeeded

February 2014

  1. How can I detect that my program was run from Task Scheduler, or my custom shortcut, or a service, or whatever
  2. What does the SEE_MASK_UNICODE flag in ShellExecuteEx actually do?
  3. Why are leading digits converted to language-specific digit shapes, but not trailing digits, and how do I suppress the conversion entirely?
  4. A simple email introduction: Fan mail
  5. Nieces sometimes extrapolate from insufficient contextual data
  6. Logging the contents of every message box dialog via automation
  7. How can I make sure my program is launched only from my helper program and no other parent?
  8. What is the programmatic equivalent to unchecking the box to prevent a file from having its contents indexed?
  9. When will the static control automatically delete the image loaded into it, and when is it the responsibility of the application?
  10. If you cancel an operation while it's in progress, then it's not surprising that it's only half-done
  11. The Grand Duke's monocle is an affectation
  12. Writing automation to wait for a window to be created (and dismiss it)
  13. When someone proposes marriage, bear in mind that there is a question that needs to be answered
  14. Debugging: Diagnosing why malloc is failing
  15. When something gets added to a queue, it takes time for it to come out the front of the queue
  16. The heavy metal umlaut encroaches into Seattle real estate
  17. What is this extra thread in my process?
  18. Microspeak: Party, in various forms
  19. Excuses I learned from babies
  20. Execute a file as if it were a program, even though its extension is not EXE
  21. VirtualLock locks your memory into the working set, even if your threads are blocked
  22. The United States Team uniforms for the opening ceremony is rather hideous, and illegal, and a bit anachronistic
  23. If an asynchronous I/O completes synchronously, is the hEvent in the OVERLAPPED structure signaled anyway?
  24. How do I prevent folders like My Pictures from being recreated?
  25. Racing email against a snail
  26. The new research citation format, if students got to design it
  27. How can I make a WNDPROC or DLGPROC a member of my C++ class?

January 2014

  1. Why chicken wings dominate Super Bowl snack time
  2. Non-psychic debugging: If somebody's complaining that a collection should be empty but isn't, you might want to see what's in there
  3. Can process IDs be greater than 64000? Because we're seeing process IDs greater than 64000
  4. One of my favorite error codes: Optional parameter missing
  5. Why does my setup program detect the operating system incorrectly the second time I run it?
  6. The 2014/2015 Seattle Symphony subscription season at a glance
  7. How can I make a callback function a member of my C++ class?
  8. Jan-Keno Janssen decides to rent a bicycle to get around Las Vegas; this is what happens
  9. Non-psychic debugging: Looking for leaked objects by their vtable
  10. The Visual Effects dialog box just tells you what you want to hear
  11. Commissioner Bud Selig was named the first recipient of the Commissioner Bud Selig Leadership Award
  12. What clock do MSG.time and GetMessageTime use?
  13. When the Web page says that a tool is not supported, it means that if you find a problem and contact technical support, they're just going to point you back to the Web page
  14. Hello Kitty takes a rather inefficient trip to the United States
  15. How do I get a high resolution icon for a file?
  16. Psychic debugging: Why messages aren't getting processed by your message pump
  17. The curse of the leading zero
  18. There are so many things that call themselves message queues
  19. How do I hit the Win+PrintScreen hotkey if my tablet doesn't have a PrtSc key?
  20. The Dead Grandmother/Exam Syndrome
  21. Creating a listview with checkboxes on some items but not others
  22. How do I manually recalculate ACLs on a file based on the containing directory?
  23. Can you dllexport/dllimport an inline function?
  24. The case of the missing context menu verbs
  25. The case of the mysterious Alternate Data Stream query
  26. Excuses college students use for missing assignments
  27. How do I obtain the computer manufacturer's name via C++?
  28. What happened in real-mode Windows when somebody did a longjmp into a discardable segment?
  29. If the cursor clip rectangle is a global resource, how come I can't change it with ClipCursor?
  30. We know your job is hard, you don't have to show us

2013 348

December 2013

  1. 2013 year-end link clearance
  2. New Year's Eve is sometimes a stressful occasion
  3. There's no seating up there, so you just have to hang on for dear life
  4. How can I get the list of programs the same way that Programs and Features gets it?
  5. Brief Q&A on the HeapEnableTerminationOnCorruption heap information flag
  6. I think we're going to be getting frozen leftovers for lunch today
  7. Why is GetWindowLongPtr returning a garbage value on 64-bit Windows?
  8. The chain of stories triggered by seeing a package of Ahoj-Brause
  9. Essays from the funniest man in Microsoft Research
  10. That doesn't sound like South Frisian to me
  11. Creating custom tasks on a jump list
  12. Wouldn't the Recycle Bin sample program have been simpler without COM?
  13. How do I display an RTL string in a notification balloon on an LTR system?
  14. Whether your application should display its content in RTL should be based on the content
  15. Tales from "The Box": A survey of crackpots in physics
  16. Why doesn't the New Folder command work in the root of a redirected drive resource in a Remote Desktop session?
  17. That fee was so that we wouldn't have to raise our prices
  18. Disabling the PrtSc key by blocking input
  19. Turning off the disco lights on the Start screen
  20. How do you intercept taskbar notification balloons?
  21. Some vice presidents forget that not everybody attends the same meetings that they do
  22. Mysterious email, possible social engineering, whatever it was, it didn't work
  23. This was only a test; if this had been an actual concert…
  24. Destroying all child processes (and grandchildren) when the parent exits
  25. Is it wrong to call SHFileOperation from a service?
  26. What’s up with the registry key HKEY_CLASSES_ROOT\CLSID\CLSID?
  27. What's the difference between the wParam of the WM_NOTIFY message and the idFrom in the NMHDR structure?
  28. Sir, is this your high-speed ferry?
  29. How do I configure the timeout used by UI0Detect (Interactive Services Detection service)?
  30. The walls of my friend's house sometimes randomly got corrupted
  31. Logging the foreground process as it changes

November 2013

  1. Notes on gift card and gift certificates in the state of Washington
  2. Why can't I create my dialog with DialogBox, DialogBoxParam, CreateDialog, CreateDialogParam, or the indirect versions of same?
  3. Things that can happen when your kitchen gets taken over by others
  4. If you try to declare a variadic function with an incompatible calling convention, the compiler secretly converts it to cdecl
  5. The case of the DLL that refuses to load
  6. Why did Raymond bring a knitting bag to every meeting?
  7. My friend lived in an apartment inside a museum
  8. Extracting GPS coordinates from a photo and plotting it on a map
  9. How do I get the effect of CW_USEDEFAULT positioning on a window I've already created?
  10. How do I get the path to the default user's profile?
  11. Why don't all of my documents show up when I arrange my Documents library by Name?
  12. Why is the Program Files directory called Program Files instead of just Programs?
  13. My friend lived in a tiny house with an enormous garage
  14. How can I launch an unelevated process from my elevated process and vice versa?
  15. Restoring symbols to a stack trace originally generated without symbols
  16. Why is my FormatMessage call crashing trying to read my insertion parameter?
  17. A possibly unbeatable record for the shortest amount of time between an email message and its resend
  18. Microspeak: Spinning up or kicking off a build
  19. How did Raymond discover his carrier-screaming talent? And his homemade Marauder's Map
  20. What's the point of the various …WhenCallbackReturns functions?
  21. Partially eliminating the need for SetThreadpoolCallbackLibrary and reducing the cost of FreeLibraryAndExitThread
  22. CoUninitalize will ask a DLL if it is okay to unload now, but the answer is a foregone conclusion
  23. What is the point of FreeLibraryAndExitThread?
  24. The complexity of modern voting, or at least modern dream voting
  25. Manipulating the zone identifier to specify where a file was download from
  26. On the various ways of getting the current time and date in Win32

October 2013

  1. The guide to trading candy
  2. If there is no 16-bit emulation layer in 64-bit Windows, how come certain 16-bit installers are allowed to run?
  3. Distinguishing between asking for help with a product and asking for help with a product's installation
  4. Help me optimize this code which enumerates all possible GUIDs
  5. The financial acumen of sea turtles
  6. Using GetLogicalProcessorInformationEx to see the relationship between logical and physical processors
  7. My, those threads start up really fast nowadays
  8. When should I use the FIND_FIRST_EX_LARGE_FETCH flag to FindFirstFileEx?
  9. It rather involved being on the other side of this airtight hatchway: Planting DLLs into directories on the PATH for applications whose current directory is always System32
  10. The hierarchy of user education, as interpreted by a vice president
  11. Using a toy cash register as a keyboard doesn't add up
  12. Opening and manipulating Internet Explorer windows programmatically
  13. The case of the redirected standard handles that won't close even though the child process has exited (and a smidge of Microspeak: reduction)
  14. What is the inverse of AdjustWindowRect and AdjustWindowRectEx?
  15. Why does my window get a WM_ACTIVATE message when it isn't active?
  16. Just because I don't deny something doesn't make it true
  17. Filtering the folders that appear in the Browse for Folder dialog
  18. The imaginary experience of dining at an underground restaurant
  19. C++ corner case: You can implement pure virtual functions in the base class
  20. Happy 110th birthday, Professor Alyea
  21. How do I find out what size the window manager would have chosen for my window?
  22. Using the TAB key to navigate in non-dialogs, redux
  23. I wrote my thesis on an airplane, for heaven's sake
  24. I wrote FAT on an airplane, for heaven’s sake
  25. But instead, they decided to build the Great Wheel
  26. Printing the contents of the clipboard as text to stdout
  27. What's the difference between CopyIcon and DuplicateIcon?
  28. The relationship between module resources and resource-derived objects in 32-bit Windows
  29. The relationship between module resources and resource-derived objects in 16-bit Windows
  30. The management of memory for resources in 16-bit Windows, redux

September 2013

  1. Sometimes my dreams are entirely uneventful
  2. Playing a sound every time the foreground window changes
  3. 2013 Q3 link clearance: Microsoft blogger edition
  4. How can I determine how responsive my application is to input?
  5. Don't forget, Unicode includes formatting characters which can be used to influence output formatting
  6. How can I tell that somebody used the MAKEINTRESOURCE macro to smuggle an integer inside a pointer?
  7. Punctuation is becoming increasingly decorative and less functional
  8. Wait, so does moving a file recalculate inherited permissions or doesn't it?
  9. I dreamed that I was in an alternate-universe Samuel L. Jackson movie
  10. Providing a custom autocomplete source for an edit control
  11. How can I tell that I have a shell folder that represents My Computer?
  12. Raymond's subjective, biased, unfair, and completely wrong characterization of the sounds of several East Asian (and one Southeast Asian) languages
  13. When a program is launched via DDE, and there are multiple servers, which one is used?
  14. SubtractRect doesn't always give you the exact difference
  15. Facilities jargon: Energize
  16. Entering the world of competitive Ring-Around-the-Rosie
  17. Forcing a file handle closed when it has been opened remotely
  18. How does InterlockedIncrement work internally?
  19. It rather involved being on the other side of this airtight hatchway: Creating problematic files in a directory that requires administrative access
  20. Why does Internet Explorer put tab stops at 8-character intervals instead of 4, like all right-thinking people?
  21. Early versions of Aero Peek: Aladdin, Bat Signal, and Squeegee
  22. Mom and dad's event-filled first day of school
  23. Programmatically editing the metadata of an audio file
  24. How to rescue a broken stack trace on x64: Recovering the stack pointer
  25. Why are my posted messages getting lost when the user drags my window around?
  26. How permanent is the "Remove from this list" action on the Start menu?
  27. If your product is client-managed, how do you sell the server?
  28. If you had to deal with preschoolers all day, you'd need a nap too
  29. What is the official name of the most popular work visa in the United States?

August 2013

  1. Can an x64 function repurpose parameter home space as general scratch space?
  2. How can I write to a file only as long as nobody's looking?
  3. The format of data and custom resources
  4. How can I find out which process and user is modifying a file?
  5. The challenge of improvisational historical comedy
  6. Why doesn't the "Automatically move pointer to the default button in a dialog box" work for nonstandard dialog boxes, and how do I add it to my own nonstandard dialog boxes?
  7. If I attach a file to an existing completion port, do I have to close the completion port handle a second time?
  8. All I/O on a synchronous file handle is serialized; that's why it's called a synchronous file handle
  9. Adding a confirmation dialog to every drag/drop operation does not solve the problem
  10. Microspeak: The train
  11. A dream about forgetting to deploy the backup brake pads
  12. The tiny table sorter – or – you can write LINQ in JavaScript
  13. If I signal an auto-reset event and there is a thread waiting on it, is it guaranteed that the event will be reset and the waiting thread released before SetEvent returns?
  14. How do I control the order of the pages in property sheets from my shell extension?
  15. What's the point of letting you change the GCL_CBCLSEXTRA if it has no effect?
  16. Generally speaking, yanking the power plug unexpectedly should not be part of your business process
  17. Please don't wade across the Strait of Juan de Fuca
  18. How do I convert a synchronous file handle into an asynchronous one?
  19. Each time I move, my mailbox moves further away
  20. Why does the CLR report a NullReferenceException even if the referenced access is not exactly the null pointer?
  21. On partially-constructed objects, additional remarks, not as interesting
  22. The mathematical card game Krypto and reaching a level of proficiency where the rules break down
  23. Weak references have no effect on object lifetime
  24. Sometimes sports-rule lawyering comes true: The strikeout with only one thrown pitch
  25. The mysterious ways of the params keyword in C#
  26. A practical reason for shutting down for the Mayan apocalyse
  27. Why does BitConverter.LittleEndian return false on my x86 machine?
  28. It rather involved being on the other side of this airtight hatchway: Open access to the application directory
  29. The case of the auto-hide taskbar

July 2013

  1. Why does Explorer sometimes show my server name in parentheses?
  2. Sometimes people can be so helpless: Finding the owner of a Web page
  3. I'm sure that Star Trek-themed parties exist, so why has no one ever scheduled one as a Microsoft holiday party?
  4. A program for my nieces: The ABCs, part 4
  5. From Microsoft’s mail room to the board room
  6. What is the default cursor for a thread?
  7. Nighttime pictures of London and Tokyo
  8. Windows 7 no longer tries to guess application size and other information
  9. Office Office Office Malkovich Office Office Office
  10. At least it's clear who will NOT be bunking together
  11. A program for my nieces: The ABCs, part 3
  12. Nasty gotcha: STGM_READ | STGM_WRITE does not grant read/write access
  13. If you're not using the command line interpreter, then the command line interpreter metacharacters mean nothing
  14. Why is LOCALE_SDURATION so dorky-looking?
  15. Microspeak: Landing, especially the heated kind
  16. Watch out for those out-of-control Canadian tour buses
  17. A program for my nieces: The ABCs, part 2, choosing a font
  18. If you want to track whether the current thread owns a critical section, you can use the critical section itself to protect it
  19. Where is this CRC that is allegedly invalid on my hard drive?
  20. Why is the syntax for touching a file from the command prompt so strange?
  21. The credit card with a half-million-dollar credit limit
  22. It really wasn't that fancy a Swedish sentence
  23. A program for my nieces: The ABCs, part 1
  24. It rather involved being on the other side of this airtight hatchway: Disabling Safe DLL searching
  25. Why was the Windows source code trunk called the Blue Line?
  26. Why don't elevated processes inherit their environment variables from their non-elevated parent?
  27. I didn't go to //build/ in San Francisco, but I'll be at RAMP in Budapest
  28. You can read as well as I can, or maybe not
  29. I wonder what sort of efficiency that house gets on the Autobahn
  30. Building on our program that draws content at a fixed screen position regardless of window position

June 2013

  1. 2013 mid-year link clearance
  2. It’s the address space, stupid
  3. Once you return from the WM_ENDSESSION message, your process can be terminated at any time
  4. The default error mode (SetErrorMode) is not zero
  5. Where did the names of the fonts Marlett and Verdana come from?
  6. Wait, this is not my regular bicycle commute home
  7. Drawing content at a fixed screen position, regardless of window position
  8. Of what use is the RDW_INTERNALPAINT flag?
  9. Solving the problem rather than answering the question: Why does somebody want to write an unkillable process?
  10. AttachThreadInput is like taking two threads and pooling their money into a joint bank account, where both parties need to be present in order to withdraw any money
  11. Microspeak: to family well
  12. I wonder if the Queen of England ever pulls this sort of prank in real life
  13. Displaying a property sheet for multiple files
  14. A big little program: Monitoring Internet Explorer and Explorer windows, part 3: Tracking creation and destruction
  15. A big little program: Monitoring Internet Explorer and Explorer windows, part 2: Tracking navigations
  16. Dispatch interfaces as connection point interfaces
  17. An introduction to COM connection points
  18. Unexpected complexity of Swedish pronouns, and escaping the resulting embarrassment
  19. A big little program: Monitoring Internet Explorer and Explorer windows, part 1: Enumeration
  20. Sharing an input queue takes what used to be asynchronous and makes it synchronous, like focus changes
  21. A pathological program which ignores the keyboard, and understanding the resulting behavior based on what we know about the synchronous input
  22. When you share an input queue, you have to wait your turn
  23. Asynchronous input vs synchronous input, a quick introduction
  24. When a CD gets stuck on infinite repeat during the night
  25. How do I make it more difficult for somebody to take a screenshot of my window?

May 2013

  1. Posted messages are processed ahead of input messages, even if they were posted later
  2. The posted message queue vs the input queue vs the message queue
  3. What’s the point of SecureZeroMemory?
  4. Why don’t hotkeys for items on my Start menu work when I am in a fullscreen application?
  5. What are the scoping rules for variables in nested courtyards?
  6. How do I customize the console properties for a shortcut to a console application?
  7. What happens if I manually post an auto-generated message into my message queue?
  8. Even though mouse-move, paint, and timer messages are generated on demand, it’s still possible for one to end up in your queue
  9. How do I get a window back on the screen when it moved far, far away? Windows 7 (and 8) edition
  10. A question about proper disposal of unwanted items with an unhelpful answer
  11. The importance of remembering parity in a back-and-forth race on your flying bicycle
  12. Copying a file to the clipboard so you can paste it into Explorer or an email message or whatever
  13. Who sends the initial WM_UPDATEUISTATE message?
  14. Your electric fan is trying to kill you, and other cultural superstitions
  15. Untangling the confusingly-named WM_UPDATEUISTATE and WM_CHANGEUISTATE messages
  16. Hey look, now I’m Director of Strategic Planning, oh, and my name also changed to Oliver Lee
  17. What does GDI use biXPelsPerMeter and SetBitmapDimensionEx for?
  18. Microspeak: booked
  19. The secret lair of Administrative Assistants
  20. How can I display a live screenshot of a piece of another application?
  21. If you want to use a name for your file mapping, don’t just use the name of the file itself
  22. Why am I getting LNK2019 unresolved external for my inline function?
  23. Mathematical formulas are designed to be pretty, not to be suitable for computation
  24. How to tell the poseurs from the actual Windows developers
  25. Extending process attribute inheritance beyond its current boundaries
  26. Reading mouse input from a console program, and programmatically turning off Quick Edit mode
  27. Creating a simple pidl: For the times you care enough to send the very fake
  28. Any setting you expose to the user you implicitly expose to applications
  29. I wrote two lines of code yesterday
  30. How do I get the current value of the RSP register from a C/C++ function? (No answer, but a solution.)

April 2013

  1. The most expensive notepads in Microsoft history
  2. Dentistry in the Brazil-like future
  3. Getting the display name for a shell property
  4. Fake film project tries to create real film to hide fakeness (and fails)
  5. Another way to create a process with attributes, maybe worse maybe better
  6. If you’re going to use an interlocked operation to generate a unique value, you need to use it before it’s gone
  7. Dark corners of C/C++: The typedef keyword doesn’t need to be the first word on the line
  8. Microspeak: Tenet
  9. Dreaming about games based on Unicode
  10. Getting the current selection from an Explorer window
  11. Technically not lying, but not exactly admitting fault either
  12. Why does CoCreateInstance work even though my thread never called CoInitialize? The curse of the implicit MTA
  13. How can I figure out which user modified a file?
  14. If you don’t know what you’re going to do with the answer to a question, then there’s not much point in making others work hard to answer it
  15. Dangerous setting is dangerous: This is why you shouldn’t turn off write cache buffer flushing
  16. Your tenant and your lover, in your dreams
  17. Using opportunistic locks to get out of the way if somebody wants the file
  18. The phenomenon of houses with nobody living inside, for perhaps-unexpected reasons
  19. Is it legal to have a cross-process parent/child or owner/owned window relationship?
  20. The importance of having a review panel of twelve-year-old boys, episode 2
  21. The problem with adding more examples and suggestions to the documentation is that eventually people will stop reading the documentation
  22. On giving a name at the register to be called when your order is ready
  23. Another meaning of the word leptoceratops
  24. The managed way to retrieve text under the cursor (mouse pointer)
  25. How do I wait until all processes in a job have exited?
  26. Don’t forget, the fourth parameter to ReadFile and WriteFile is sometimes mandatory
  27. How can I move an HTREEITEM to a new parent?
  28. Where did the research project RedShark get its name?
  29. Some trivia about the //build/ 2011 conference
  30. The joke’s on you, because PATH goes to Penn Station, not Grand Central!

March 2013

  1. 2013 Q1 link clearance: Microsoft blogger edition
  2. How do I convert a method name to a method index for the purpose of INTERFACEINFO?
  3. The C language specification describes an abstract computer, not a real one
  4. “Adjust visual effects for best performance” should really be called “Adjust visual effects for crappiest appearance”
  5. There’s no law that says two people can’t have the same thing to eat
  6. Dreaming about a rather unusual guitar rehearsal
  7. Using accessibility to monitor windows as they come and go
  8. When will GetMessage return -1?
  9. Does this operation work when file system redirection is disabled? The default answer is NO
  10. The x86 architecture is the weirdo: Structured exception handling
  11. Raymond’s highly scientific predictions for the 2013 NCAA men’s basketball tournament
  12. Microspeak: Science project
  13. It may be your birthday, but why stop at just the day? Think big!
  14. Manipulating the positions of desktop icons
  15. Playing with the Windows Animation Manager: Moving lots of stuff around
  16. Playing with the Windows Animation Manager: Fixing a sample
  17. Closing holes in the update notification pattern
  18. How do I hide Public Libraries on all computers in my organization?
  19. Redistributing computers among offices for heating purposes
  20. Derive the age of the planet Jupiter from the properties of liquid hydrogen and the planet’s surface temperature
  21. How can I see what files and shares are being accessed remotely, and the general usage pattern for the NetXxx functions
  22. Microsoft-internal Chuck Norris facts
  23. Why do Explorer and the command prompt interpret file times differently?
  24. What are the conventions for managing standard handles?
  25. What are the dire consequences of not selecting objects out of my DC?
  26. Space Mountain as if the lights were on, and other Disneyland/World secrets
  27. Inadvertently creating dress-like-Steve day
  28. Around and around and back and somewhere else
  29. Marking a shortcut to say that it should not be placed on the Windows 8 Start page upon installation or treated as a newly-installed application
  30. The source of much confusion: “backed by the system paging file”

February 2013

  1. What does 1#J mean? A strange corner case of the printing of special values
  2. Is there a way to specify an icon to appear next to a menu item via the resource template?
  3. When the option becomes so second-nature you forget that it’s an option
  4. This code would be a lot faster if it weren’t for the synchronization
  5. Dreaming up strange inventions: The combination urinal/bidet/washing machine
  6. Display a custom thumbnail for your application (and while you’re at it, a custom live preview)
  7. Now that version 4 of the .NET Framework supports in-process side-by-side runtimes, is it now okay to write shell extensions in managed code?
  8. Isn’t the CompletionKey parameter to CreateIoCompletionPort superfluous?
  9. What does -1.#IND mean?: A survey of how the Visual C runtime library prints special floating point values
  10. You can ask the compiler to answer your calling convention questions
  11. Microspeak: bubble up
  12. I speak German better in my dream than I do in real life
  13. Display control buttons on your taskbar preview window
  14. Debug session: Why is an LPC server not responding?
  15. If you can’t find the function, find the caller and see what the caller jumps to
  16. How do I launch a file as if it were a text file, even though its extension is not .txt?
  17. What’s the story of the onestop.mid file in the Media directory?
  18. Let me take this shortcut across Lake Saskatchewan
  19. Display an overlay on the taskbar button
  20. The Essential Guide To Dim Sum
  21. For the Nitpickers: Enhanced-mode Windows 3.0 didn’t exactly run a copy of standard-mode Windows inside the virtual machine
  22. Once you know something can be done, doing it is much easier
  23. How can I register my context menu command for all file types *except* one, or other complex conditionals?
  24. The curious pattern of pre-emptively rejecting the solution to your problem
  25. Optimizing the Chili’s dining experience
  26. Old trace logs in your dreams
  27. Obtaining the parsing name (and pidl) for a random shell object
  28. The annual sporting event involving a football that dare not speak its name and a digression into the sportsmanship of wasting time in nonproductive activity
  29. Psychic debugging: Why your IContextMenu::InvokeCommand doesn’t get called even though you returned success from IContextMenu::QueryContextMenu

January 2013

  1. The somewhat misguided question of whether MapViewOfFile or WriteProcessMemory is faster
  2. Why doesn’t HeapValidate detect corruption in the managed heap?
  3. Poisoning your own DNS for fun and profit
  4. Please hold your head perfectly still while you write up that memo
  5. Finding a printer, and then creating a shortcut to that printer
  6. When you have a SAFEARRAY, you need to know what it is a SAFEARRAY *of*
  7. STRICT_TYPED_ITEMIDS is the shell namespace version of the STRICT macro used by USER and GDI
  8. Eliot Chang’s list of things Asians hate
  9. Why was WHEEL_DELTA chosen to be 120 instead of a much more convenient value like 100 or even 10?
  10. Heads-up: Phone scammers pretending to be JPMorgan Chase MasterCard security
  11. Microspeak: pivot
  12. The 2013/2014 Seattle Symphony subscription season at a glance
  13. The changing name of the Microsoft event held in conjunction with Martin Luther King, Jr. Day
  14. What is this rogue version 1.0 of the HTML clipboard format?
  15. A brief history of the GetEnvironmentStrings functions
  16. How do I create a TaskDialog with a progress bar but no cancel button?
  17. If there were some sort of award for alternative commuting, we would’ve been eligible
  18. State law requires you to watch this video of a singing hippo
  19. How can I write a script that finds my top-rated photos?
  20. Understanding errors in classical linking: The delay-load catch-22
  21. Understanding the classical model for linking: Sometimes you don’t want a symbol to come along for a ride
  22. The enduring cultural fascination with Queen’s Bohemian Rhapsody
  23. Understanding the classical model for linking: You can override an LIB with another LIB, and a LIB with an OBJ, but you can’t override an OBJ
  24. Understanding the classical model for linking: Taking symbols along for the ride
  25. Understanding the classical model for linking, groundwork: The algorithm
  26. What’s the guidance on when to use rundll32? Easy: Don’t use it
  27. Why does my program run really slow or even crash (or stop crashing, or crash differently) if running under a debugger?
  28. A few stray notes on Windows patching and hot patching
  29. If NTFS is a robust journaling file system, why do you have to be careful when using it with a USB thumb drive?

← 2009–2012 2017–2021 →