Eric Kohl wrote:
  Alex Ionescu wrote:
  Hi Eric,
 Unforunately, we don't have the liberty to do this, since the real
 PSDK file doesn't, and MS Header compatibility is a goal. The NDK
 must always follow ntsecapi.h.
 Best regards,
 Alex Ionescu 
 Okay, I'll revert this patch!
 Nevertheless, the required sequence of includes
     #include <windows.h>
     #include <ntsecapi.h>
     #define NTOS_MODE_USER
     #include <ntndk/ntndk.h>
 looks very broken to me. Shouldn't the DDK/NDK headers get included
 first, followed by windows.h and other headers? 
Well, DDK should never be followed or anywhere near windows.h! And NDK
is an add-on to the DDK/PSDK, so it's normal that it follows. The point
is to "Add-on" anything that isn't already provided, so a typical
sequence would look like:
#include <windows.h>
#include <winsock2.h>
#include <ntsecapi.h>
#include <any other header you want"
#define NTOS_MODE_USER
#include <ntndk/ntndk.h>
 The MS DDK defines NT_INCLUDED right at the top of ntddk.h and the SDK
 headers skip certain sections if NT_INCLUDED is defined. Shouldn't we
 do it the same way? At least it will lead to a 'cleaner' include
 sequence:
     #define NTOS_MODE_USER
     #include <ntndk/ntndk.h>
      #include <windows.h>
     #include <ntsecapi.h>
 
This would mean the NDK would have to import windows.h, which I don't
like, because some apps don't need to use windows.h (think Native Apps).
I prefer to think of the NDK much more as an add-on, then a master
header set.
 By the way, I planned to remove the Nt*Channel() and
 NtQueryOleDirectryFile() prototypes from include/ndk/zwfuncs.h because
 they are entirely obsolete. Do you agree? 
Oh, yes, sure. Thanks.
OT: You'll finally get that proper Parse Routine for registry code soon.
 Regards,
 Eric  
Best regards,
Alex Ionescu