The Windows NT 5.0 Logo Program was announced at this year's Professional Developer's Conference in Denver. Since then, of course, the program has been renamed the Windows 2000 Logo Program. The program is quite similar to the previous Designed for Windows NT 4.0 and Windows 98 Logo program, with a few noteworthy differences. The new program is broken into two levels, Basic and Gold Logos, that depend on the specific Windows 2000 features your application takes advantage of.
All apps must be 32-bit. 16-bit apps are out. No surprise there; we should be looking toward the 64-bit future anyway. (Will there be the Platinum Logo for those?) Windows 2000 and Windows NT only support Generic Thunks (a 16-bit app making a call into a 32-bit DLL) and neither support the Universal or Flat Thunks of Windows 9x. For the first time, users will be able to upgrade directly from Windows 9x to Windows 2000. If your app was installed under Windows 9x and makes 16-bit calls, then at runtime it must check for the operating system version. GetVersionEx is the API of choice for this task.
Applications with the Basic Logo install and uninstall cleanly, and do not interfere with system components. (Not overwriting system files is just common sense, anyway.) The app must also be a good neighbor and "Interoperate well with other applications on the system." The final Basic Logo criterion is that the app must function normally after the operating system has been upgraded to Windows 2000.
To sport the Gold Logo, in addition to meeting the Basic Logo requirements, your application must be tuned for Windows 2000 operation. One of the Gold Logo requirements is to honor the system policies if your application provides any system services to the user, such as presenting the option to run another application. One system policy for administrators is a list of approved applications to run. In a case like this, the Logo program documentation recommends using ShellExecute instead of CreateProcess. CreateProcess does not check the system policy for approved applications, while ShellExecute does.
We understand this recommendation, but there is still no assurance that an application doesn't call Create-Processunless the folks at VeriTest are extremely thorough about exercising all code paths in your application. ShellExecute also doesn't offer the control of CreateProcess; it's missing the parameters for security attributes, inheritance, and startup information. Ultimately, it's your call as the developer, but we can't help wishing we had IShellExecuteEx2.
Other Gold Logo requirements include the use of the Windows Installer technology to "ensure a robust, self-repairing installation." This is when all that poring through MSJ comes in handy. Mike Kelly gave you a head start in his September 1998 article, "Gain Control of Application Setup and Maintenance with the New Windows Installer," where he explored the use of the Windows Installer based on his experiences as an Office developer. Support for OnNow/ACPI (Advanced Configuration and Power Management Interface) capabilities is also required; again MSJ comes through. Previous MSJ features on WDM by Walter Oney (November 1997 and December 1997) and Ervin Peretz, as well as the Nerditorium column, should put you ahead of the game.
We're anxious to see the Basic and Gold Logos, but we'll all just have to wait. The logo requirements document is subject to change based on your feedback. So, if you'd like to have some influence, or have a question or suggestion, then keep tabs on the MSDN Web page at http://msdn.microsoft.com/developer/winlogo/win2000.htm and send email to firstname.lastname@example.org.