Thursday, September 20, 2007

sometimes curiosity is a bad thing

Notes 8 isn't officially supported on Windows 2000, but I know from first hand experience that the Basic edition works. That got me to wondering how far back you could go. I got it installed on Windows 95 B (which wasn't easy), but it won't load:

SetProcessAffinityMask is only available in versions of kernel32.dll that started shipping with Windows 2000. On a lark I tried copying that file to Windows 95, but then Windows wouldn't load. It looks like Windows 2000 is as far back as you can go and still run Notes 8 Basic without getting into hacking DLL files.

I knew you were curious about that. :-)


  1. Actually I am curious about that, but I decided to rebuild my old W2K PC on Ubuntu and then install Notes 8 instead of risking it.

    What I'm REALLY curious about still is whether you could run *Domino* 8 on a Win2K professional PC with only 512MB RAM. My mail server runs 7.0.2 on such a machine now (of course it's just me), and until I move that functionality to a newer machine, I'm not going to explore that question too deeply.

    But of course you're welcome too ;-)

  2. I'll see if I can find my Win2k Pro CD around here and post the results. :-)

  3. Interesting. I wonder why NNOTESWS.DLL is calling SetProcessorAffinityMask? As Raymond Chen relates in his blog, this function is often called by a program to limit itself to a single processor. Also, SetProcessorAffinityMask is inherited by child processes. So if Notes is locking itself to a single processor, it's also doing the same thing to any processes that it starts.

    I'm not saying that Notes is limiting itself to a single CPU, just that that the most common use for this Win32 function. I don't have Notes8 running but it would be easy to see whether affinity is set this way by looking at the process in Task Manager.

    Btw, SetProcessorAffinityMask first appeared in NT4 (released in 1996).

  4. Oops. In my last comment: s/Processor/Process/g

  5. Since process affinity is inherited from the calling process I assumed Notes was using SetProcessAffinityMask to ensure that it was set to use all the processors. :-) And thanks for the correction about this being released in NT4, I overlooked that in the MSDN documentation.

  6. Charles: Yes, that would be another reason to call SetProcessAffinityMask. But you should only need to call it if a call to GetProcessAffinityMask indicates that your own process affinity is a subset of the system affinity mask. And GetProcessAffinityMask has been around since Windows 95 -- although the 95/98/Me code base never supported more than one processor anyway. And, in any event, the error indicates that NNOTEWS.DLL is failing to resolve a static DLL entry point. To be able to run on an older platform, they would need to call SetProcessAffinityMask via GetProcAddress.

    Another reason to call SetProcessAffinityMask would be a licensing issue (i.e. if you paid for a one processor license and the box has 2 you only use one). But I believe that per-processor licensing was the Domino server not Notes client and, as I recall, it was a part of the licensing terms, not enforced by code.