When you ask somebody to take a look, you need to tell them what you want them to find


Here's a message I received some years ago, paraphrased:

From: X
Subject: FW: Bug 161803: Program Q uses undocumented resource which we changed in Vista

Raymond, can you take a look?

------- Original message -------
From: Y
Subject: Bug 161803: Program Q uses undocumented resource which we changed in Vista

It appears that Program Q is loading shell32 and looking for a resource that we changed in Vista. It used to be an ordinal resource number 123, but it has since moved to location ABC. The program goes looking for it at the old location and can't find it, so it barfs.

So what is it exactly that I'm supposed to be looking for? It looks like Y pretty much figured it out. Maybe you want me to move the resource back. Or perhaps you want me to write a compatibility shim. Or verify Y's analysis?

Turns out that in the case, I was being asked to look for other resources in the shell that moved from one location to another and therefore might be the source of compatibility bugs similar to this.

Comments (14)
  1. richard says:

    I think it is a cunning ploy by management to run surreptitious psychological exams on you without you getting wise.

    Clearly, this was a free association test.

  2. icon cat says:

    Oops… Looks like one of my old programs blindly loads a numbered resource from shell32.dll too, except it doesn’t barf when it fails.

    (error checking removed for brevity)

    hResID = FindResourceEx(hLib, RT_ICON, (LPCTSTR) 143, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));

    hResData = LoadResource(hLib, hResID);

    dwSize = SizeofResource(hLib, hResID);

    hLibIcon = CreateIconFromResourceEx(hResData, dwSize, TRUE, 0x00030000, 32, 32, LR_DEFAULTCOLOR);

    hIcon = CopyIcon(hLibIcon);

    DestroyIcon(hLibIcon);

    If any of this fails, it falls back to LoadIcon((HINSTANCE)NULL,IDI_INFORMATION) and even that’s allowed to fail (it won’t try to send STM_SETICON in that case). This is for a dialog that waits for a network connection and then performs a certain action, so it also has a progress bar. If someone runs it on Vista and #143 is the shred icon instead of a network icon, the user might panic and bail out even though nothing is actually deleted.

    Fortunately, Vista adds the SHGetStockIconInfo function. This solves the problem nice and swift for new software. Another method would be to dig into the shell namespace, but that’s a lot of work for just 1 icon.

  3. Merus says:

    "Raymond, can you take a look?"

    "Well, I see a monitor, and behind it a wall."

  4. Mikkin says:

    Q: Can you take a look?

    A: Yes. Next question? Remember, you only get three.

  5. Xepol says:

    Or you could just reply that depending on the undocumented internals of application results in previously documented behavour, and as such is not a bug but rather "by design" – on both sides.

  6. James W says:

    Glad to see that, no matter where you work, questions like these remain constant :)

  7. Marc K says:

    "Fortunately, Vista adds the SHGetStockIconInfo function…"

    What a great way to get people to stop relying on undocumented things.  Add a documented and approved way to do those things.

  8. The technology of communication  is progressing and the skills of communication should also make progress.

  9. Name required says:

    Q: Can you take a look?

    It is dark. I am likely to get eaten by a grue.

  10. Xavi says:

    Ok, the boring part of the post:

    1. Some folks are using “undocumented features” and it blows now

    2. You got asked whether u can take a look at it, whatever that means.

    Now for the interesting part:

    >Here’s a message I received some years ago

    SOME YEARS AGO?

    Well..it took quite some time until you were able to share this one with us. Some more years and you will come to the conclusion that it’s not even worth to post about it.

    [You missed the point of the article, focusing on the example and not on the principle. Perhaps it would have helped if I had omitted the example. -Raymond]
  11. KenW says:

    @Xavi: "Well..it took quite some time until you were able to share this one with us. Some more years and you will come to the conclusion that it’s not even worth to post about it."

    Great. I came to the conclusions that:

    a) It’s worth is up to the individual reader.

    b) It’s not worth it for us to read your opinion.

    c) No one forced you to read it.

    d) You didn’t pay for access here; it’s free.

    e) No one forces you to visit Raymond’s blog.

    f) You wasted more time posting your drivel than Raymond probably did writing the post.

  12. Mikkin says:

    SOME YEARS AGO?

    Yes Xavi, it is expressly all about The Old New Thing. The instances may be old, but the issues endure.

    @Raymond – Please keep writing about stupid email tricks, as long as people keep committing them.

  13. Igor Levicki says:

    Must have been less than five years ago, because before that there wouldn’t be Windows Vista. Or the Microsoft told us that they worked 5 years on Vista when in reality they worked longer?

  14. kokomo says:

    Raymond, your brutal honesty must have pissed off a lot of people.

    Typically I just ignore these emails.

    I don’t know what’s worst though. Ignoring it or blog about it.

Comments are closed.

Skip to main content