diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index 679821ec4a7dc8f8d646b5162b90ad63f3d2ad04..ac7ecb59c73dc62a8f7798d625961d38fb0b0a4a 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -262,8 +262,8 @@ OpenSCManagerW( LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, BOOL WINAPI AllocateLocallyUniqueId( PLUID lpluid ) { - lpluid->s.LowPart = time(NULL); - lpluid->s.HighPart = 0; + lpluid->LowPart = time(NULL); + lpluid->HighPart = 0; return TRUE; } diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index be0dcdbc789a86ab2f2a7cb1380595f51462eeab..46f1a107d19448e01b74f43381842dd36b96cb1f 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -692,12 +692,15 @@ NTSTATUS WINAPI NtPowerInformation(DWORD x1,DWORD x2,DWORD x3,DWORD x4,DWORD x5) */ NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID Luid) { - static LUID luid; + static LUID luid; - FIXME("%p (0x%08lx%08lx)\n", Luid, luid.DUMMYSTRUCTNAME.HighPart, luid.DUMMYSTRUCTNAME.LowPart); + FIXME("%p (0x%08lx%08lx)\n", Luid, luid.HighPart, luid.LowPart); - luid.QuadPart++; - - Luid->QuadPart = luid.QuadPart; - return STATUS_SUCCESS; + luid.LowPart++; + if (luid.LowPart==0) + luid.HighPart++; + Luid->HighPart = luid.HighPart; + Luid->LowPart = luid.LowPart; + + return STATUS_SUCCESS; } diff --git a/include/winnt.h b/include/winnt.h index 40a1ff1edf3c068b4a6940790b8be536255564f1..4c12835202a79363ef4197db711830c0ea2e49ee 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -3591,12 +3591,15 @@ typedef union _ULARGE_INTEGER { * Locally Unique Identifier */ -typedef LARGE_INTEGER LUID,*PLUID; +typedef struct _LUID { + DWORD LowPart; + LONG HighPart; +} LUID, *PLUID; typedef struct _LUID_AND_ATTRIBUTES { - LUID Luid; - DWORD Attributes; -} LUID_AND_ATTRIBUTES; + LUID Luid; + DWORD Attributes; +} LUID_AND_ATTRIBUTES; /* * PRIVILEGE_SET