ekohl@svn.reactos.com wrote:
Don't redefine ANSI_STRING, UNICODE_STRING and OBJECT_ATTRIBUTES if the NDK already defines them.
Updated files: trunk/reactos/w32api/include/ntsecapi.h
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
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?
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>
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?
Regards, Eric
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