Menu

#190 RtlEqualLuid Macro definition buggy

closed-fixed
nobody
w32api (251)
2004-04-14
2004-04-12
No

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

Discussion

  • Danny Smith

    Danny Smith - 2004-04-14
    • status: open --> closed-fixed
     
  • Danny Smith

    Danny Smith - 2004-04-14

    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