parent
c3202c200a
commit
5d89d59361
|
@ -1,3 +1,9 @@
|
|||
typedef struct _LSA_UNICODE_STRING {
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} LSA_UNICODE_STRING, * PLSA_UNICODE_STRING, UNICODE_STRING, * PUNICODE_STRING;
|
||||
|
||||
typedef struct _LDR_MODULE {
|
||||
LIST_ENTRY InLoadOrderModuleList;
|
||||
LIST_ENTRY InMemoryOrderModuleList;
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
DWORD Win32FromHResult(HRESULT Result)
|
||||
{
|
||||
if ((Result & 0xFFFF0000) == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, 0))
|
||||
return HRESULT_CODE(Result);
|
||||
|
||||
if (Result == S_OK)
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
return ERROR_CAN_NOT_COMPLETE;
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
DWORD HashStringDjb2A(PCHAR String)
|
||||
{
|
||||
ULONG Hash = 5381;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash = ((Hash << 5) + Hash) + c;
|
||||
|
||||
return Hash;
|
||||
}
|
||||
DWORD HashStringDjb2A(PCHAR String)
|
||||
{
|
||||
ULONG Hash = 5381;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash = ((Hash << 5) + Hash) + c;
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
DWORD HashStringDjb2W(PWCHAR String)
|
||||
{
|
||||
ULONG Hash = 5381;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash = ((Hash << 5) + Hash) + c;
|
||||
|
||||
return Hash;
|
||||
DWORD HashStringDjb2W(PWCHAR String)
|
||||
{
|
||||
ULONG Hash = 5381;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash = ((Hash << 5) + Hash) + c;
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
ULONG HashStringFowlerNollVoVariant1aA(PCHAR String)
|
||||
{
|
||||
ULONG Hash = 0x811c9dc5;
|
||||
|
||||
while (*String)
|
||||
{
|
||||
Hash ^= (UCHAR)*String++;
|
||||
Hash *= 0x01000193;
|
||||
}
|
||||
|
||||
return Hash;
|
||||
ULONG HashStringFowlerNollVoVariant1aA(PCHAR String)
|
||||
{
|
||||
ULONG Hash = 0x811c9dc5;
|
||||
|
||||
while (*String)
|
||||
{
|
||||
Hash ^= (UCHAR)*String++;
|
||||
Hash *= 0x01000193;
|
||||
}
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
ULONG HashStringFowlerNollVoVariant1aW(PWCHAR String)
|
||||
{
|
||||
ULONG Hash = 0x811c9dc5;
|
||||
|
||||
while (*String)
|
||||
{
|
||||
Hash ^= (UCHAR)*String++;
|
||||
Hash *= 0x01000193;
|
||||
}
|
||||
|
||||
return Hash;
|
||||
ULONG HashStringFowlerNollVoVariant1aW(PWCHAR String)
|
||||
{
|
||||
ULONG Hash = 0x811c9dc5;
|
||||
|
||||
while (*String)
|
||||
{
|
||||
Hash ^= (UCHAR)*String++;
|
||||
Hash *= 0x01000193;
|
||||
}
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,19 +1,19 @@
|
|||
UINT32 HashStringJenkinsOneAtATime32BitA(PCHAR String)
|
||||
{
|
||||
SIZE_T Index = 0;
|
||||
UINT32 Hash = 0;
|
||||
SIZE_T Length = StringLengthA(String);
|
||||
|
||||
while (Index != Length)
|
||||
{
|
||||
Hash += String[Index++];
|
||||
Hash += Hash << 10;
|
||||
Hash ^= Hash >> 6;
|
||||
}
|
||||
|
||||
Hash += Hash << 3;
|
||||
Hash ^= Hash >> 11;
|
||||
Hash += Hash << 15;
|
||||
|
||||
return Hash;
|
||||
}
|
||||
UINT32 HashStringJenkinsOneAtATime32BitA(PCHAR String)
|
||||
{
|
||||
SIZE_T Index = 0;
|
||||
UINT32 Hash = 0;
|
||||
SIZE_T Length = StringLengthA(String);
|
||||
|
||||
while (Index != Length)
|
||||
{
|
||||
Hash += String[Index++];
|
||||
Hash += Hash << 10;
|
||||
Hash ^= Hash >> 6;
|
||||
}
|
||||
|
||||
Hash += Hash << 3;
|
||||
Hash ^= Hash >> 11;
|
||||
Hash += Hash << 15;
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,19 +1,19 @@
|
|||
UINT32 HashStringJenkinsOneAtATime32BitW(PWCHAR String)
|
||||
{
|
||||
SIZE_T Index = 0;
|
||||
UINT32 Hash = 0;
|
||||
SIZE_T Length = StringLengthW(String);
|
||||
|
||||
while (Index != Length)
|
||||
{
|
||||
Hash += String[Index++];
|
||||
Hash += Hash << 10;
|
||||
Hash ^= Hash >> 6;
|
||||
}
|
||||
|
||||
Hash += Hash << 3;
|
||||
Hash ^= Hash >> 11;
|
||||
Hash += Hash << 15;
|
||||
|
||||
return Hash;
|
||||
UINT32 HashStringJenkinsOneAtATime32BitW(PWCHAR String)
|
||||
{
|
||||
SIZE_T Index = 0;
|
||||
UINT32 Hash = 0;
|
||||
SIZE_T Length = StringLengthW(String);
|
||||
|
||||
while (Index != Length)
|
||||
{
|
||||
Hash += String[Index++];
|
||||
Hash += Hash << 10;
|
||||
Hash ^= Hash >> 6;
|
||||
}
|
||||
|
||||
Hash += Hash << 3;
|
||||
Hash ^= Hash >> 11;
|
||||
Hash += Hash << 15;
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
DWORD HashStringLoseLoseA(PCHAR String)
|
||||
{
|
||||
ULONG Hash = 0;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash += c;
|
||||
|
||||
return Hash;
|
||||
DWORD HashStringLoseLoseA(PCHAR String)
|
||||
{
|
||||
ULONG Hash = 0;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash += c;
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
DWORD HashStringLoseLoseW(PWCHAR String)
|
||||
{
|
||||
ULONG Hash = 0;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash += c;
|
||||
|
||||
return Hash;
|
||||
DWORD HashStringLoseLoseW(PWCHAR String)
|
||||
{
|
||||
ULONG Hash = 0;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash += c;
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,28 +1,28 @@
|
|||
SIZE_T StringLengthA(LPCSTR String)
|
||||
{
|
||||
LPCSTR String2;
|
||||
|
||||
for (String2 = String; *String2; ++String2);
|
||||
|
||||
return (String2 - String);
|
||||
}
|
||||
|
||||
UINT32 HashStringRotr32SubA(UINT32 Value, UINT Count)
|
||||
{
|
||||
DWORD Mask = (CHAR_BIT * sizeof(Value) - 1);
|
||||
Count &= Mask;
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 4146)
|
||||
return (Value >> Count) | (Value << ((-Count) & Mask));
|
||||
#pragma warning( pop )
|
||||
}
|
||||
|
||||
INT HashStringRotr32A(PCHAR String)
|
||||
{
|
||||
INT Value = 0;
|
||||
|
||||
for (INT Index = 0; Index < StringLengthA(String); Index++)
|
||||
Value = String[Index] + HashStringRotr32SubA(Value, 7);
|
||||
|
||||
return Value;
|
||||
SIZE_T StringLengthA(LPCSTR String)
|
||||
{
|
||||
LPCSTR String2;
|
||||
|
||||
for (String2 = String; *String2; ++String2);
|
||||
|
||||
return (String2 - String);
|
||||
}
|
||||
|
||||
UINT32 HashStringRotr32SubA(UINT32 Value, UINT Count)
|
||||
{
|
||||
DWORD Mask = (CHAR_BIT * sizeof(Value) - 1);
|
||||
Count &= Mask;
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 4146)
|
||||
return (Value >> Count) | (Value << ((-Count) & Mask));
|
||||
#pragma warning( pop )
|
||||
}
|
||||
|
||||
INT HashStringRotr32A(PCHAR String)
|
||||
{
|
||||
INT Value = 0;
|
||||
|
||||
for (INT Index = 0; Index < StringLengthA(String); Index++)
|
||||
Value = String[Index] + HashStringRotr32SubA(Value, 7);
|
||||
|
||||
return Value;
|
||||
}
|
|
@ -1,28 +1,28 @@
|
|||
SIZE_T StringLengthW(LPCWSTR String)
|
||||
{
|
||||
LPCWSTR String2;
|
||||
|
||||
for (String2 = String; *String2; ++String2);
|
||||
|
||||
return (String2 - String);
|
||||
}
|
||||
|
||||
UINT32 HashStringRotr32SubW(UINT32 Value, UINT Count)
|
||||
{
|
||||
DWORD Mask = (CHAR_BIT * sizeof(Value) - 1);
|
||||
Count &= Mask;
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 4146)
|
||||
return (Value >> Count) | (Value << ((-Count) & Mask));
|
||||
#pragma warning( pop )
|
||||
}
|
||||
|
||||
INT HashStringRotr32W(PWCHAR String)
|
||||
{
|
||||
INT Value = 0;
|
||||
|
||||
for (INT Index = 0; Index < StringLengthW(String); Index++)
|
||||
Value = String[Index] + HashStringRotr32SubW(Value, 7);
|
||||
|
||||
return Value;
|
||||
SIZE_T StringLengthW(LPCWSTR String)
|
||||
{
|
||||
LPCWSTR String2;
|
||||
|
||||
for (String2 = String; *String2; ++String2);
|
||||
|
||||
return (String2 - String);
|
||||
}
|
||||
|
||||
UINT32 HashStringRotr32SubW(UINT32 Value, UINT Count)
|
||||
{
|
||||
DWORD Mask = (CHAR_BIT * sizeof(Value) - 1);
|
||||
Count &= Mask;
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 4146)
|
||||
return (Value >> Count) | (Value << ((-Count) & Mask));
|
||||
#pragma warning( pop )
|
||||
}
|
||||
|
||||
INT HashStringRotr32W(PWCHAR String)
|
||||
{
|
||||
INT Value = 0;
|
||||
|
||||
for (INT Index = 0; Index < StringLengthW(String); Index++)
|
||||
Value = String[Index] + HashStringRotr32SubW(Value, 7);
|
||||
|
||||
return Value;
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
DWORD HashStringSdbmA(PCHAR String)
|
||||
{
|
||||
ULONG Hash = 0;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash = c + (Hash << 6) + (Hash << 16) - Hash;
|
||||
|
||||
return Hash;
|
||||
DWORD HashStringSdbmA(PCHAR String)
|
||||
{
|
||||
ULONG Hash = 0;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash = c + (Hash << 6) + (Hash << 16) - Hash;
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
DWORD HashStringSdbmW(PWCHAR String)
|
||||
{
|
||||
ULONG Hash = 0;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash = c + (Hash << 6) + (Hash << 16) - Hash;
|
||||
|
||||
return Hash;
|
||||
}
|
||||
DWORD HashStringSdbmW(PWCHAR String)
|
||||
{
|
||||
ULONG Hash = 0;
|
||||
INT c;
|
||||
|
||||
while (c = *String++)
|
||||
Hash = c + (Hash << 6) + (Hash << 16) - Hash;
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,69 +1,69 @@
|
|||
#if !defined (Get16Bits)
|
||||
#define Get16Bits(d) ((((UINT32)(((const UINT8*)(d))[1])) << 8)\
|
||||
+(UINT32)(((const UINT8*)(d))[0]) )
|
||||
#endif
|
||||
|
||||
SIZE_T StringLengthA(LPCSTR String)
|
||||
{
|
||||
LPCSTR String2;
|
||||
|
||||
for (String2 = String; *String2; ++String2);
|
||||
|
||||
return (String2 - String);
|
||||
}
|
||||
|
||||
UINT32 HashStringSuperFastHashA(PCHAR String)
|
||||
{
|
||||
INT Length = StringLengthA(String);
|
||||
UINT32 Hash = Length;
|
||||
INT Tmp = 0;
|
||||
|
||||
INT Rem = Length & 3;
|
||||
Length >>= 2;
|
||||
|
||||
for (; Length > 0; Length--)
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Tmp = (Get16Bits(String + 2) << 11) ^ Hash;
|
||||
Hash = (Hash << 16) ^ Tmp;
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 6305)
|
||||
String += 2 * sizeof(UINT16);
|
||||
#pragma warning( pop )
|
||||
Hash += Hash >> 11;
|
||||
}
|
||||
|
||||
switch (Rem)
|
||||
{
|
||||
case 3:
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Hash ^= Hash << 16;
|
||||
Hash ^= ((UCHAR)String[sizeof(UINT16)]) << 18;
|
||||
Hash += Hash >> 11;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Hash ^= Hash << 11;
|
||||
Hash ^= Hash >> 17;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
Hash += (UCHAR)*String;
|
||||
Hash ^= Hash << 10;
|
||||
Hash += Hash >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
Hash ^= Hash << 3;
|
||||
Hash += Hash >> 5;
|
||||
Hash ^= Hash << 4;
|
||||
Hash += Hash >> 17;
|
||||
Hash ^= Hash << 25;
|
||||
Hash += Hash >> 6;
|
||||
|
||||
return Hash;
|
||||
#if !defined (Get16Bits)
|
||||
#define Get16Bits(d) ((((UINT32)(((const UINT8*)(d))[1])) << 8)\
|
||||
+(UINT32)(((const UINT8*)(d))[0]) )
|
||||
#endif
|
||||
|
||||
SIZE_T StringLengthA(LPCSTR String)
|
||||
{
|
||||
LPCSTR String2;
|
||||
|
||||
for (String2 = String; *String2; ++String2);
|
||||
|
||||
return (String2 - String);
|
||||
}
|
||||
|
||||
UINT32 HashStringSuperFastHashA(PCHAR String)
|
||||
{
|
||||
INT Length = StringLengthA(String);
|
||||
UINT32 Hash = Length;
|
||||
INT Tmp = 0;
|
||||
|
||||
INT Rem = Length & 3;
|
||||
Length >>= 2;
|
||||
|
||||
for (; Length > 0; Length--)
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Tmp = (Get16Bits(String + 2) << 11) ^ Hash;
|
||||
Hash = (Hash << 16) ^ Tmp;
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 6305)
|
||||
String += 2 * sizeof(UINT16);
|
||||
#pragma warning( pop )
|
||||
Hash += Hash >> 11;
|
||||
}
|
||||
|
||||
switch (Rem)
|
||||
{
|
||||
case 3:
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Hash ^= Hash << 16;
|
||||
Hash ^= ((UCHAR)String[sizeof(UINT16)]) << 18;
|
||||
Hash += Hash >> 11;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Hash ^= Hash << 11;
|
||||
Hash ^= Hash >> 17;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
Hash += (UCHAR)*String;
|
||||
Hash ^= Hash << 10;
|
||||
Hash += Hash >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
Hash ^= Hash << 3;
|
||||
Hash += Hash >> 5;
|
||||
Hash ^= Hash << 4;
|
||||
Hash += Hash >> 17;
|
||||
Hash ^= Hash << 25;
|
||||
Hash += Hash >> 6;
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,69 +1,69 @@
|
|||
#if !defined (Get16Bits)
|
||||
#define Get16Bits(d) ((((UINT32)(((const UINT8*)(d))[1])) << 8)\
|
||||
+(UINT32)(((const UINT8*)(d))[0]) )
|
||||
#endif
|
||||
|
||||
SIZE_T StringLengthW(LPCWSTR String)
|
||||
{
|
||||
LPCWSTR String2;
|
||||
|
||||
for (String2 = String; *String2; ++String2);
|
||||
|
||||
return (String2 - String);
|
||||
}
|
||||
|
||||
UINT32 HashStringSuperFastHashW(PWCHAR String)
|
||||
{
|
||||
INT Length = StringLengthW(String);
|
||||
UINT32 Hash = Length;
|
||||
INT Tmp = 0;
|
||||
|
||||
INT Rem = Length & 3;
|
||||
Length >>= 2;
|
||||
|
||||
for (; Length > 0; Length--)
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Tmp = (Get16Bits(String + 2) << 11) ^ Hash;
|
||||
Hash = (Hash << 16) ^ Tmp;
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 6305)
|
||||
String += 2 * sizeof(UINT16);
|
||||
#pragma warning( pop )
|
||||
Hash += Hash >> 11;
|
||||
}
|
||||
|
||||
switch (Rem)
|
||||
{
|
||||
case 3:
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Hash ^= Hash << 16;
|
||||
Hash ^= ((UCHAR)String[sizeof(UINT16)]) << 18;
|
||||
Hash += Hash >> 11;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Hash ^= Hash << 11;
|
||||
Hash ^= Hash >> 17;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
Hash += (UCHAR)*String;
|
||||
Hash ^= Hash << 10;
|
||||
Hash += Hash >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
Hash ^= Hash << 3;
|
||||
Hash += Hash >> 5;
|
||||
Hash ^= Hash << 4;
|
||||
Hash += Hash >> 17;
|
||||
Hash ^= Hash << 25;
|
||||
Hash += Hash >> 6;
|
||||
|
||||
return Hash;
|
||||
#if !defined (Get16Bits)
|
||||
#define Get16Bits(d) ((((UINT32)(((const UINT8*)(d))[1])) << 8)\
|
||||
+(UINT32)(((const UINT8*)(d))[0]) )
|
||||
#endif
|
||||
|
||||
SIZE_T StringLengthW(LPCWSTR String)
|
||||
{
|
||||
LPCWSTR String2;
|
||||
|
||||
for (String2 = String; *String2; ++String2);
|
||||
|
||||
return (String2 - String);
|
||||
}
|
||||
|
||||
UINT32 HashStringSuperFastHashW(PWCHAR String)
|
||||
{
|
||||
INT Length = StringLengthW(String);
|
||||
UINT32 Hash = Length;
|
||||
INT Tmp = 0;
|
||||
|
||||
INT Rem = Length & 3;
|
||||
Length >>= 2;
|
||||
|
||||
for (; Length > 0; Length--)
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Tmp = (Get16Bits(String + 2) << 11) ^ Hash;
|
||||
Hash = (Hash << 16) ^ Tmp;
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 6305)
|
||||
String += 2 * sizeof(UINT16);
|
||||
#pragma warning( pop )
|
||||
Hash += Hash >> 11;
|
||||
}
|
||||
|
||||
switch (Rem)
|
||||
{
|
||||
case 3:
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Hash ^= Hash << 16;
|
||||
Hash ^= ((UCHAR)String[sizeof(UINT16)]) << 18;
|
||||
Hash += Hash >> 11;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
Hash += Get16Bits(String);
|
||||
Hash ^= Hash << 11;
|
||||
Hash ^= Hash >> 17;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
Hash += (UCHAR)*String;
|
||||
Hash ^= Hash << 10;
|
||||
Hash += Hash >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
Hash ^= Hash << 3;
|
||||
Hash += Hash >> 5;
|
||||
Hash ^= Hash << 4;
|
||||
Hash += Hash >> 17;
|
||||
Hash ^= Hash << 25;
|
||||
Hash += Hash >> 6;
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,19 +1,19 @@
|
|||
INT HashStringUnknownGenericHashA(PCHAR String)
|
||||
{
|
||||
PCHAR Pointer;
|
||||
INT Generic;
|
||||
INT Hash = 0;
|
||||
|
||||
for (Pointer = String; *Pointer != '\0'; Pointer++)
|
||||
{
|
||||
Hash = (Hash << 4) + (INT)(*Pointer);
|
||||
Generic = Hash & 0xF0000000L;
|
||||
|
||||
if (Generic != 0)
|
||||
Hash = Hash ^ (Generic >> 24);
|
||||
|
||||
Hash = Hash &~ Generic;
|
||||
}
|
||||
|
||||
return Hash;
|
||||
INT HashStringUnknownGenericHashA(PCHAR String)
|
||||
{
|
||||
PCHAR Pointer;
|
||||
INT Generic;
|
||||
INT Hash = 0;
|
||||
|
||||
for (Pointer = String; *Pointer != '\0'; Pointer++)
|
||||
{
|
||||
Hash = (Hash << 4) + (INT)(*Pointer);
|
||||
Generic = Hash & 0xF0000000L;
|
||||
|
||||
if (Generic != 0)
|
||||
Hash = Hash ^ (Generic >> 24);
|
||||
|
||||
Hash = Hash &~ Generic;
|
||||
}
|
||||
|
||||
return Hash;
|
||||
}
|
|
@ -1,19 +1,19 @@
|
|||
INT HashStringUnknownGenericHashW(PWCHAR String)
|
||||
{
|
||||
PWCHAR Pointer;
|
||||
INT Generic;
|
||||
INT Hash = 0;
|
||||
|
||||
for (Pointer = String; *Pointer != '\0'; Pointer++)
|
||||
{
|
||||
Hash = (Hash << 4) + (INT)(*Pointer);
|
||||
Generic = Hash & 0xF0000000L;
|
||||
|
||||
if (Generic != 0)
|
||||
Hash = Hash ^ (Generic >> 24);
|
||||
|
||||
Hash = Hash &~ Generic;
|
||||
}
|
||||
|
||||
return Hash;
|
||||
INT HashStringUnknownGenericHashW(PWCHAR String)
|
||||
{
|
||||
PWCHAR Pointer;
|
||||
INT Generic;
|
||||
INT Hash = 0;
|
||||
|
||||
for (Pointer = String; *Pointer != '\0'; Pointer++)
|
||||
{
|
||||
Hash = (Hash << 4) + (INT)(*Pointer);
|
||||
Generic = Hash & 0xF0000000L;
|
||||
|
||||
if (Generic != 0)
|
||||
Hash = Hash ^ (Generic >> 24);
|
||||
|
||||
Hash = Hash &~ Generic;
|
||||
}
|
||||
|
||||
return Hash;
|
||||
}
|
Loading…
Reference in New Issue