StringCopy
PWCHAR StringCopyW(PWCHAR String1, LPCWSTR String2)
{
PWCHAR p = String1;
while ((*p++ = *String2++) != 0);
return String1;
}
PWCHAR StringCopyW2(PWCHAR String1, LPCWSTR String2)
{
PWCHAR p = String1;
while (*String2)
*p++ = *String2++;
*p = L'\0';
return String1;
}
PWCHAR StringCopyW3(PWCHAR String1, LPCWSTR String2)
{
SIZE_T i = 0;
while (String2[i] != L'\0')
{
String1[i] = String2[i];
i++;
}
String1[i] = L'\0';
return String1;
}
PWCHAR StringCopyNW(PWCHAR String1, LPCWSTR String2, SIZE_T MaxCount)
{
PWCHAR p = String1;
while (MaxCount-- && (*p++ = *String2++) != L'\0');
if (MaxCount == (SIZE_T)-1 && p > String1)
*(p - 1) = L'\0';
return String1;
}
PWCHAR StringCopyW4(PWCHAR String1, LPCWSTR String2)
{
PWCHAR p = String1;
if (((ULONG_PTR)p & 7) == 0 && ((ULONG_PTR)String2 & 7) == 0)
{
PULONG64 p64 = (PULONG64)p;
PULONG64 s64 = (PULONG64)String2;
while (TRUE)
{
ULONG64 Fragment = *s64;
*p64 = Fragment;
PWCHAR Verify = (PWCHAR)&Fragment;
if (!Verify[0] || !Verify[1] || !Verify[2] || !Verify[3])
break;
p64++;
s64++;
}
p = (PWCHAR)p64;
String2 = (PWCHAR)s64;
}
while ((*p++ = *String2++) != L'\0');
return String1;
}
PWCHAR StringCopyW5(PWCHAR String1, LPCWSTR String2)
{
for (SIZE_T i = 0; ; i++)
{
String1[i] = String2[i];
if (String2[i] == L'\0')
break;
}
return String1;
}Last updated