• The Old New Thing

    German sounds more and more like "Alles Lookenpeepers" every day

    • 3 Comments
    München wird ausgebootet. Maybe someday Alles Lookenspeepers will become proper German.
  • The Old New Thing

    Sometimes, an app just wants to crash

    • 14 Comments
    I think it was Internet Explorer 5.0, when we discovered that a thirdparty browser extension had a serious bug, the details of which aren't important. The point was that this bug was so vicious, it crashed IE pretty frequently. Not good. To protect the users from this horrible fate, we marked the object as "bad" so IE wouldn't load it.

    And then we got an angry letter from the company that wrote this browser extension. They demanded that we remove the marking from their object and let IE crash in flames every time the user wanted to surf the web. Why? Because they also wanted us to hook up Windows Error Reporting to detect this crash and put up a dialog that says, "A fix for the problem you experienced is available. Click here for more information," and the "more information" was a redirect to the company's web site (where you could upgrade to version x.y of Program ABC for a special price of only $nnn!). (Actually I forget whether the upgrade was free or not, but the story is funnier if you had to pay for it.)

    In other words, they were crashing on purpose in order to drive upgrade revenue.

    (Astute readers may have noticed an additional irony: If the plug-in crashed IE, then how could the user view the company's web page so they could purchase and download the latest version?)
  • The Old New Thing

    Rip-it

    • 9 Comments
    Last night I had to frog several dozen rows of knitting because I forgot to change needles. Color changes I remember. Needle changes I always forget. Probably because color changes are much more exciting.
  • The Old New Thing

    How to void your warranty

    • 21 Comments

    MSDN just published an article telling people that it's okay to use reserved fields in an internal structure. Anybody who does this has just voided their warranty. Please put a "This program has a high likelihood of crashing after you install the next Service Pack or upgrade your OS" in your license agreement.

    And you wonder why app compat is so hard.

  • The Old New Thing

    What is the window nesting limit?

    • 10 Comments

    In the old days, Windows didn't bother enforcing a nesting limit because, well, if you want to nest windows 200 deep, that's your decision. Many window operations are recursive, but since everything happened on the application's stack, it was your own responsibility to make your stack big enough so it didn't overflow.

    But Windows NT moved the window manager off the application stack (first into a separate process, then into kernel mode). So now the OS needs to watch out for stack overflow attacks from people creating too many nested windows.

    The window nesting limit was set to 100 for the early days of Windows NT. For Windows XP, it dropped to 50 because increased stack usage in some internal functions caused us to overflow at around 75. Dropping to 50 created some breathing room.

    Disclaimer: I was not personally involved in this issue. I'm just reporting what I was able to figure out from reading checkin logs.

  • The Old New Thing

    When marketing designs a screenshot

    • 17 Comments

    Have you checked out AMD's ads for their AMD Athlon 64 FX processor? The copy reads, "My adrenalin fix isn't what it used to be. Double the dose. AMD me." And it has a picture of a tough-looking guy glaring at the camera, challenging the reader to do their worst.

    But take a look at what's on his screen. It's a giant command window. Now look at what this adrenalin junkie has been typing into his command window:

    Microsoft Windows XP [Version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.
    
    C:\>fg
    'fg' is not recognized as an internal or external command,
    operable program or batch file.
    
    C:\>
    C:\>
    C:\>
    C:\>
    C:\>sdf
    'sdf' is not recognized as an internal or external command,
    operable program or batch file.
    
    C:\>sdf
    'sdf' is not recognized as an internal or external command,
    operable program or batch file.
    
    C:\>
    C:\>
    C:\>df
    'df' is not recognized as an internal or external command,
    operable program or batch file.
    
    Wow, he's a real l33t h4x0r he iz.
  • The Old New Thing

    Tinkering with the look

    • 6 Comments
    I've been tinkering with the look of the comments section, based on initial feedback. Took me a while but I think I found something that works pretty well.
  • The Old New Thing

    The unsafe device removal dialog

    • 27 Comments

    In a comment, somebody asked what the deal was with the unsafe device removal dialog in Windows 2000 and why it's gone in Windows XP.

    I wasn't involved with that dialog, but here's what I remember: The device was indeed removed unsafely. If it was a USB storage device, for example, there may have been unflushed I/O buffers. If it were a printer, there may have been an active print job. The USB stack doesn't know for sure (those are concepts at a higher layer that the stack doesn't know about) - all it knows is that it had an active channel with the device and now the device is gone, so it gets upset and yells at you.

    In Windows XP, it still gets upset but it now keeps its mouth shut. You're now on your honor not to rip out your USB drive before waiting two seconds for all I/O to flush, not to unplug your printer while a job is printing, etc. If you do, then your drive gets corrupted / print job is lost / etc. and you're on your own.
  • The Old New Thing

    The migration continues

    • 4 Comments
    Hey folks, this blog is moving to a new home. It'll take me a while to set up shop there, though, so please be patient. Some time after the new year, the content will likely migrate to the new location.
  • The Old New Thing

    Welcome to the New Old New Thing

    • 4 Comments
    Hey there, everybody. It's going to take me a while to settle in, so please be patient. It seems I always celebrate a new blog by designing some insane multi-part series on some obscure aspect of Win32, so I think I'll welcome this site with a series of articles that demonstrate various things you can do with the shell namespace. I haven't planned it out yet, though, so I don't know how many parts it'll be or how much I'll manage to cover before I get bored.
Page 409 of 426 (4,251 items) «407408409410411»