17 #define SEED_BUFFER_SIZE 6 21 #define TICKS_PER_CLOCK_TICK 1000 22 #define SECSPERDAY 86400 23 #define TICKSPERSEC 10000000 26 #define SECS_15_OCT_1582_TO_1601 ((17 + 30 + 31 + 365 * 18 + 5) * SECSPERDAY) 27 #define TICKS_15_OCT_1582_TO_1601 ((ULONGLONG)SECS_15_OCT_1582_TO_1601 * TICKSPERSEC) 30 #define TIME_FRAME 10000 66 #define VALUE_BUFFER_SIZE 20 105 DPRINT(
"ZwQueryValueKey() failed (Status %lx)\n",
Status);
116 DPRINT(
"Loaded sequence %lx\n", *Sequence);
120 #undef VALUE_BUFFER_SIZE 161 DPRINT(
"ZwSetValueKey() failed (Status %lx)\n",
Status);
399 sizeof(Uuid->Data4));
408 if (AllocatedCount >= 0)
449 Uuid->Data3 = ((
Time.
HighPart >> 16) & 0x0FFF) | 0x1000;
465 ULONG IntRange, IntSequence;
523 *Sequence = IntSequence;
#define KeQuerySystemTime(t)
BOOLEAN NTAPI ExLuidInitialization(VOID)
VOID NTAPI SeCaptureSubjectContext(OUT PSECURITY_SUBJECT_CONTEXT SubjectContext)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG _In_ PFLT_CALLBACK_DATA _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS _In_opt_ PSECURITY_SUBJECT_CONTEXT SubjectContext
VOID NTAPI SeReleaseSubjectContext(IN PSECURITY_SUBJECT_CONTEXT SubjectContext)
LARGE_INTEGER NTAPI KeQueryPerformanceCounter(IN PLARGE_INTEGER PerformanceFreq)
#define VALUE_BUFFER_SIZE
#define OBJ_CASE_INSENSITIVE
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
#define KeGetPreviousMode()
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID _Out_ PHANDLE Token
KPROCESSOR_MODE NTAPI ExGetPreviousMode(VOID)
BOOLEAN ExpUuidCacheValid
NTSTATUS NTAPI NtAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId)
#define OBJ_KERNEL_HANDLE
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
NTSTATUS NTAPI SeQueryAuthenticationIdToken(IN PACCESS_TOKEN Token, OUT PLUID LogonId)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define RtlEqualLuid(Luid1, Luid2)
BOOLEAN NTAPI ExpUuidInitialization(VOID)
#define EXCEPTION_EXECUTE_HANDLER
LARGE_INTEGER ExpUuidLastTimeAllocated
static VOID ExpUuidSaveSequenceNumberIf(VOID)
static NTSTATUS ExpUuidSaveSequenceNumber(PULONG Sequence)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
#define TICKS_15_OCT_1582_TO_1601
_In_ KPROCESSOR_MODE PreviousMode
#define _SEH2_YIELD(STMT_)
#define NT_SUCCESS(StatCode)
ULONG ExpUuidSequenceNumber
static NTSTATUS ExpUuidGetValues(PUUID_CACHED_VALUES_STRUCT CachedValues)
struct _KEY_VALUE_PARTIAL_INFORMATION * PKEY_VALUE_PARTIAL_INFORMATION
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
#define STATUS_ACCESS_DENIED
#define STATUS_UNSUCCESSFUL
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
NTSTATUS NTAPI NtSetUuidSeed(IN PUCHAR Seed)
#define InterlockedExchangeAdd64
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
#define InterlockedDecrement
#define SeQuerySubjectContextToken(SubjectContext)
#define TICKS_PER_CLOCK_TICK
LONG NTAPI ExSystemExceptionFilter(VOID)
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
BOOLEAN ExpUuidSequenceNumberNotSaved
VOID NTAPI ExAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId)
static NTSTATUS ExpAllocateUuids(PULARGE_INTEGER Time, PULONG Range, PULONG Sequence)
UUID_CACHED_VALUES_STRUCT ExpUuidCachedValues
static LARGE_INTEGER Frequency
static LARGE_INTEGER Counter
static NTSTATUS ExpUuidLoadSequenceNumber(PULONG Sequence)
NTSTATUS NTAPI NtAllocateUuids(OUT PULARGE_INTEGER Time, OUT PULONG Range, OUT PULONG Sequence, OUT PUCHAR Seed)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define InitializeObjectAttributes(p, n, a, r, s)
#define RtlCopyMemory(Destination, Source, Length)
BOOLEAN ExpUuidSequenceNumberValid
UCHAR ClockSeqHiAndReserved
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionCode()
NTSTATUS NTAPI ExUuidCreate(OUT UUID *Uuid)
static PLARGE_INTEGER Time
#define RPC_NT_UUID_LOCAL_ONLY
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength