The definition of the macro RtlEqualLuid in ddk/winddk.h
doesn't fit the DDK documentation.
first, the names used inside the macro are not those
used in the definition (Luid1 vs. _Luid1), so the current
definition references two undeclared variables (Luid1 and
Luid2).
secondly, the DDK docs state:
Luid1: Pointer to a LUID to compare
Luid2: Pointer to a LUID to compare
this is contradictory to the declaration on the same
page, but the sample code for tokenmon from
sysinternals suggests that the arguments are actually
PLUIDs.
--- winddk.h.orig Fri Sep 12 10:14:08 2003
+++ winddk.h Mon Apr 12 17:06:00 2004
@@ -4391,7 +4391,7 @@ RtlDeleteRegistryValue(
*/
#define RtlEqualLuid(_Luid1, \
_Luid2) \
- ((Luid1.LowPart == Luid2.LowPart) && (Luid1.HighPart
== Luid2.HighPart))
+ (((_Luid1)->LowPart == (_Luid2)->LowPart) &&
((_Luid1)->HighPart == (_Luid2)->HighPart))
/*
* ULONG
Logged In: YES
user_id=11494
Thanks, I've committed to CVS (I also added a cast to
BOOLEAN, as per the commented prototype).
Really, this (and other macro in ddk) might be better as static
inline functions, to take advantage of type checking.
Danny
Danny