mirror of
https://github.com/reactos/reactos.git
synced 2024-06-30 09:50:07 +00:00
* Sync up to trunk head (r65183).
svn path=/branches/shell-experiments/; revision=65184
This commit is contained in:
parent
6f1b132494
commit
c472e29a70
|
@ -130,7 +130,12 @@ DisplayUser(LPWSTR lpUserName)
|
||||||
{
|
{
|
||||||
PUSER_MODALS_INFO_0 pUserModals = NULL;
|
PUSER_MODALS_INFO_0 pUserModals = NULL;
|
||||||
PUSER_INFO_4 pUserInfo = NULL;
|
PUSER_INFO_4 pUserInfo = NULL;
|
||||||
|
PLOCALGROUP_USERS_INFO_0 pLocalGroupInfo = NULL;
|
||||||
|
PGROUP_USERS_INFO_0 pGroupInfo = NULL;
|
||||||
|
DWORD dwLocalGroupRead, dwLocalGroupTotal;
|
||||||
|
DWORD dwGroupRead, dwGroupTotal;
|
||||||
DWORD dwLastSet;
|
DWORD dwLastSet;
|
||||||
|
DWORD i;
|
||||||
NET_API_STATUS Status;
|
NET_API_STATUS Status;
|
||||||
|
|
||||||
/* Modify the user */
|
/* Modify the user */
|
||||||
|
@ -147,6 +152,27 @@ DisplayUser(LPWSTR lpUserName)
|
||||||
if (Status != NERR_Success)
|
if (Status != NERR_Success)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
|
Status = NetUserGetLocalGroups(NULL,
|
||||||
|
lpUserName,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
(LPBYTE*)&pLocalGroupInfo,
|
||||||
|
MAX_PREFERRED_LENGTH,
|
||||||
|
&dwLocalGroupRead,
|
||||||
|
&dwLocalGroupTotal);
|
||||||
|
if (Status != NERR_Success)
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
Status = NetUserGetGroups(NULL,
|
||||||
|
lpUserName,
|
||||||
|
0,
|
||||||
|
(LPBYTE*)&pGroupInfo,
|
||||||
|
MAX_PREFERRED_LENGTH,
|
||||||
|
&dwGroupRead,
|
||||||
|
&dwGroupTotal);
|
||||||
|
if (Status != NERR_Success)
|
||||||
|
goto done;
|
||||||
|
|
||||||
PrintToConsole(L"User name %s\n", pUserInfo->usri4_name);
|
PrintToConsole(L"User name %s\n", pUserInfo->usri4_name);
|
||||||
PrintToConsole(L"Full name %s\n", pUserInfo->usri4_full_name);
|
PrintToConsole(L"Full name %s\n", pUserInfo->usri4_full_name);
|
||||||
PrintToConsole(L"Comment %s\n", pUserInfo->usri4_comment);
|
PrintToConsole(L"Comment %s\n", pUserInfo->usri4_comment);
|
||||||
|
@ -161,7 +187,7 @@ DisplayUser(LPWSTR lpUserName)
|
||||||
|
|
||||||
PrintToConsole(L"\n");
|
PrintToConsole(L"\n");
|
||||||
|
|
||||||
PrintToConsole(L"Password expires ");
|
PrintToConsole(L"Password last set ");
|
||||||
dwLastSet = GetTimeInSeconds() - pUserInfo->usri4_password_age;
|
dwLastSet = GetTimeInSeconds() - pUserInfo->usri4_password_age;
|
||||||
PrintDateTime(dwLastSet);
|
PrintDateTime(dwLastSet);
|
||||||
|
|
||||||
|
@ -178,7 +204,7 @@ DisplayUser(LPWSTR lpUserName)
|
||||||
PrintToConsole(L"User may change password %s\n", (pUserInfo->usri4_flags & UF_PASSWD_CANT_CHANGE) ? L"No" : L"Yes");
|
PrintToConsole(L"User may change password %s\n", (pUserInfo->usri4_flags & UF_PASSWD_CANT_CHANGE) ? L"No" : L"Yes");
|
||||||
|
|
||||||
PrintToConsole(L"\n");
|
PrintToConsole(L"\n");
|
||||||
PrintToConsole(L"Workstation allowed %s\n", pUserInfo->usri4_workstations);
|
PrintToConsole(L"Workstations allowed %s\n", (pUserInfo->usri4_workstations == NULL || wcslen(pUserInfo->usri4_workstations) == 0) ? L"All" : pUserInfo->usri4_workstations);
|
||||||
PrintToConsole(L"Logon script %s\n", pUserInfo->usri4_script_path);
|
PrintToConsole(L"Logon script %s\n", pUserInfo->usri4_script_path);
|
||||||
PrintToConsole(L"User profile %s\n", pUserInfo->usri4_profile);
|
PrintToConsole(L"User profile %s\n", pUserInfo->usri4_profile);
|
||||||
PrintToConsole(L"Home directory %s\n", pUserInfo->usri4_home_dir);
|
PrintToConsole(L"Home directory %s\n", pUserInfo->usri4_home_dir);
|
||||||
|
@ -188,12 +214,49 @@ DisplayUser(LPWSTR lpUserName)
|
||||||
else
|
else
|
||||||
PrintDateTime(pUserInfo->usri4_last_logon);
|
PrintDateTime(pUserInfo->usri4_last_logon);
|
||||||
PrintToConsole(L"\n");
|
PrintToConsole(L"\n");
|
||||||
PrintToConsole(L"Logon hours allowed \n");
|
PrintToConsole(L"Logon hours allowed ");
|
||||||
|
if (pUserInfo->usri4_logon_hours == NULL)
|
||||||
|
PrintToConsole(L"All\n");
|
||||||
PrintToConsole(L"\n");
|
PrintToConsole(L"\n");
|
||||||
PrintToConsole(L"Local group memberships \n");
|
|
||||||
PrintToConsole(L"Global group memberships \n");
|
PrintToConsole(L"\n");
|
||||||
|
PrintToConsole(L"Local group memberships ");
|
||||||
|
if (dwLocalGroupTotal != 0 && pLocalGroupInfo != NULL)
|
||||||
|
{
|
||||||
|
for (i = 0; i < dwLocalGroupTotal; i++)
|
||||||
|
{
|
||||||
|
if (i != 0)
|
||||||
|
PrintToConsole(L" ");
|
||||||
|
PrintToConsole(L"*%s\n", pLocalGroupInfo[i].lgrui0_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PrintToConsole(L"\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
PrintToConsole(L"Global group memberships ");
|
||||||
|
if (dwGroupTotal != 0 && pGroupInfo != NULL)
|
||||||
|
{
|
||||||
|
for (i = 0; i < dwGroupTotal; i++)
|
||||||
|
{
|
||||||
|
if (i != 0)
|
||||||
|
PrintToConsole(L" ");
|
||||||
|
PrintToConsole(L"*%s\n", pGroupInfo[i].grui0_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PrintToConsole(L"\n");
|
||||||
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
if (pGroupInfo != NULL)
|
||||||
|
NetApiBufferFree(pGroupInfo);
|
||||||
|
|
||||||
|
if (pLocalGroupInfo != NULL)
|
||||||
|
NetApiBufferFree(pLocalGroupInfo);
|
||||||
|
|
||||||
if (pUserModals != NULL)
|
if (pUserModals != NULL)
|
||||||
NetApiBufferFree(pUserModals);
|
NetApiBufferFree(pUserModals);
|
||||||
|
|
||||||
|
@ -221,6 +284,8 @@ cmdUser(
|
||||||
PUSER_INFO_4 pUserInfo = NULL;
|
PUSER_INFO_4 pUserInfo = NULL;
|
||||||
USER_INFO_4 UserInfo;
|
USER_INFO_4 UserInfo;
|
||||||
LPWSTR p;
|
LPWSTR p;
|
||||||
|
LPWSTR endptr;
|
||||||
|
DWORD value;
|
||||||
NET_API_STATUS Status;
|
NET_API_STATUS Status;
|
||||||
|
|
||||||
if (argc == 2)
|
if (argc == 2)
|
||||||
|
@ -288,7 +353,12 @@ cmdUser(
|
||||||
lpUserName,
|
lpUserName,
|
||||||
4,
|
4,
|
||||||
(LPBYTE*)&pUserInfo);
|
(LPBYTE*)&pUserInfo);
|
||||||
printf("Status: %lu\n", Status);
|
if (Status != NERR_Success)
|
||||||
|
{
|
||||||
|
printf("Status: %lu\n", Status);
|
||||||
|
result = 1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (bAdd && !bDelete)
|
else if (bAdd && !bDelete)
|
||||||
{
|
{
|
||||||
|
@ -309,11 +379,11 @@ cmdUser(
|
||||||
p = &argv[i][8];
|
p = &argv[i][8];
|
||||||
if (_wcsicmp(p, L"yes") == 0)
|
if (_wcsicmp(p, L"yes") == 0)
|
||||||
{
|
{
|
||||||
|
pUserInfo->usri4_flags &= ~UF_ACCOUNTDISABLE;
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(p, L"no") == 0)
|
else if (_wcsicmp(p, L"no") == 0)
|
||||||
{
|
{
|
||||||
|
pUserInfo->usri4_flags |= UF_ACCOUNTDISABLE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -328,6 +398,18 @@ cmdUser(
|
||||||
}
|
}
|
||||||
else if (_wcsnicmp(argv[j], L"/countrycode:", 13) == 0)
|
else if (_wcsnicmp(argv[j], L"/countrycode:", 13) == 0)
|
||||||
{
|
{
|
||||||
|
p = &argv[i][13];
|
||||||
|
value = wcstoul(p, &endptr, 10);
|
||||||
|
if (*endptr != 0)
|
||||||
|
{
|
||||||
|
PrintToConsole(L"You entered an invalid value for the /COUNTRYCODE option.\n");
|
||||||
|
result = 1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME: verify the country code */
|
||||||
|
|
||||||
|
pUserInfo->usri4_country_code = value;
|
||||||
}
|
}
|
||||||
else if (_wcsnicmp(argv[j], L"/expires:", 9) == 0)
|
else if (_wcsnicmp(argv[j], L"/expires:", 9) == 0)
|
||||||
{
|
{
|
||||||
|
@ -342,9 +424,39 @@ cmdUser(
|
||||||
}
|
}
|
||||||
else if (_wcsnicmp(argv[j], L"/passwordchg:", 13) == 0)
|
else if (_wcsnicmp(argv[j], L"/passwordchg:", 13) == 0)
|
||||||
{
|
{
|
||||||
|
p = &argv[i][13];
|
||||||
|
if (_wcsicmp(p, L"yes") == 0)
|
||||||
|
{
|
||||||
|
pUserInfo->usri4_flags &= ~UF_PASSWD_CANT_CHANGE;
|
||||||
|
}
|
||||||
|
else if (_wcsicmp(p, L"no") == 0)
|
||||||
|
{
|
||||||
|
pUserInfo->usri4_flags |= UF_PASSWD_CANT_CHANGE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PrintToConsole(L"You entered an invalid value for the /PASSWORDCHG option.\n");
|
||||||
|
result = 1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (_wcsnicmp(argv[j], L"/passwordreq:", 13) == 0)
|
else if (_wcsnicmp(argv[j], L"/passwordreq:", 13) == 0)
|
||||||
{
|
{
|
||||||
|
p = &argv[i][13];
|
||||||
|
if (_wcsicmp(p, L"yes") == 0)
|
||||||
|
{
|
||||||
|
pUserInfo->usri4_flags &= ~UF_PASSWD_NOTREQD;
|
||||||
|
}
|
||||||
|
else if (_wcsicmp(p, L"no") == 0)
|
||||||
|
{
|
||||||
|
pUserInfo->usri4_flags |= UF_PASSWD_NOTREQD;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PrintToConsole(L"You entered an invalid value for the /PASSWORDREQ option.\n");
|
||||||
|
result = 1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (_wcsnicmp(argv[j], L"/profilepath:", 13) == 0)
|
else if (_wcsnicmp(argv[j], L"/profilepath:", 13) == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -545,11 +545,14 @@ MainWndOnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||||
HIWORD(lParam) - GetWindowHeight(hToolBar) - GetWindowHeight(hStatusBar),
|
HIWORD(lParam) - GetWindowHeight(hToolBar) - GetWindowHeight(hStatusBar),
|
||||||
SWP_NOZORDER|SWP_NOACTIVATE);
|
SWP_NOZORDER|SWP_NOACTIVATE);
|
||||||
|
|
||||||
while (NewPos < SPLIT_WIDTH + GetWindowHeight(hToolBar))
|
if(wParam != SIZE_MINIMIZED)
|
||||||
{
|
{
|
||||||
RichPos--;
|
while (NewPos < SPLIT_WIDTH + GetWindowHeight(hToolBar))
|
||||||
NewPos = HIWORD(lParam) - (RichPos +
|
{
|
||||||
SPLIT_WIDTH + GetWindowHeight(hStatusBar));
|
RichPos--;
|
||||||
|
NewPos = HIWORD(lParam) - (RichPos +
|
||||||
|
SPLIT_WIDTH + GetWindowHeight(hStatusBar));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SetHSplitterPos(NewPos);
|
SetHSplitterPos(NewPos);
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,14 @@ ElfCreateEventLogHandle(PLOGHANDLE *LogHandle,
|
||||||
if (lpLogHandle->LogFile == NULL)
|
if (lpLogHandle->LogFile == NULL)
|
||||||
{
|
{
|
||||||
lpLogHandle->LogFile = LogfListItemByName(L"Application");
|
lpLogHandle->LogFile = LogfListItemByName(L"Application");
|
||||||
|
|
||||||
|
if (lpLogHandle->LogFile == NULL)
|
||||||
|
{
|
||||||
|
DPRINT1("Application log is missing!\n");
|
||||||
|
Status = STATUS_UNSUCCESSFUL;
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
lpLogHandle->CurrentRecord = LogfGetOldestRecord(lpLogHandle->LogFile);
|
lpLogHandle->CurrentRecord = LogfGetOldestRecord(lpLogHandle->LogFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1683,7 +1683,7 @@ PNP_CreateDevInst(
|
||||||
dwInstanceNumber++;
|
dwInstanceNumber++;
|
||||||
}
|
}
|
||||||
while (ret == CR_ALREADY_SUCH_DEVINST);
|
while (ret == CR_ALREADY_SUCH_DEVINST);
|
||||||
|
|
||||||
if (ret == CR_SUCCESS)
|
if (ret == CR_SUCCESS)
|
||||||
{
|
{
|
||||||
/* pszDeviceID is an out parameter too for generated IDs */
|
/* pszDeviceID is an out parameter too for generated IDs */
|
||||||
|
@ -3106,7 +3106,10 @@ cleanup:
|
||||||
if(ProcessInfo.hThread)
|
if(ProcessInfo.hThread)
|
||||||
CloseHandle(ProcessInfo.hThread);
|
CloseHandle(ProcessInfo.hThread);
|
||||||
|
|
||||||
DPRINT1("Success? %d\n", DeviceInstalled);
|
if (!DeviceInstalled)
|
||||||
|
{
|
||||||
|
DPRINT1("InstallDevice failed for DeviceInstance '%ws'\n", DeviceInstance);
|
||||||
|
}
|
||||||
|
|
||||||
return DeviceInstalled;
|
return DeviceInstalled;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2757,7 +2757,7 @@ FormatPartitionPage(PINPUT_RECORD Ir)
|
||||||
#if 0
|
#if 0
|
||||||
else if (wcscmp(FileSystemList->Selected->FileSystem, L"EXT2") == 0)
|
else if (wcscmp(FileSystemList->Selected->FileSystem, L"EXT2") == 0)
|
||||||
{
|
{
|
||||||
PartEntry->PartInfo[PartNum].PartitionType = PARTITION_EXT2;
|
PartEntry->PartitionType = PARTITION_EXT2;
|
||||||
DiskEntry->LayoutBuffer->PartitionEntry[PartEntry->PartitionIndex].PartitionType = PartEntry->PartitionType;
|
DiskEntry->LayoutBuffer->PartitionEntry[PartEntry->PartitionIndex].PartitionType = PartEntry->PartitionType;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -47,7 +47,7 @@ DumpPartitionTable(
|
||||||
for (i = 0; i < DiskEntry->LayoutBuffer->PartitionCount; i++)
|
for (i = 0; i < DiskEntry->LayoutBuffer->PartitionCount; i++)
|
||||||
{
|
{
|
||||||
PartitionInfo = &DiskEntry->LayoutBuffer->PartitionEntry[i];
|
PartitionInfo = &DiskEntry->LayoutBuffer->PartitionEntry[i];
|
||||||
DbgPrint("%lu: %12I64u %12I64u %10lu %2lu %2x %c %c\n",
|
DPRINT("\n%lu: %12I64u %12I64u %10lu %2lu %2x %c %c\n",
|
||||||
i,
|
i,
|
||||||
PartitionInfo->StartingOffset.QuadPart,
|
PartitionInfo->StartingOffset.QuadPart,
|
||||||
PartitionInfo->PartitionLength.QuadPart,
|
PartitionInfo->PartitionLength.QuadPart,
|
||||||
|
@ -638,7 +638,7 @@ ScanForUnpartitionedDiskSpace(
|
||||||
PPARTENTRY NewPartEntry;
|
PPARTENTRY NewPartEntry;
|
||||||
PLIST_ENTRY Entry;
|
PLIST_ENTRY Entry;
|
||||||
|
|
||||||
DPRINT1("ScanForUnpartitionedDiskSpace()\n");
|
DPRINT("ScanForUnpartitionedDiskSpace()\n");
|
||||||
|
|
||||||
if (IsListEmpty(&DiskEntry->PrimaryPartListHead))
|
if (IsListEmpty(&DiskEntry->PrimaryPartListHead))
|
||||||
{
|
{
|
||||||
|
@ -741,9 +741,9 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
|
||||||
NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount;
|
NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount;
|
||||||
NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) -
|
NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) -
|
||||||
NewPartEntry->StartSector.QuadPart;
|
NewPartEntry->StartSector.QuadPart;
|
||||||
DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
|
DPRINT("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
|
||||||
DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
|
DPRINT("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
|
||||||
DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
|
DPRINT("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
|
||||||
|
|
||||||
NewPartEntry->FormatState = Unformatted;
|
NewPartEntry->FormatState = Unformatted;
|
||||||
|
|
||||||
|
@ -819,9 +819,9 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
|
||||||
NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount;
|
NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount;
|
||||||
NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) -
|
NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) -
|
||||||
NewPartEntry->StartSector.QuadPart;
|
NewPartEntry->StartSector.QuadPart;
|
||||||
DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
|
DPRINT("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
|
||||||
DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
|
DPRINT("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
|
||||||
DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
|
DPRINT("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
|
||||||
|
|
||||||
NewPartEntry->FormatState = Unformatted;
|
NewPartEntry->FormatState = Unformatted;
|
||||||
|
|
||||||
|
@ -859,9 +859,9 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
|
||||||
NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount;
|
NewPartEntry->StartSector.QuadPart = LastStartSector + LastSectorCount;
|
||||||
NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) -
|
NewPartEntry->SectorCount.QuadPart = Align(NewPartEntry->StartSector.QuadPart + LastUnusedSectorCount, DiskEntry->SectorAlignment) -
|
||||||
NewPartEntry->StartSector.QuadPart;
|
NewPartEntry->StartSector.QuadPart;
|
||||||
DPRINT1("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
|
DPRINT("First Sector: %I64u\n", NewPartEntry->StartSector.QuadPart);
|
||||||
DPRINT1("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
|
DPRINT("Last Sector: %I64u\n", NewPartEntry->StartSector.QuadPart + NewPartEntry->SectorCount.QuadPart - 1);
|
||||||
DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
|
DPRINT("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
|
||||||
|
|
||||||
NewPartEntry->FormatState = Unformatted;
|
NewPartEntry->FormatState = Unformatted;
|
||||||
|
|
||||||
|
@ -872,7 +872,7 @@ DPRINT1("Total Sectors: %I64u\n", NewPartEntry->SectorCount.QuadPart);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT1("ScanForUnpartitionedDiskSpace() done\n");
|
DPRINT("ScanForUnpartitionedDiskSpace() done\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1132,8 +1132,8 @@ AddDiskToList(
|
||||||
|
|
||||||
DiskEntry->SectorAlignment = DiskGeometry.SectorsPerTrack;
|
DiskEntry->SectorAlignment = DiskGeometry.SectorsPerTrack;
|
||||||
|
|
||||||
DPRINT1("SectorCount %I64u\n", DiskEntry->SectorCount);
|
DPRINT("SectorCount %I64u\n", DiskEntry->SectorCount);
|
||||||
DPRINT1("SectorAlignment %lu\n", DiskEntry->SectorAlignment);
|
DPRINT("SectorAlignment %lu\n", DiskEntry->SectorAlignment);
|
||||||
|
|
||||||
DiskEntry->DiskNumber = DiskNumber;
|
DiskEntry->DiskNumber = DiskNumber;
|
||||||
DiskEntry->Port = ScsiAddress.PortNumber;
|
DiskEntry->Port = ScsiAddress.PortNumber;
|
||||||
|
@ -1145,7 +1145,7 @@ AddDiskToList(
|
||||||
InsertAscendingList(&List->DiskListHead, DiskEntry, DISKENTRY, ListEntry, DiskNumber);
|
InsertAscendingList(&List->DiskListHead, DiskEntry, DISKENTRY, ListEntry, DiskNumber);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate a buffer for 26 logical drives (2 entries each == 52)
|
* Allocate a buffer for 26 logical drives (2 entries each == 52)
|
||||||
* plus the main partiton table (4 entries). Total 56 entries.
|
* plus the main partiton table (4 entries). Total 56 entries.
|
||||||
*/
|
*/
|
||||||
LayoutBufferSize = sizeof(DRIVE_LAYOUT_INFORMATION) +
|
LayoutBufferSize = sizeof(DRIVE_LAYOUT_INFORMATION) +
|
||||||
|
@ -1180,7 +1180,7 @@ AddDiskToList(
|
||||||
{
|
{
|
||||||
if ((DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart / DiskEntry->BytesPerSector) % DiskEntry->SectorsPerTrack == 0)
|
if ((DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart / DiskEntry->BytesPerSector) % DiskEntry->SectorsPerTrack == 0)
|
||||||
{
|
{
|
||||||
DPRINT1("Use %lu Sector alignment!\n", DiskEntry->SectorsPerTrack);
|
DPRINT("Use %lu Sector alignment!\n", DiskEntry->SectorsPerTrack);
|
||||||
}
|
}
|
||||||
else if (DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart % 1048756 == 0)
|
else if (DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart % 1048756 == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -116,6 +116,7 @@ IntAddConsoleAlias(LPCVOID Source,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
AddConsoleAliasW(LPCWSTR lpSource,
|
AddConsoleAliasW(LPCWSTR lpSource,
|
||||||
LPCWSTR lpTarget,
|
LPCWSTR lpTarget,
|
||||||
LPCWSTR lpExeName)
|
LPCWSTR lpExeName)
|
||||||
|
@ -140,6 +141,7 @@ AddConsoleAliasW(LPCWSTR lpSource,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
AddConsoleAliasA(LPCSTR lpSource,
|
AddConsoleAliasA(LPCSTR lpSource,
|
||||||
LPCSTR lpTarget,
|
LPCSTR lpTarget,
|
||||||
LPCSTR lpExeName)
|
LPCSTR lpExeName)
|
||||||
|
@ -254,6 +256,7 @@ IntGetConsoleAlias(LPVOID Source,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleAliasW(LPWSTR lpSource,
|
GetConsoleAliasW(LPWSTR lpSource,
|
||||||
LPWSTR lpTargetBuffer,
|
LPWSTR lpTargetBuffer,
|
||||||
DWORD TargetBufferLength,
|
DWORD TargetBufferLength,
|
||||||
|
@ -276,6 +279,7 @@ GetConsoleAliasW(LPWSTR lpSource,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleAliasA(LPSTR lpSource,
|
GetConsoleAliasA(LPSTR lpSource,
|
||||||
LPSTR lpTargetBuffer,
|
LPSTR lpTargetBuffer,
|
||||||
DWORD TargetBufferLength,
|
DWORD TargetBufferLength,
|
||||||
|
@ -368,6 +372,7 @@ IntGetConsoleAliases(LPVOID AliasBuffer,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleAliasesW(LPWSTR AliasBuffer,
|
GetConsoleAliasesW(LPWSTR AliasBuffer,
|
||||||
DWORD AliasBufferLength,
|
DWORD AliasBufferLength,
|
||||||
LPWSTR ExeName)
|
LPWSTR ExeName)
|
||||||
|
@ -387,6 +392,7 @@ GetConsoleAliasesW(LPWSTR AliasBuffer,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleAliasesA(LPSTR AliasBuffer,
|
GetConsoleAliasesA(LPSTR AliasBuffer,
|
||||||
DWORD AliasBufferLength,
|
DWORD AliasBufferLength,
|
||||||
LPSTR ExeName)
|
LPSTR ExeName)
|
||||||
|
@ -456,6 +462,7 @@ IntGetConsoleAliasesLength(LPVOID lpExeName, BOOLEAN bUnicode)
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleAliasesLengthW(LPWSTR lpExeName)
|
GetConsoleAliasesLengthW(LPWSTR lpExeName)
|
||||||
{
|
{
|
||||||
return IntGetConsoleAliasesLength(lpExeName, TRUE);
|
return IntGetConsoleAliasesLength(lpExeName, TRUE);
|
||||||
|
@ -467,6 +474,7 @@ GetConsoleAliasesLengthW(LPWSTR lpExeName)
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleAliasesLengthA(LPSTR lpExeName)
|
GetConsoleAliasesLengthA(LPSTR lpExeName)
|
||||||
{
|
{
|
||||||
return IntGetConsoleAliasesLength(lpExeName, FALSE);
|
return IntGetConsoleAliasesLength(lpExeName, FALSE);
|
||||||
|
@ -523,6 +531,7 @@ IntGetConsoleAliasExes(PVOID lpExeNameBuffer,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleAliasExesW(LPWSTR lpExeNameBuffer,
|
GetConsoleAliasExesW(LPWSTR lpExeNameBuffer,
|
||||||
DWORD ExeNameBufferLength)
|
DWORD ExeNameBufferLength)
|
||||||
{
|
{
|
||||||
|
@ -536,6 +545,7 @@ GetConsoleAliasExesW(LPWSTR lpExeNameBuffer,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleAliasExesA(LPSTR lpExeNameBuffer,
|
GetConsoleAliasExesA(LPSTR lpExeNameBuffer,
|
||||||
DWORD ExeNameBufferLength)
|
DWORD ExeNameBufferLength)
|
||||||
{
|
{
|
||||||
|
@ -572,6 +582,7 @@ IntGetConsoleAliasExesLength(BOOLEAN bUnicode)
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleAliasExesLengthW(VOID)
|
GetConsoleAliasExesLengthW(VOID)
|
||||||
{
|
{
|
||||||
DPRINT1("GetConsoleAliasExesLengthW called\n");
|
DPRINT1("GetConsoleAliasExesLengthW called\n");
|
||||||
|
@ -584,6 +595,7 @@ GetConsoleAliasExesLengthW(VOID)
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleAliasExesLengthA(VOID)
|
GetConsoleAliasExesLengthA(VOID)
|
||||||
{
|
{
|
||||||
DPRINT1("GetConsoleAliasExesLengthA called\n");
|
DPRINT1("GetConsoleAliasExesLengthA called\n");
|
||||||
|
|
|
@ -392,6 +392,7 @@ IntCheckForConsoleFileName(IN LPCWSTR pszName,
|
||||||
*/
|
*/
|
||||||
HMENU
|
HMENU
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ConsoleMenuControl(HANDLE hConsoleOutput,
|
ConsoleMenuControl(HANDLE hConsoleOutput,
|
||||||
DWORD dwCmdIdLow,
|
DWORD dwCmdIdLow,
|
||||||
DWORD dwCmdIdHigh)
|
DWORD dwCmdIdHigh)
|
||||||
|
@ -419,6 +420,7 @@ ConsoleMenuControl(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
HANDLE
|
HANDLE
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
DuplicateConsoleHandle(HANDLE hConsole,
|
DuplicateConsoleHandle(HANDLE hConsole,
|
||||||
DWORD dwDesiredAccess,
|
DWORD dwDesiredAccess,
|
||||||
BOOL bInheritHandle,
|
BOOL bInheritHandle,
|
||||||
|
@ -571,6 +573,7 @@ GetConsoleFontInfo(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
COORD
|
COORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleFontSize(HANDLE hConsoleOutput,
|
GetConsoleFontSize(HANDLE hConsoleOutput,
|
||||||
DWORD nFont)
|
DWORD nFont)
|
||||||
{
|
{
|
||||||
|
@ -652,6 +655,7 @@ GetCurrentConsoleFont(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
ULONG
|
ULONG
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetNumberOfConsoleFonts(VOID)
|
GetNumberOfConsoleFonts(VOID)
|
||||||
{
|
{
|
||||||
DPRINT1("GetNumberOfConsoleFonts() UNIMPLEMENTED!\n");
|
DPRINT1("GetNumberOfConsoleFonts() UNIMPLEMENTED!\n");
|
||||||
|
@ -757,6 +761,7 @@ OpenConsoleW(LPCWSTR wsName,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleCursor(HANDLE hConsoleOutput,
|
SetConsoleCursor(HANDLE hConsoleOutput,
|
||||||
HCURSOR hCursor)
|
HCURSOR hCursor)
|
||||||
{
|
{
|
||||||
|
@ -822,6 +827,7 @@ SetConsoleDisplayMode(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleFont(HANDLE hConsoleOutput,
|
SetConsoleFont(HANDLE hConsoleOutput,
|
||||||
DWORD nFont)
|
DWORD nFont)
|
||||||
{
|
{
|
||||||
|
@ -869,6 +875,7 @@ SetConsoleHardwareState(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleKeyShortcuts(DWORD Unknown0,
|
SetConsoleKeyShortcuts(DWORD Unknown0,
|
||||||
DWORD Unknown1,
|
DWORD Unknown1,
|
||||||
DWORD Unknown2,
|
DWORD Unknown2,
|
||||||
|
@ -901,6 +908,7 @@ SetConsoleMaximumWindowSize(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleMenuClose(BOOL bEnable)
|
SetConsoleMenuClose(BOOL bEnable)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -930,6 +938,7 @@ SetConsoleMenuClose(BOOL bEnable)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsolePalette(HANDLE hConsoleOutput,
|
SetConsolePalette(HANDLE hConsoleOutput,
|
||||||
HPALETTE hPalette,
|
HPALETTE hPalette,
|
||||||
UINT dwUsage)
|
UINT dwUsage)
|
||||||
|
@ -961,6 +970,7 @@ SetConsolePalette(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
INT
|
INT
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ShowConsoleCursor(HANDLE hConsoleOutput,
|
ShowConsoleCursor(HANDLE hConsoleOutput,
|
||||||
BOOL bShow)
|
BOOL bShow)
|
||||||
{
|
{
|
||||||
|
@ -997,6 +1007,7 @@ ShowConsoleCursor(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
VerifyConsoleIoHandle(HANDLE hIoHandle)
|
VerifyConsoleIoHandle(HANDLE hIoHandle)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -1028,6 +1039,7 @@ VerifyConsoleIoHandle(HANDLE hIoHandle)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
CloseConsoleHandle(HANDLE hHandle)
|
CloseConsoleHandle(HANDLE hHandle)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -1055,6 +1067,7 @@ CloseConsoleHandle(HANDLE hHandle)
|
||||||
*/
|
*/
|
||||||
HANDLE
|
HANDLE
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetStdHandle(DWORD nStdHandle)
|
GetStdHandle(DWORD nStdHandle)
|
||||||
/*
|
/*
|
||||||
* FUNCTION: Get a handle for the standard input, standard output
|
* FUNCTION: Get a handle for the standard input, standard output
|
||||||
|
@ -1097,6 +1110,7 @@ GetStdHandle(DWORD nStdHandle)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetStdHandle(DWORD nStdHandle,
|
SetStdHandle(DWORD nStdHandle,
|
||||||
HANDLE hHandle)
|
HANDLE hHandle)
|
||||||
/*
|
/*
|
||||||
|
@ -1249,6 +1263,7 @@ Quit:
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
AllocConsole(VOID)
|
AllocConsole(VOID)
|
||||||
{
|
{
|
||||||
BOOL Success;
|
BOOL Success;
|
||||||
|
@ -1331,6 +1346,7 @@ Quit:
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
FreeConsole(VOID)
|
FreeConsole(VOID)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -1419,6 +1435,7 @@ GetConsoleScreenBufferInfo(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleCursorPosition(HANDLE hConsoleOutput,
|
SetConsoleCursorPosition(HANDLE hConsoleOutput,
|
||||||
COORD dwCursorPosition)
|
COORD dwCursorPosition)
|
||||||
{
|
{
|
||||||
|
@ -1484,6 +1501,7 @@ GetConsoleMode(HANDLE hConsoleHandle,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleMode(HANDLE hConsoleHandle,
|
SetConsoleMode(HANDLE hConsoleHandle,
|
||||||
DWORD dwMode)
|
DWORD dwMode)
|
||||||
{
|
{
|
||||||
|
@ -1550,6 +1568,7 @@ GetNumberOfConsoleInputEvents(HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
COORD
|
COORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetLargestConsoleWindowSize(HANDLE hConsoleOutput)
|
GetLargestConsoleWindowSize(HANDLE hConsoleOutput)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -1675,6 +1694,7 @@ GetNumberOfConsoleMouseButtons(LPDWORD lpNumberOfMouseButtons)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput)
|
SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -1702,6 +1722,7 @@ SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
FlushConsoleInputBuffer(HANDLE hConsoleInput)
|
FlushConsoleInputBuffer(HANDLE hConsoleInput)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -1729,6 +1750,7 @@ FlushConsoleInputBuffer(HANDLE hConsoleInput)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleScreenBufferSize(HANDLE hConsoleOutput,
|
SetConsoleScreenBufferSize(HANDLE hConsoleOutput,
|
||||||
COORD dwSize)
|
COORD dwSize)
|
||||||
{
|
{
|
||||||
|
@ -1802,6 +1824,7 @@ IntScrollConsoleScreenBuffer(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ScrollConsoleScreenBufferA(HANDLE hConsoleOutput,
|
ScrollConsoleScreenBufferA(HANDLE hConsoleOutput,
|
||||||
CONST SMALL_RECT* lpScrollRectangle,
|
CONST SMALL_RECT* lpScrollRectangle,
|
||||||
CONST SMALL_RECT* lpClipRectangle,
|
CONST SMALL_RECT* lpClipRectangle,
|
||||||
|
@ -1822,6 +1845,7 @@ ScrollConsoleScreenBufferA(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ScrollConsoleScreenBufferW(HANDLE hConsoleOutput,
|
ScrollConsoleScreenBufferW(HANDLE hConsoleOutput,
|
||||||
CONST SMALL_RECT *lpScrollRectangle,
|
CONST SMALL_RECT *lpScrollRectangle,
|
||||||
CONST SMALL_RECT *lpClipRectangle,
|
CONST SMALL_RECT *lpClipRectangle,
|
||||||
|
@ -1879,6 +1903,7 @@ SetConsoleWindowInfo(HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleTextAttribute(HANDLE hConsoleOutput,
|
SetConsoleTextAttribute(HANDLE hConsoleOutput,
|
||||||
WORD wAttributes)
|
WORD wAttributes)
|
||||||
{
|
{
|
||||||
|
@ -1979,6 +2004,7 @@ RemoveConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,
|
SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,
|
||||||
BOOL Add)
|
BOOL Add)
|
||||||
{
|
{
|
||||||
|
@ -2004,6 +2030,7 @@ SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GenerateConsoleCtrlEvent(DWORD dwCtrlEvent,
|
GenerateConsoleCtrlEvent(DWORD dwCtrlEvent,
|
||||||
DWORD dwProcessGroupId)
|
DWORD dwProcessGroupId)
|
||||||
{
|
{
|
||||||
|
@ -2093,6 +2120,7 @@ IntGetConsoleTitle(LPVOID lpConsoleTitle, DWORD dwNumChars, BOOLEAN bUnicode)
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleTitleW(LPWSTR lpConsoleTitle,
|
GetConsoleTitleW(LPWSTR lpConsoleTitle,
|
||||||
DWORD nSize)
|
DWORD nSize)
|
||||||
{
|
{
|
||||||
|
@ -2105,6 +2133,7 @@ GetConsoleTitleW(LPWSTR lpConsoleTitle,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleTitleA(LPSTR lpConsoleTitle,
|
GetConsoleTitleA(LPSTR lpConsoleTitle,
|
||||||
DWORD nSize)
|
DWORD nSize)
|
||||||
{
|
{
|
||||||
|
@ -2159,6 +2188,7 @@ IntSetConsoleTitle(CONST VOID *lpConsoleTitle, BOOLEAN bUnicode)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleTitleW(LPCWSTR lpConsoleTitle)
|
SetConsoleTitleW(LPCWSTR lpConsoleTitle)
|
||||||
{
|
{
|
||||||
return IntSetConsoleTitle(lpConsoleTitle, TRUE);
|
return IntSetConsoleTitle(lpConsoleTitle, TRUE);
|
||||||
|
@ -2170,6 +2200,7 @@ SetConsoleTitleW(LPCWSTR lpConsoleTitle)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleTitleA(LPCSTR lpConsoleTitle)
|
SetConsoleTitleA(LPCSTR lpConsoleTitle)
|
||||||
{
|
{
|
||||||
return IntSetConsoleTitle(lpConsoleTitle, FALSE);
|
return IntSetConsoleTitle(lpConsoleTitle, FALSE);
|
||||||
|
@ -2258,6 +2289,7 @@ CreateConsoleScreenBuffer(DWORD dwDesiredAccess,
|
||||||
*/
|
*/
|
||||||
UINT
|
UINT
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleCP(VOID)
|
GetConsoleCP(VOID)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -2286,6 +2318,7 @@ GetConsoleCP(VOID)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleCP(UINT wCodePageID)
|
SetConsoleCP(UINT wCodePageID)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -2316,6 +2349,7 @@ SetConsoleCP(UINT wCodePageID)
|
||||||
*/
|
*/
|
||||||
UINT
|
UINT
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleOutputCP(VOID)
|
GetConsoleOutputCP(VOID)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -2344,6 +2378,7 @@ GetConsoleOutputCP(VOID)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleOutputCP(UINT wCodePageID)
|
SetConsoleOutputCP(UINT wCodePageID)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -2594,6 +2629,7 @@ Quit:
|
||||||
*/
|
*/
|
||||||
HWND
|
HWND
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleWindow(VOID)
|
GetConsoleWindow(VOID)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -2620,6 +2656,7 @@ GetConsoleWindow(VOID)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleIcon(HICON hIcon)
|
SetConsoleIcon(HICON hIcon)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
@ -2652,6 +2689,7 @@ SetConsoleIcon(HICON hIcon)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleInputExeNameW(IN LPWSTR lpExeName)
|
SetConsoleInputExeNameW(IN LPWSTR lpExeName)
|
||||||
{
|
{
|
||||||
DWORD ExeLength;
|
DWORD ExeLength;
|
||||||
|
@ -2691,6 +2729,7 @@ SetConsoleInputExeNameW(IN LPWSTR lpExeName)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleInputExeNameA(IN LPSTR lpExeName)
|
SetConsoleInputExeNameA(IN LPSTR lpExeName)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
@ -2766,6 +2805,7 @@ SetConsoleInputExeNameA(IN LPSTR lpExeName)
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleInputExeNameW(IN DWORD nBufferLength,
|
GetConsoleInputExeNameW(IN DWORD nBufferLength,
|
||||||
OUT LPWSTR lpExeName)
|
OUT LPWSTR lpExeName)
|
||||||
{
|
{
|
||||||
|
@ -2804,6 +2844,7 @@ GetConsoleInputExeNameW(IN DWORD nBufferLength,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleInputExeNameA(IN DWORD nBufferLength,
|
GetConsoleInputExeNameA(IN DWORD nBufferLength,
|
||||||
OUT LPSTR lpExeName)
|
OUT LPSTR lpExeName)
|
||||||
{
|
{
|
||||||
|
@ -2850,6 +2891,7 @@ GetConsoleCharType(HANDLE hConsole, COORD Coord, PDWORD Type)
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleCursorMode(HANDLE hConsole, PBOOL pUnknown1, PBOOL pUnknown2)
|
GetConsoleCursorMode(HANDLE hConsole, PBOOL pUnknown1, PBOOL pUnknown2)
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
|
@ -2858,6 +2900,7 @@ GetConsoleCursorMode(HANDLE hConsole, PBOOL pUnknown1, PBOOL pUnknown2)
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleCursorMode(HANDLE hConsole, BOOL Unknown1, BOOL Unknown2)
|
SetConsoleCursorMode(HANDLE hConsole, BOOL Unknown1, BOOL Unknown2)
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
|
@ -2866,6 +2909,7 @@ SetConsoleCursorMode(HANDLE hConsole, BOOL Unknown1, BOOL Unknown2)
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleNlsMode(HANDLE hConsole, LPDWORD lpMode)
|
GetConsoleNlsMode(HANDLE hConsole, LPDWORD lpMode)
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
|
@ -2874,6 +2918,7 @@ GetConsoleNlsMode(HANDLE hConsole, LPDWORD lpMode)
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleNlsMode(HANDLE hConsole, DWORD dwMode)
|
SetConsoleNlsMode(HANDLE hConsole, DWORD dwMode)
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
|
@ -2882,6 +2927,7 @@ SetConsoleNlsMode(HANDLE hConsole, DWORD dwMode)
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleLocalEUDC(DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4)
|
SetConsoleLocalEUDC(DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4)
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
|
@ -2890,6 +2936,7 @@ SetConsoleLocalEUDC(DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknow
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
RegisterConsoleIME(HWND hWnd, LPDWORD ThreadId)
|
RegisterConsoleIME(HWND hWnd, LPDWORD ThreadId)
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
|
@ -2898,6 +2945,7 @@ RegisterConsoleIME(HWND hWnd, LPDWORD ThreadId)
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
RegisterConsoleOS2(BOOL bUnknown)
|
RegisterConsoleOS2(BOOL bUnknown)
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
|
@ -2906,6 +2954,7 @@ RegisterConsoleOS2(BOOL bUnknown)
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleOS2OemFormat(BOOL bUnknown)
|
SetConsoleOS2OemFormat(BOOL bUnknown)
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
|
@ -2914,6 +2963,7 @@ SetConsoleOS2OemFormat(BOOL bUnknown)
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
UnregisterConsoleIME(VOID)
|
UnregisterConsoleIME(VOID)
|
||||||
{
|
{
|
||||||
STUB;
|
STUB;
|
||||||
|
@ -2921,6 +2971,7 @@ UnregisterConsoleIME(VOID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
BOOL
|
BOOL
|
||||||
IntGetConsoleKeyboardLayoutName(OUT PVOID pszLayoutName,
|
IntGetConsoleKeyboardLayoutName(OUT PVOID pszLayoutName,
|
||||||
IN BOOL bAnsi)
|
IN BOOL bAnsi)
|
||||||
|
@ -2969,6 +3020,7 @@ IntGetConsoleKeyboardLayoutName(OUT PVOID pszLayoutName,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleKeyboardLayoutNameA(OUT LPSTR pszLayoutName)
|
GetConsoleKeyboardLayoutNameA(OUT LPSTR pszLayoutName)
|
||||||
{
|
{
|
||||||
return IntGetConsoleKeyboardLayoutName(pszLayoutName, TRUE);
|
return IntGetConsoleKeyboardLayoutName(pszLayoutName, TRUE);
|
||||||
|
@ -2979,6 +3031,7 @@ GetConsoleKeyboardLayoutNameA(OUT LPSTR pszLayoutName)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleKeyboardLayoutNameW(OUT LPWSTR pszLayoutName)
|
GetConsoleKeyboardLayoutNameW(OUT LPWSTR pszLayoutName)
|
||||||
{
|
{
|
||||||
return IntGetConsoleKeyboardLayoutName(pszLayoutName, FALSE);
|
return IntGetConsoleKeyboardLayoutName(pszLayoutName, FALSE);
|
||||||
|
|
|
@ -246,6 +246,7 @@ IntSetConsoleNumberOfCommands(DWORD dwNumCommands,
|
||||||
*/
|
*/
|
||||||
VOID
|
VOID
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ExpungeConsoleCommandHistoryW(LPCWSTR lpExeName)
|
ExpungeConsoleCommandHistoryW(LPCWSTR lpExeName)
|
||||||
{
|
{
|
||||||
IntExpungeConsoleCommandHistory(lpExeName, TRUE);
|
IntExpungeConsoleCommandHistory(lpExeName, TRUE);
|
||||||
|
@ -257,6 +258,7 @@ ExpungeConsoleCommandHistoryW(LPCWSTR lpExeName)
|
||||||
*/
|
*/
|
||||||
VOID
|
VOID
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ExpungeConsoleCommandHistoryA(LPCSTR lpExeName)
|
ExpungeConsoleCommandHistoryA(LPCSTR lpExeName)
|
||||||
{
|
{
|
||||||
IntExpungeConsoleCommandHistory(lpExeName, FALSE);
|
IntExpungeConsoleCommandHistory(lpExeName, FALSE);
|
||||||
|
@ -268,6 +270,7 @@ ExpungeConsoleCommandHistoryA(LPCSTR lpExeName)
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleCommandHistoryW(LPWSTR lpHistory,
|
GetConsoleCommandHistoryW(LPWSTR lpHistory,
|
||||||
DWORD cbHistory,
|
DWORD cbHistory,
|
||||||
LPCWSTR lpExeName)
|
LPCWSTR lpExeName)
|
||||||
|
@ -281,6 +284,7 @@ GetConsoleCommandHistoryW(LPWSTR lpHistory,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleCommandHistoryA(LPSTR lpHistory,
|
GetConsoleCommandHistoryA(LPSTR lpHistory,
|
||||||
DWORD cbHistory,
|
DWORD cbHistory,
|
||||||
LPCSTR lpExeName)
|
LPCSTR lpExeName)
|
||||||
|
@ -294,6 +298,7 @@ GetConsoleCommandHistoryA(LPSTR lpHistory,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleCommandHistoryLengthW(LPCWSTR lpExeName)
|
GetConsoleCommandHistoryLengthW(LPCWSTR lpExeName)
|
||||||
{
|
{
|
||||||
return IntGetConsoleCommandHistoryLength(lpExeName, TRUE);
|
return IntGetConsoleCommandHistoryLength(lpExeName, TRUE);
|
||||||
|
@ -305,6 +310,7 @@ GetConsoleCommandHistoryLengthW(LPCWSTR lpExeName)
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleCommandHistoryLengthA(LPCSTR lpExeName)
|
GetConsoleCommandHistoryLengthA(LPCSTR lpExeName)
|
||||||
{
|
{
|
||||||
return IntGetConsoleCommandHistoryLength(lpExeName, FALSE);
|
return IntGetConsoleCommandHistoryLength(lpExeName, FALSE);
|
||||||
|
@ -316,6 +322,7 @@ GetConsoleCommandHistoryLengthA(LPCSTR lpExeName)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleNumberOfCommandsW(DWORD dwNumCommands,
|
SetConsoleNumberOfCommandsW(DWORD dwNumCommands,
|
||||||
LPCWSTR lpExeName)
|
LPCWSTR lpExeName)
|
||||||
{
|
{
|
||||||
|
@ -328,6 +335,7 @@ SetConsoleNumberOfCommandsW(DWORD dwNumCommands,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleNumberOfCommandsA(DWORD dwNumCommands,
|
SetConsoleNumberOfCommandsA(DWORD dwNumCommands,
|
||||||
LPCSTR lpExeName)
|
LPCSTR lpExeName)
|
||||||
{
|
{
|
||||||
|
@ -340,6 +348,7 @@ SetConsoleNumberOfCommandsA(DWORD dwNumCommands,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleCommandHistoryMode(IN DWORD dwMode)
|
SetConsoleCommandHistoryMode(IN DWORD dwMode)
|
||||||
{
|
{
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
|
|
@ -1172,6 +1172,7 @@ IntFillConsoleOutputCode(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleW(IN HANDLE hConsoleInput,
|
ReadConsoleW(IN HANDLE hConsoleInput,
|
||||||
OUT LPVOID lpBuffer,
|
OUT LPVOID lpBuffer,
|
||||||
IN DWORD nNumberOfCharsToRead,
|
IN DWORD nNumberOfCharsToRead,
|
||||||
|
@ -1192,6 +1193,7 @@ ReadConsoleW(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleA(IN HANDLE hConsoleInput,
|
ReadConsoleA(IN HANDLE hConsoleInput,
|
||||||
OUT LPVOID lpBuffer,
|
OUT LPVOID lpBuffer,
|
||||||
IN DWORD nNumberOfCharsToRead,
|
IN DWORD nNumberOfCharsToRead,
|
||||||
|
@ -1212,6 +1214,7 @@ ReadConsoleA(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
PeekConsoleInputW(IN HANDLE hConsoleInput,
|
PeekConsoleInputW(IN HANDLE hConsoleInput,
|
||||||
OUT PINPUT_RECORD lpBuffer,
|
OUT PINPUT_RECORD lpBuffer,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1231,6 +1234,7 @@ PeekConsoleInputW(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
PeekConsoleInputA(IN HANDLE hConsoleInput,
|
PeekConsoleInputA(IN HANDLE hConsoleInput,
|
||||||
OUT PINPUT_RECORD lpBuffer,
|
OUT PINPUT_RECORD lpBuffer,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1250,6 +1254,7 @@ PeekConsoleInputA(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleInputW(IN HANDLE hConsoleInput,
|
ReadConsoleInputW(IN HANDLE hConsoleInput,
|
||||||
OUT PINPUT_RECORD lpBuffer,
|
OUT PINPUT_RECORD lpBuffer,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1269,6 +1274,7 @@ ReadConsoleInputW(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleInputA(IN HANDLE hConsoleInput,
|
ReadConsoleInputA(IN HANDLE hConsoleInput,
|
||||||
OUT PINPUT_RECORD lpBuffer,
|
OUT PINPUT_RECORD lpBuffer,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1288,6 +1294,7 @@ ReadConsoleInputA(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleInputExW(IN HANDLE hConsoleInput,
|
ReadConsoleInputExW(IN HANDLE hConsoleInput,
|
||||||
OUT PINPUT_RECORD lpBuffer,
|
OUT PINPUT_RECORD lpBuffer,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1308,6 +1315,7 @@ ReadConsoleInputExW(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleInputExA(IN HANDLE hConsoleInput,
|
ReadConsoleInputExA(IN HANDLE hConsoleInput,
|
||||||
OUT PINPUT_RECORD lpBuffer,
|
OUT PINPUT_RECORD lpBuffer,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1328,6 +1336,7 @@ ReadConsoleInputExA(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleOutputW(IN HANDLE hConsoleOutput,
|
ReadConsoleOutputW(IN HANDLE hConsoleOutput,
|
||||||
OUT PCHAR_INFO lpBuffer,
|
OUT PCHAR_INFO lpBuffer,
|
||||||
IN COORD dwBufferSize,
|
IN COORD dwBufferSize,
|
||||||
|
@ -1348,6 +1357,7 @@ ReadConsoleOutputW(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleOutputA(IN HANDLE hConsoleOutput,
|
ReadConsoleOutputA(IN HANDLE hConsoleOutput,
|
||||||
OUT PCHAR_INFO lpBuffer,
|
OUT PCHAR_INFO lpBuffer,
|
||||||
IN COORD dwBufferSize,
|
IN COORD dwBufferSize,
|
||||||
|
@ -1368,6 +1378,7 @@ ReadConsoleOutputA(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
|
ReadConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
|
||||||
OUT LPWSTR lpCharacter,
|
OUT LPWSTR lpCharacter,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1388,6 +1399,7 @@ ReadConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
|
ReadConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
|
||||||
OUT LPSTR lpCharacter,
|
OUT LPSTR lpCharacter,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1408,6 +1420,7 @@ ReadConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
ReadConsoleOutputAttribute(IN HANDLE hConsoleOutput,
|
ReadConsoleOutputAttribute(IN HANDLE hConsoleOutput,
|
||||||
OUT LPWORD lpAttribute,
|
OUT LPWORD lpAttribute,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1432,6 +1445,7 @@ ReadConsoleOutputAttribute(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleW(IN HANDLE hConsoleOutput,
|
WriteConsoleW(IN HANDLE hConsoleOutput,
|
||||||
IN CONST VOID *lpBuffer,
|
IN CONST VOID *lpBuffer,
|
||||||
IN DWORD nNumberOfCharsToWrite,
|
IN DWORD nNumberOfCharsToWrite,
|
||||||
|
@ -1452,6 +1466,7 @@ WriteConsoleW(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleA(IN HANDLE hConsoleOutput,
|
WriteConsoleA(IN HANDLE hConsoleOutput,
|
||||||
IN CONST VOID *lpBuffer,
|
IN CONST VOID *lpBuffer,
|
||||||
IN DWORD nNumberOfCharsToWrite,
|
IN DWORD nNumberOfCharsToWrite,
|
||||||
|
@ -1472,6 +1487,7 @@ WriteConsoleA(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleInputW(IN HANDLE hConsoleInput,
|
WriteConsoleInputW(IN HANDLE hConsoleInput,
|
||||||
IN CONST INPUT_RECORD *lpBuffer,
|
IN CONST INPUT_RECORD *lpBuffer,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1491,6 +1507,7 @@ WriteConsoleInputW(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleInputA(IN HANDLE hConsoleInput,
|
WriteConsoleInputA(IN HANDLE hConsoleInput,
|
||||||
IN CONST INPUT_RECORD *lpBuffer,
|
IN CONST INPUT_RECORD *lpBuffer,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1510,6 +1527,7 @@ WriteConsoleInputA(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleInputVDMW(IN HANDLE hConsoleInput,
|
WriteConsoleInputVDMW(IN HANDLE hConsoleInput,
|
||||||
IN CONST INPUT_RECORD *lpBuffer,
|
IN CONST INPUT_RECORD *lpBuffer,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1529,6 +1547,7 @@ WriteConsoleInputVDMW(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleInputVDMA(IN HANDLE hConsoleInput,
|
WriteConsoleInputVDMA(IN HANDLE hConsoleInput,
|
||||||
IN CONST INPUT_RECORD *lpBuffer,
|
IN CONST INPUT_RECORD *lpBuffer,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1548,6 +1567,7 @@ WriteConsoleInputVDMA(IN HANDLE hConsoleInput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleOutputW(IN HANDLE hConsoleOutput,
|
WriteConsoleOutputW(IN HANDLE hConsoleOutput,
|
||||||
IN CONST CHAR_INFO *lpBuffer,
|
IN CONST CHAR_INFO *lpBuffer,
|
||||||
IN COORD dwBufferSize,
|
IN COORD dwBufferSize,
|
||||||
|
@ -1568,6 +1588,7 @@ WriteConsoleOutputW(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleOutputA(IN HANDLE hConsoleOutput,
|
WriteConsoleOutputA(IN HANDLE hConsoleOutput,
|
||||||
IN CONST CHAR_INFO *lpBuffer,
|
IN CONST CHAR_INFO *lpBuffer,
|
||||||
IN COORD dwBufferSize,
|
IN COORD dwBufferSize,
|
||||||
|
@ -1588,6 +1609,7 @@ WriteConsoleOutputA(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
|
WriteConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
|
||||||
IN LPCWSTR lpCharacter,
|
IN LPCWSTR lpCharacter,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1608,6 +1630,7 @@ WriteConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
|
WriteConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
|
||||||
IN LPCSTR lpCharacter,
|
IN LPCSTR lpCharacter,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1628,6 +1651,7 @@ WriteConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
WriteConsoleOutputAttribute(IN HANDLE hConsoleOutput,
|
WriteConsoleOutputAttribute(IN HANDLE hConsoleOutput,
|
||||||
IN CONST WORD *lpAttribute,
|
IN CONST WORD *lpAttribute,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1648,6 +1672,7 @@ WriteConsoleOutputAttribute(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
FillConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
|
FillConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
|
||||||
IN WCHAR cCharacter,
|
IN WCHAR cCharacter,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1670,6 +1695,7 @@ FillConsoleOutputCharacterW(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
FillConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
|
FillConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
|
||||||
IN CHAR cCharacter,
|
IN CHAR cCharacter,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
@ -1692,6 +1718,7 @@ FillConsoleOutputCharacterA(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
FillConsoleOutputAttribute(IN HANDLE hConsoleOutput,
|
FillConsoleOutputAttribute(IN HANDLE hConsoleOutput,
|
||||||
IN WORD wAttribute,
|
IN WORD wAttribute,
|
||||||
IN DWORD nLength,
|
IN DWORD nLength,
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
|
GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
@ -58,6 +59,7 @@ GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleHistoryInfo(IN PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
|
SetConsoleHistoryInfo(IN PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
@ -93,6 +95,7 @@ SetConsoleHistoryInfo(IN PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleOriginalTitleW(OUT LPWSTR lpConsoleTitle,
|
GetConsoleOriginalTitleW(OUT LPWSTR lpConsoleTitle,
|
||||||
IN DWORD nSize)
|
IN DWORD nSize)
|
||||||
{
|
{
|
||||||
|
@ -107,6 +110,7 @@ GetConsoleOriginalTitleW(OUT LPWSTR lpConsoleTitle,
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleOriginalTitleA(OUT LPSTR lpConsoleTitle,
|
GetConsoleOriginalTitleA(OUT LPSTR lpConsoleTitle,
|
||||||
IN DWORD nSize)
|
IN DWORD nSize)
|
||||||
{
|
{
|
||||||
|
@ -121,6 +125,7 @@ GetConsoleOriginalTitleA(OUT LPSTR lpConsoleTitle,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
|
GetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
|
||||||
OUT PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx)
|
OUT PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx)
|
||||||
{
|
{
|
||||||
|
@ -135,6 +140,7 @@ GetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
SetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
|
SetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
|
||||||
IN PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx)
|
IN PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx)
|
||||||
{
|
{
|
||||||
|
@ -149,6 +155,7 @@ SetConsoleScreenBufferInfoEx(IN HANDLE hConsoleOutput,
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
|
DECLSPEC_HOTPATCH
|
||||||
GetCurrentConsoleFontEx(IN HANDLE hConsoleOutput,
|
GetCurrentConsoleFontEx(IN HANDLE hConsoleOutput,
|
||||||
IN BOOL bMaximumWindow,
|
IN BOOL bMaximumWindow,
|
||||||
OUT PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx)
|
OUT PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx)
|
||||||
|
|
|
@ -131,7 +131,7 @@ VerifyVersionInfoW(IN LPOSVERSIONINFOEXW lpVersionInformation,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
case STATUS_REVISION_MISMATCH:
|
case STATUS_REVISION_MISMATCH:
|
||||||
DPRINT1("ReactOS returning version mismatch. Investigate!\n");
|
DPRINT1("VerifyVersionInfo -- Version mismatch\n");
|
||||||
SetLastError(ERROR_OLD_WIN_VERSION);
|
SetLastError(ERROR_OLD_WIN_VERSION);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,9 @@
|
||||||
|
|
||||||
#include "winnls/locale_rc.rc"
|
#include "winnls/locale_rc.rc"
|
||||||
|
|
||||||
|
/* FIXME */
|
||||||
|
#define NLSRC_OFFSET 5000
|
||||||
|
|
||||||
/* UTF-8 */
|
/* UTF-8 */
|
||||||
#pragma code_page(65001)
|
#pragma code_page(65001)
|
||||||
#ifdef LANGUAGE_CS_CZ
|
#ifdef LANGUAGE_CS_CZ
|
||||||
|
|
|
@ -158,4 +158,271 @@ BEGIN
|
||||||
|
|
||||||
52936 "52936 (HZ-GB2312 zjednodušená čínština)"
|
52936 "52936 (HZ-GB2312 zjednodušená čínština)"
|
||||||
54936 "54936 (GB18030 zjednodušená čínština)"
|
54936 "54936 (GB18030 zjednodušená čínština)"
|
||||||
|
|
||||||
|
/* Locations */
|
||||||
|
2+NLSRC_OFFSET "Antigua and Barbuda"
|
||||||
|
3+NLSRC_OFFSET "Afghanistan"
|
||||||
|
4+NLSRC_OFFSET "Algeria"
|
||||||
|
5+NLSRC_OFFSET "Azerbaijan"
|
||||||
|
6+NLSRC_OFFSET "Albania"
|
||||||
|
7+NLSRC_OFFSET "Armenia"
|
||||||
|
8+NLSRC_OFFSET "Andorra"
|
||||||
|
9+NLSRC_OFFSET "Angola"
|
||||||
|
10+NLSRC_OFFSET "American Samoa"
|
||||||
|
11+NLSRC_OFFSET "Argentina"
|
||||||
|
12+NLSRC_OFFSET "Australia"
|
||||||
|
14+NLSRC_OFFSET "Austria"
|
||||||
|
17+NLSRC_OFFSET "Bahrain"
|
||||||
|
18+NLSRC_OFFSET "Barbados"
|
||||||
|
19+NLSRC_OFFSET "Botswana"
|
||||||
|
20+NLSRC_OFFSET "Bermuda"
|
||||||
|
21+NLSRC_OFFSET "Belgium"
|
||||||
|
22+NLSRC_OFFSET "Bahamas, The"
|
||||||
|
23+NLSRC_OFFSET "Bangladesh"
|
||||||
|
24+NLSRC_OFFSET "Belize"
|
||||||
|
25+NLSRC_OFFSET "Bosnia and Herzegovina"
|
||||||
|
26+NLSRC_OFFSET "Bolivia"
|
||||||
|
27+NLSRC_OFFSET "Myanmar"
|
||||||
|
28+NLSRC_OFFSET "Benin"
|
||||||
|
29+NLSRC_OFFSET "Belarus"
|
||||||
|
30+NLSRC_OFFSET "Solomon Islands"
|
||||||
|
32+NLSRC_OFFSET "Brazil"
|
||||||
|
34+NLSRC_OFFSET "Bhutan"
|
||||||
|
35+NLSRC_OFFSET "Bulgaria"
|
||||||
|
38+NLSRC_OFFSET "Burundi"
|
||||||
|
39+NLSRC_OFFSET "Canada"
|
||||||
|
40+NLSRC_OFFSET "Cambodia"
|
||||||
|
41+NLSRC_OFFSET "Chad"
|
||||||
|
42+NLSRC_OFFSET "Sri Lanka"
|
||||||
|
43+NLSRC_OFFSET "Congo"
|
||||||
|
44+NLSRC_OFFSET "Congo (DRC)"
|
||||||
|
45+NLSRC_OFFSET "China"
|
||||||
|
46+NLSRC_OFFSET "Chile"
|
||||||
|
49+NLSRC_OFFSET "Cameroon"
|
||||||
|
50+NLSRC_OFFSET "Comoros"
|
||||||
|
51+NLSRC_OFFSET "Colombia"
|
||||||
|
54+NLSRC_OFFSET "Costa Rica"
|
||||||
|
55+NLSRC_OFFSET "Central African Republic"
|
||||||
|
56+NLSRC_OFFSET "Cuba"
|
||||||
|
57+NLSRC_OFFSET "Cape Verde"
|
||||||
|
59+NLSRC_OFFSET "Cyprus"
|
||||||
|
61+NLSRC_OFFSET "Denmark"
|
||||||
|
62+NLSRC_OFFSET "Djibouti"
|
||||||
|
63+NLSRC_OFFSET "Dominica"
|
||||||
|
65+NLSRC_OFFSET "Dominican Republic"
|
||||||
|
66+NLSRC_OFFSET "Ecuador"
|
||||||
|
67+NLSRC_OFFSET "Egypt"
|
||||||
|
68+NLSRC_OFFSET "Ireland"
|
||||||
|
69+NLSRC_OFFSET "Equatorial Guinea"
|
||||||
|
70+NLSRC_OFFSET "Estonia"
|
||||||
|
71+NLSRC_OFFSET "Eritrea"
|
||||||
|
72+NLSRC_OFFSET "El Salvador"
|
||||||
|
73+NLSRC_OFFSET "Ethiopia"
|
||||||
|
75+NLSRC_OFFSET "Czech Republic"
|
||||||
|
77+NLSRC_OFFSET "Finland"
|
||||||
|
78+NLSRC_OFFSET "Fiji Islands"
|
||||||
|
80+NLSRC_OFFSET "Micronesia"
|
||||||
|
81+NLSRC_OFFSET "Faroe Islands"
|
||||||
|
84+NLSRC_OFFSET "France"
|
||||||
|
86+NLSRC_OFFSET "Gambia, The"
|
||||||
|
87+NLSRC_OFFSET "Gabon"
|
||||||
|
88+NLSRC_OFFSET "Georgia"
|
||||||
|
89+NLSRC_OFFSET "Ghana"
|
||||||
|
90+NLSRC_OFFSET "Gibraltar"
|
||||||
|
91+NLSRC_OFFSET "Grenada"
|
||||||
|
93+NLSRC_OFFSET "Greenland"
|
||||||
|
94+NLSRC_OFFSET "Germany"
|
||||||
|
98+NLSRC_OFFSET "Greece"
|
||||||
|
99+NLSRC_OFFSET "Guatemala"
|
||||||
|
100+NLSRC_OFFSET "Guinea"
|
||||||
|
101+NLSRC_OFFSET "Guyana"
|
||||||
|
103+NLSRC_OFFSET "Haiti"
|
||||||
|
104+NLSRC_OFFSET "Hong Kong S.A.R."
|
||||||
|
106+NLSRC_OFFSET "Honduras"
|
||||||
|
108+NLSRC_OFFSET "Croatia"
|
||||||
|
109+NLSRC_OFFSET "Hungary"
|
||||||
|
110+NLSRC_OFFSET "Iceland"
|
||||||
|
111+NLSRC_OFFSET "Indonesia"
|
||||||
|
113+NLSRC_OFFSET "India"
|
||||||
|
114+NLSRC_OFFSET "British Indian Ocean Territory"
|
||||||
|
116+NLSRC_OFFSET "Iran"
|
||||||
|
117+NLSRC_OFFSET "Israel"
|
||||||
|
118+NLSRC_OFFSET "Italy"
|
||||||
|
119+NLSRC_OFFSET "Côte d'Ivoire"
|
||||||
|
121+NLSRC_OFFSET "Iraq"
|
||||||
|
122+NLSRC_OFFSET "Japan"
|
||||||
|
124+NLSRC_OFFSET "Jamaica"
|
||||||
|
125+NLSRC_OFFSET "Jan Mayen"
|
||||||
|
126+NLSRC_OFFSET "Jordan"
|
||||||
|
127+NLSRC_OFFSET "Johnston Atoll"
|
||||||
|
129+NLSRC_OFFSET "Kenya"
|
||||||
|
130+NLSRC_OFFSET "Kyrgyzstan"
|
||||||
|
131+NLSRC_OFFSET "North Korea"
|
||||||
|
133+NLSRC_OFFSET "Kiribati"
|
||||||
|
134+NLSRC_OFFSET "Korea"
|
||||||
|
136+NLSRC_OFFSET "Kuwait"
|
||||||
|
137+NLSRC_OFFSET "Kazakhstan"
|
||||||
|
138+NLSRC_OFFSET "Laos"
|
||||||
|
139+NLSRC_OFFSET "Lebanon"
|
||||||
|
140+NLSRC_OFFSET "Latvia"
|
||||||
|
141+NLSRC_OFFSET "Lithuania"
|
||||||
|
142+NLSRC_OFFSET "Liberia"
|
||||||
|
143+NLSRC_OFFSET "Slovakia"
|
||||||
|
145+NLSRC_OFFSET "Liechtenstein"
|
||||||
|
146+NLSRC_OFFSET "Lesotho"
|
||||||
|
147+NLSRC_OFFSET "Luxembourg"
|
||||||
|
148+NLSRC_OFFSET "Libya"
|
||||||
|
149+NLSRC_OFFSET "Madagascar"
|
||||||
|
151+NLSRC_OFFSET "Macao S.A.R."
|
||||||
|
152+NLSRC_OFFSET "Moldova"
|
||||||
|
154+NLSRC_OFFSET "Mongolia"
|
||||||
|
156+NLSRC_OFFSET "Malawi"
|
||||||
|
157+NLSRC_OFFSET "Mali"
|
||||||
|
158+NLSRC_OFFSET "Monaco"
|
||||||
|
159+NLSRC_OFFSET "Morocco"
|
||||||
|
160+NLSRC_OFFSET "Mauritius"
|
||||||
|
162+NLSRC_OFFSET "Mauritania"
|
||||||
|
163+NLSRC_OFFSET "Malta"
|
||||||
|
164+NLSRC_OFFSET "Oman"
|
||||||
|
165+NLSRC_OFFSET "Maldives"
|
||||||
|
166+NLSRC_OFFSET "Mexico"
|
||||||
|
167+NLSRC_OFFSET "Malaysia"
|
||||||
|
168+NLSRC_OFFSET "Mozambique"
|
||||||
|
173+NLSRC_OFFSET "Niger"
|
||||||
|
174+NLSRC_OFFSET "Vanuatu"
|
||||||
|
175+NLSRC_OFFSET "Nigeria"
|
||||||
|
176+NLSRC_OFFSET "Netherlands"
|
||||||
|
177+NLSRC_OFFSET "Norway"
|
||||||
|
178+NLSRC_OFFSET "Nepal"
|
||||||
|
180+NLSRC_OFFSET "Nauru"
|
||||||
|
181+NLSRC_OFFSET "Suriname"
|
||||||
|
182+NLSRC_OFFSET "Nicaragua"
|
||||||
|
183+NLSRC_OFFSET "New Zealand"
|
||||||
|
184+NLSRC_OFFSET "Palestinian Authority"
|
||||||
|
185+NLSRC_OFFSET "Paraguay"
|
||||||
|
187+NLSRC_OFFSET "Peru"
|
||||||
|
190+NLSRC_OFFSET "Pakistan"
|
||||||
|
191+NLSRC_OFFSET "Poland"
|
||||||
|
192+NLSRC_OFFSET "Panama"
|
||||||
|
193+NLSRC_OFFSET "Portugal"
|
||||||
|
194+NLSRC_OFFSET "Papua New Guinea"
|
||||||
|
195+NLSRC_OFFSET "Palau"
|
||||||
|
196+NLSRC_OFFSET "Guinea-Bissau"
|
||||||
|
197+NLSRC_OFFSET "Qatar"
|
||||||
|
198+NLSRC_OFFSET "Reunion"
|
||||||
|
199+NLSRC_OFFSET "Marshall Islands"
|
||||||
|
200+NLSRC_OFFSET "Romania"
|
||||||
|
201+NLSRC_OFFSET "Philippines"
|
||||||
|
202+NLSRC_OFFSET "Puerto Rico"
|
||||||
|
203+NLSRC_OFFSET "Russia"
|
||||||
|
204+NLSRC_OFFSET "Rwanda"
|
||||||
|
205+NLSRC_OFFSET "Saudi Arabia"
|
||||||
|
206+NLSRC_OFFSET "St. Pierre and Miquelon"
|
||||||
|
207+NLSRC_OFFSET "St. Kitts and Nevis"
|
||||||
|
208+NLSRC_OFFSET "Seychelles"
|
||||||
|
209+NLSRC_OFFSET "South Africa"
|
||||||
|
210+NLSRC_OFFSET "Senegal"
|
||||||
|
212+NLSRC_OFFSET "Slovenia"
|
||||||
|
213+NLSRC_OFFSET "Sierra Leone"
|
||||||
|
214+NLSRC_OFFSET "San Marino"
|
||||||
|
215+NLSRC_OFFSET "Singapore"
|
||||||
|
216+NLSRC_OFFSET "Somalia"
|
||||||
|
217+NLSRC_OFFSET "Spain"
|
||||||
|
218+NLSRC_OFFSET "St. Lucia"
|
||||||
|
219+NLSRC_OFFSET "Sudan"
|
||||||
|
220+NLSRC_OFFSET "Svalbard"
|
||||||
|
221+NLSRC_OFFSET "Sweden"
|
||||||
|
222+NLSRC_OFFSET "Syria"
|
||||||
|
223+NLSRC_OFFSET "Switzerland"
|
||||||
|
224+NLSRC_OFFSET "United Arab Emirates"
|
||||||
|
225+NLSRC_OFFSET "Trinidad and Tobago"
|
||||||
|
227+NLSRC_OFFSET "Thailand"
|
||||||
|
228+NLSRC_OFFSET "Tajikistan"
|
||||||
|
231+NLSRC_OFFSET "Tonga"
|
||||||
|
232+NLSRC_OFFSET "Togo"
|
||||||
|
233+NLSRC_OFFSET "São Tomé and Príncipe"
|
||||||
|
234+NLSRC_OFFSET "Tunisia"
|
||||||
|
235+NLSRC_OFFSET "Turkey"
|
||||||
|
236+NLSRC_OFFSET "Tuvalu"
|
||||||
|
237+NLSRC_OFFSET "Taiwan"
|
||||||
|
238+NLSRC_OFFSET "Turkmenistan"
|
||||||
|
239+NLSRC_OFFSET "Tanzania"
|
||||||
|
240+NLSRC_OFFSET "Uganda"
|
||||||
|
241+NLSRC_OFFSET "Ukraine"
|
||||||
|
242+NLSRC_OFFSET "United Kingdom"
|
||||||
|
244+NLSRC_OFFSET "United States"
|
||||||
|
245+NLSRC_OFFSET "Burkina Faso"
|
||||||
|
246+NLSRC_OFFSET "Uruguay"
|
||||||
|
247+NLSRC_OFFSET "Uzbekistan"
|
||||||
|
248+NLSRC_OFFSET "St. Vincent and the Grenadines"
|
||||||
|
249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
|
||||||
|
251+NLSRC_OFFSET "Vietnam"
|
||||||
|
252+NLSRC_OFFSET "Virgin Islands"
|
||||||
|
253+NLSRC_OFFSET "Vatican City"
|
||||||
|
254+NLSRC_OFFSET "Namibia"
|
||||||
|
257+NLSRC_OFFSET "Western Sahara (disputed)"
|
||||||
|
258+NLSRC_OFFSET "Wake Island"
|
||||||
|
259+NLSRC_OFFSET "Samoa"
|
||||||
|
260+NLSRC_OFFSET "Swaziland"
|
||||||
|
261+NLSRC_OFFSET "Yemen"
|
||||||
|
263+NLSRC_OFFSET "Zambia"
|
||||||
|
264+NLSRC_OFFSET "Zimbabwe"
|
||||||
|
269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
|
||||||
|
270+NLSRC_OFFSET "Montenegro"
|
||||||
|
271+NLSRC_OFFSET "Serbia"
|
||||||
|
273+NLSRC_OFFSET "Curaçao"
|
||||||
|
276+NLSRC_OFFSET "South Sudan"
|
||||||
|
300+NLSRC_OFFSET "Anguilla"
|
||||||
|
301+NLSRC_OFFSET "Antarctica"
|
||||||
|
302+NLSRC_OFFSET "Aruba"
|
||||||
|
303+NLSRC_OFFSET "Ascension Island"
|
||||||
|
304+NLSRC_OFFSET "Ashmore and Cartier Islands"
|
||||||
|
305+NLSRC_OFFSET "Baker Island"
|
||||||
|
306+NLSRC_OFFSET "Bouvet Island"
|
||||||
|
307+NLSRC_OFFSET "Cayman Islands"
|
||||||
|
308+NLSRC_OFFSET "Channel Islands"
|
||||||
|
309+NLSRC_OFFSET "Christmas Island"
|
||||||
|
310+NLSRC_OFFSET "Clipperton Island"
|
||||||
|
311+NLSRC_OFFSET "Cocos (Keeling) Islands"
|
||||||
|
312+NLSRC_OFFSET "Cook Islands"
|
||||||
|
313+NLSRC_OFFSET "Coral Sea Islands"
|
||||||
|
314+NLSRC_OFFSET "Diego Garcia"
|
||||||
|
315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
|
||||||
|
317+NLSRC_OFFSET "French Guiana"
|
||||||
|
318+NLSRC_OFFSET "French Polynesia"
|
||||||
|
319+NLSRC_OFFSET "French Southern and Antarctic Lands"
|
||||||
|
321+NLSRC_OFFSET "Guadeloupe"
|
||||||
|
322+NLSRC_OFFSET "Guam"
|
||||||
|
323+NLSRC_OFFSET "Guantanamo Bay"
|
||||||
|
324+NLSRC_OFFSET "Guernsey"
|
||||||
|
325+NLSRC_OFFSET "Heard Island and McDonald Islands"
|
||||||
|
326+NLSRC_OFFSET "Howland Island"
|
||||||
|
327+NLSRC_OFFSET "Jarvis Island"
|
||||||
|
328+NLSRC_OFFSET "Jersey"
|
||||||
|
329+NLSRC_OFFSET "Kingman Reef"
|
||||||
|
330+NLSRC_OFFSET "Martinique"
|
||||||
|
331+NLSRC_OFFSET "Mayotte"
|
||||||
|
332+NLSRC_OFFSET "Montserrat"
|
||||||
|
333+NLSRC_OFFSET "Netherlands Antilles (Former)"
|
||||||
|
334+NLSRC_OFFSET "New Caledonia"
|
||||||
|
335+NLSRC_OFFSET "Niue"
|
||||||
|
336+NLSRC_OFFSET "Norfolk Island"
|
||||||
|
337+NLSRC_OFFSET "Northern Mariana Islands"
|
||||||
|
338+NLSRC_OFFSET "Palmyra Atoll"
|
||||||
|
339+NLSRC_OFFSET "Pitcairn Islands"
|
||||||
|
340+NLSRC_OFFSET "Rota Island"
|
||||||
|
341+NLSRC_OFFSET "Saipan"
|
||||||
|
342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
|
||||||
|
343+NLSRC_OFFSET "St. Helena"
|
||||||
|
346+NLSRC_OFFSET "Tinian Island"
|
||||||
|
347+NLSRC_OFFSET "Tokelau"
|
||||||
|
348+NLSRC_OFFSET "Tristan da Cunha"
|
||||||
|
349+NLSRC_OFFSET "Turks and Caicos Islands"
|
||||||
|
351+NLSRC_OFFSET "Virgin Islands, British"
|
||||||
|
352+NLSRC_OFFSET "Wallis and Futuna"
|
||||||
|
15126+NLSRC_OFFSET "Man, Isle of"
|
||||||
|
19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
|
||||||
|
21242+NLSRC_OFFSET "Midway Islands"
|
||||||
|
30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
|
||||||
|
31706+NLSRC_OFFSET "Saint Martin (French part)"
|
||||||
END
|
END
|
||||||
|
|
|
@ -158,4 +158,271 @@ BEGIN
|
||||||
|
|
||||||
52936 "52936 (Chinesisch vereinfacht (HZ))"
|
52936 "52936 (Chinesisch vereinfacht (HZ))"
|
||||||
54936 "54936 (Chinesisch vereinfacht (GB18030))"
|
54936 "54936 (Chinesisch vereinfacht (GB18030))"
|
||||||
|
|
||||||
|
/* Locations */
|
||||||
|
2+NLSRC_OFFSET "Antigua and Barbuda"
|
||||||
|
3+NLSRC_OFFSET "Afghanistan"
|
||||||
|
4+NLSRC_OFFSET "Algeria"
|
||||||
|
5+NLSRC_OFFSET "Azerbaijan"
|
||||||
|
6+NLSRC_OFFSET "Albania"
|
||||||
|
7+NLSRC_OFFSET "Armenia"
|
||||||
|
8+NLSRC_OFFSET "Andorra"
|
||||||
|
9+NLSRC_OFFSET "Angola"
|
||||||
|
10+NLSRC_OFFSET "American Samoa"
|
||||||
|
11+NLSRC_OFFSET "Argentina"
|
||||||
|
12+NLSRC_OFFSET "Australia"
|
||||||
|
14+NLSRC_OFFSET "Austria"
|
||||||
|
17+NLSRC_OFFSET "Bahrain"
|
||||||
|
18+NLSRC_OFFSET "Barbados"
|
||||||
|
19+NLSRC_OFFSET "Botswana"
|
||||||
|
20+NLSRC_OFFSET "Bermuda"
|
||||||
|
21+NLSRC_OFFSET "Belgium"
|
||||||
|
22+NLSRC_OFFSET "Bahamas, The"
|
||||||
|
23+NLSRC_OFFSET "Bangladesh"
|
||||||
|
24+NLSRC_OFFSET "Belize"
|
||||||
|
25+NLSRC_OFFSET "Bosnia and Herzegovina"
|
||||||
|
26+NLSRC_OFFSET "Bolivia"
|
||||||
|
27+NLSRC_OFFSET "Myanmar"
|
||||||
|
28+NLSRC_OFFSET "Benin"
|
||||||
|
29+NLSRC_OFFSET "Belarus"
|
||||||
|
30+NLSRC_OFFSET "Solomon Islands"
|
||||||
|
32+NLSRC_OFFSET "Brazil"
|
||||||
|
34+NLSRC_OFFSET "Bhutan"
|
||||||
|
35+NLSRC_OFFSET "Bulgaria"
|
||||||
|
38+NLSRC_OFFSET "Burundi"
|
||||||
|
39+NLSRC_OFFSET "Canada"
|
||||||
|
40+NLSRC_OFFSET "Cambodia"
|
||||||
|
41+NLSRC_OFFSET "Chad"
|
||||||
|
42+NLSRC_OFFSET "Sri Lanka"
|
||||||
|
43+NLSRC_OFFSET "Congo"
|
||||||
|
44+NLSRC_OFFSET "Congo (DRC)"
|
||||||
|
45+NLSRC_OFFSET "China"
|
||||||
|
46+NLSRC_OFFSET "Chile"
|
||||||
|
49+NLSRC_OFFSET "Cameroon"
|
||||||
|
50+NLSRC_OFFSET "Comoros"
|
||||||
|
51+NLSRC_OFFSET "Colombia"
|
||||||
|
54+NLSRC_OFFSET "Costa Rica"
|
||||||
|
55+NLSRC_OFFSET "Central African Republic"
|
||||||
|
56+NLSRC_OFFSET "Cuba"
|
||||||
|
57+NLSRC_OFFSET "Cape Verde"
|
||||||
|
59+NLSRC_OFFSET "Cyprus"
|
||||||
|
61+NLSRC_OFFSET "Denmark"
|
||||||
|
62+NLSRC_OFFSET "Djibouti"
|
||||||
|
63+NLSRC_OFFSET "Dominica"
|
||||||
|
65+NLSRC_OFFSET "Dominican Republic"
|
||||||
|
66+NLSRC_OFFSET "Ecuador"
|
||||||
|
67+NLSRC_OFFSET "Egypt"
|
||||||
|
68+NLSRC_OFFSET "Ireland"
|
||||||
|
69+NLSRC_OFFSET "Equatorial Guinea"
|
||||||
|
70+NLSRC_OFFSET "Estonia"
|
||||||
|
71+NLSRC_OFFSET "Eritrea"
|
||||||
|
72+NLSRC_OFFSET "El Salvador"
|
||||||
|
73+NLSRC_OFFSET "Ethiopia"
|
||||||
|
75+NLSRC_OFFSET "Czech Republic"
|
||||||
|
77+NLSRC_OFFSET "Finland"
|
||||||
|
78+NLSRC_OFFSET "Fiji Islands"
|
||||||
|
80+NLSRC_OFFSET "Micronesia"
|
||||||
|
81+NLSRC_OFFSET "Faroe Islands"
|
||||||
|
84+NLSRC_OFFSET "France"
|
||||||
|
86+NLSRC_OFFSET "Gambia, The"
|
||||||
|
87+NLSRC_OFFSET "Gabon"
|
||||||
|
88+NLSRC_OFFSET "Georgia"
|
||||||
|
89+NLSRC_OFFSET "Ghana"
|
||||||
|
90+NLSRC_OFFSET "Gibraltar"
|
||||||
|
91+NLSRC_OFFSET "Grenada"
|
||||||
|
93+NLSRC_OFFSET "Greenland"
|
||||||
|
94+NLSRC_OFFSET "Germany"
|
||||||
|
98+NLSRC_OFFSET "Greece"
|
||||||
|
99+NLSRC_OFFSET "Guatemala"
|
||||||
|
100+NLSRC_OFFSET "Guinea"
|
||||||
|
101+NLSRC_OFFSET "Guyana"
|
||||||
|
103+NLSRC_OFFSET "Haiti"
|
||||||
|
104+NLSRC_OFFSET "Hong Kong S.A.R."
|
||||||
|
106+NLSRC_OFFSET "Honduras"
|
||||||
|
108+NLSRC_OFFSET "Croatia"
|
||||||
|
109+NLSRC_OFFSET "Hungary"
|
||||||
|
110+NLSRC_OFFSET "Iceland"
|
||||||
|
111+NLSRC_OFFSET "Indonesia"
|
||||||
|
113+NLSRC_OFFSET "India"
|
||||||
|
114+NLSRC_OFFSET "British Indian Ocean Territory"
|
||||||
|
116+NLSRC_OFFSET "Iran"
|
||||||
|
117+NLSRC_OFFSET "Israel"
|
||||||
|
118+NLSRC_OFFSET "Italy"
|
||||||
|
119+NLSRC_OFFSET "Côte d'Ivoire"
|
||||||
|
121+NLSRC_OFFSET "Iraq"
|
||||||
|
122+NLSRC_OFFSET "Japan"
|
||||||
|
124+NLSRC_OFFSET "Jamaica"
|
||||||
|
125+NLSRC_OFFSET "Jan Mayen"
|
||||||
|
126+NLSRC_OFFSET "Jordan"
|
||||||
|
127+NLSRC_OFFSET "Johnston Atoll"
|
||||||
|
129+NLSRC_OFFSET "Kenya"
|
||||||
|
130+NLSRC_OFFSET "Kyrgyzstan"
|
||||||
|
131+NLSRC_OFFSET "North Korea"
|
||||||
|
133+NLSRC_OFFSET "Kiribati"
|
||||||
|
134+NLSRC_OFFSET "Korea"
|
||||||
|
136+NLSRC_OFFSET "Kuwait"
|
||||||
|
137+NLSRC_OFFSET "Kazakhstan"
|
||||||
|
138+NLSRC_OFFSET "Laos"
|
||||||
|
139+NLSRC_OFFSET "Lebanon"
|
||||||
|
140+NLSRC_OFFSET "Latvia"
|
||||||
|
141+NLSRC_OFFSET "Lithuania"
|
||||||
|
142+NLSRC_OFFSET "Liberia"
|
||||||
|
143+NLSRC_OFFSET "Slovakia"
|
||||||
|
145+NLSRC_OFFSET "Liechtenstein"
|
||||||
|
146+NLSRC_OFFSET "Lesotho"
|
||||||
|
147+NLSRC_OFFSET "Luxembourg"
|
||||||
|
148+NLSRC_OFFSET "Libya"
|
||||||
|
149+NLSRC_OFFSET "Madagascar"
|
||||||
|
151+NLSRC_OFFSET "Macao S.A.R."
|
||||||
|
152+NLSRC_OFFSET "Moldova"
|
||||||
|
154+NLSRC_OFFSET "Mongolia"
|
||||||
|
156+NLSRC_OFFSET "Malawi"
|
||||||
|
157+NLSRC_OFFSET "Mali"
|
||||||
|
158+NLSRC_OFFSET "Monaco"
|
||||||
|
159+NLSRC_OFFSET "Morocco"
|
||||||
|
160+NLSRC_OFFSET "Mauritius"
|
||||||
|
162+NLSRC_OFFSET "Mauritania"
|
||||||
|
163+NLSRC_OFFSET "Malta"
|
||||||
|
164+NLSRC_OFFSET "Oman"
|
||||||
|
165+NLSRC_OFFSET "Maldives"
|
||||||
|
166+NLSRC_OFFSET "Mexico"
|
||||||
|
167+NLSRC_OFFSET "Malaysia"
|
||||||
|
168+NLSRC_OFFSET "Mozambique"
|
||||||
|
173+NLSRC_OFFSET "Niger"
|
||||||
|
174+NLSRC_OFFSET "Vanuatu"
|
||||||
|
175+NLSRC_OFFSET "Nigeria"
|
||||||
|
176+NLSRC_OFFSET "Netherlands"
|
||||||
|
177+NLSRC_OFFSET "Norway"
|
||||||
|
178+NLSRC_OFFSET "Nepal"
|
||||||
|
180+NLSRC_OFFSET "Nauru"
|
||||||
|
181+NLSRC_OFFSET "Suriname"
|
||||||
|
182+NLSRC_OFFSET "Nicaragua"
|
||||||
|
183+NLSRC_OFFSET "New Zealand"
|
||||||
|
184+NLSRC_OFFSET "Palestinian Authority"
|
||||||
|
185+NLSRC_OFFSET "Paraguay"
|
||||||
|
187+NLSRC_OFFSET "Peru"
|
||||||
|
190+NLSRC_OFFSET "Pakistan"
|
||||||
|
191+NLSRC_OFFSET "Poland"
|
||||||
|
192+NLSRC_OFFSET "Panama"
|
||||||
|
193+NLSRC_OFFSET "Portugal"
|
||||||
|
194+NLSRC_OFFSET "Papua New Guinea"
|
||||||
|
195+NLSRC_OFFSET "Palau"
|
||||||
|
196+NLSRC_OFFSET "Guinea-Bissau"
|
||||||
|
197+NLSRC_OFFSET "Qatar"
|
||||||
|
198+NLSRC_OFFSET "Reunion"
|
||||||
|
199+NLSRC_OFFSET "Marshall Islands"
|
||||||
|
200+NLSRC_OFFSET "Romania"
|
||||||
|
201+NLSRC_OFFSET "Philippines"
|
||||||
|
202+NLSRC_OFFSET "Puerto Rico"
|
||||||
|
203+NLSRC_OFFSET "Russia"
|
||||||
|
204+NLSRC_OFFSET "Rwanda"
|
||||||
|
205+NLSRC_OFFSET "Saudi Arabia"
|
||||||
|
206+NLSRC_OFFSET "St. Pierre and Miquelon"
|
||||||
|
207+NLSRC_OFFSET "St. Kitts and Nevis"
|
||||||
|
208+NLSRC_OFFSET "Seychelles"
|
||||||
|
209+NLSRC_OFFSET "South Africa"
|
||||||
|
210+NLSRC_OFFSET "Senegal"
|
||||||
|
212+NLSRC_OFFSET "Slovenia"
|
||||||
|
213+NLSRC_OFFSET "Sierra Leone"
|
||||||
|
214+NLSRC_OFFSET "San Marino"
|
||||||
|
215+NLSRC_OFFSET "Singapore"
|
||||||
|
216+NLSRC_OFFSET "Somalia"
|
||||||
|
217+NLSRC_OFFSET "Spain"
|
||||||
|
218+NLSRC_OFFSET "St. Lucia"
|
||||||
|
219+NLSRC_OFFSET "Sudan"
|
||||||
|
220+NLSRC_OFFSET "Svalbard"
|
||||||
|
221+NLSRC_OFFSET "Sweden"
|
||||||
|
222+NLSRC_OFFSET "Syria"
|
||||||
|
223+NLSRC_OFFSET "Switzerland"
|
||||||
|
224+NLSRC_OFFSET "United Arab Emirates"
|
||||||
|
225+NLSRC_OFFSET "Trinidad and Tobago"
|
||||||
|
227+NLSRC_OFFSET "Thailand"
|
||||||
|
228+NLSRC_OFFSET "Tajikistan"
|
||||||
|
231+NLSRC_OFFSET "Tonga"
|
||||||
|
232+NLSRC_OFFSET "Togo"
|
||||||
|
233+NLSRC_OFFSET "São Tomé and Príncipe"
|
||||||
|
234+NLSRC_OFFSET "Tunisia"
|
||||||
|
235+NLSRC_OFFSET "Turkey"
|
||||||
|
236+NLSRC_OFFSET "Tuvalu"
|
||||||
|
237+NLSRC_OFFSET "Taiwan"
|
||||||
|
238+NLSRC_OFFSET "Turkmenistan"
|
||||||
|
239+NLSRC_OFFSET "Tanzania"
|
||||||
|
240+NLSRC_OFFSET "Uganda"
|
||||||
|
241+NLSRC_OFFSET "Ukraine"
|
||||||
|
242+NLSRC_OFFSET "United Kingdom"
|
||||||
|
244+NLSRC_OFFSET "United States"
|
||||||
|
245+NLSRC_OFFSET "Burkina Faso"
|
||||||
|
246+NLSRC_OFFSET "Uruguay"
|
||||||
|
247+NLSRC_OFFSET "Uzbekistan"
|
||||||
|
248+NLSRC_OFFSET "St. Vincent and the Grenadines"
|
||||||
|
249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
|
||||||
|
251+NLSRC_OFFSET "Vietnam"
|
||||||
|
252+NLSRC_OFFSET "Virgin Islands"
|
||||||
|
253+NLSRC_OFFSET "Vatican City"
|
||||||
|
254+NLSRC_OFFSET "Namibia"
|
||||||
|
257+NLSRC_OFFSET "Western Sahara (disputed)"
|
||||||
|
258+NLSRC_OFFSET "Wake Island"
|
||||||
|
259+NLSRC_OFFSET "Samoa"
|
||||||
|
260+NLSRC_OFFSET "Swaziland"
|
||||||
|
261+NLSRC_OFFSET "Yemen"
|
||||||
|
263+NLSRC_OFFSET "Zambia"
|
||||||
|
264+NLSRC_OFFSET "Zimbabwe"
|
||||||
|
269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
|
||||||
|
270+NLSRC_OFFSET "Montenegro"
|
||||||
|
271+NLSRC_OFFSET "Serbia"
|
||||||
|
273+NLSRC_OFFSET "Curaçao"
|
||||||
|
276+NLSRC_OFFSET "South Sudan"
|
||||||
|
300+NLSRC_OFFSET "Anguilla"
|
||||||
|
301+NLSRC_OFFSET "Antarctica"
|
||||||
|
302+NLSRC_OFFSET "Aruba"
|
||||||
|
303+NLSRC_OFFSET "Ascension Island"
|
||||||
|
304+NLSRC_OFFSET "Ashmore and Cartier Islands"
|
||||||
|
305+NLSRC_OFFSET "Baker Island"
|
||||||
|
306+NLSRC_OFFSET "Bouvet Island"
|
||||||
|
307+NLSRC_OFFSET "Cayman Islands"
|
||||||
|
308+NLSRC_OFFSET "Channel Islands"
|
||||||
|
309+NLSRC_OFFSET "Christmas Island"
|
||||||
|
310+NLSRC_OFFSET "Clipperton Island"
|
||||||
|
311+NLSRC_OFFSET "Cocos (Keeling) Islands"
|
||||||
|
312+NLSRC_OFFSET "Cook Islands"
|
||||||
|
313+NLSRC_OFFSET "Coral Sea Islands"
|
||||||
|
314+NLSRC_OFFSET "Diego Garcia"
|
||||||
|
315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
|
||||||
|
317+NLSRC_OFFSET "French Guiana"
|
||||||
|
318+NLSRC_OFFSET "French Polynesia"
|
||||||
|
319+NLSRC_OFFSET "French Southern and Antarctic Lands"
|
||||||
|
321+NLSRC_OFFSET "Guadeloupe"
|
||||||
|
322+NLSRC_OFFSET "Guam"
|
||||||
|
323+NLSRC_OFFSET "Guantanamo Bay"
|
||||||
|
324+NLSRC_OFFSET "Guernsey"
|
||||||
|
325+NLSRC_OFFSET "Heard Island and McDonald Islands"
|
||||||
|
326+NLSRC_OFFSET "Howland Island"
|
||||||
|
327+NLSRC_OFFSET "Jarvis Island"
|
||||||
|
328+NLSRC_OFFSET "Jersey"
|
||||||
|
329+NLSRC_OFFSET "Kingman Reef"
|
||||||
|
330+NLSRC_OFFSET "Martinique"
|
||||||
|
331+NLSRC_OFFSET "Mayotte"
|
||||||
|
332+NLSRC_OFFSET "Montserrat"
|
||||||
|
333+NLSRC_OFFSET "Netherlands Antilles (Former)"
|
||||||
|
334+NLSRC_OFFSET "New Caledonia"
|
||||||
|
335+NLSRC_OFFSET "Niue"
|
||||||
|
336+NLSRC_OFFSET "Norfolk Island"
|
||||||
|
337+NLSRC_OFFSET "Northern Mariana Islands"
|
||||||
|
338+NLSRC_OFFSET "Palmyra Atoll"
|
||||||
|
339+NLSRC_OFFSET "Pitcairn Islands"
|
||||||
|
340+NLSRC_OFFSET "Rota Island"
|
||||||
|
341+NLSRC_OFFSET "Saipan"
|
||||||
|
342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
|
||||||
|
343+NLSRC_OFFSET "St. Helena"
|
||||||
|
346+NLSRC_OFFSET "Tinian Island"
|
||||||
|
347+NLSRC_OFFSET "Tokelau"
|
||||||
|
348+NLSRC_OFFSET "Tristan da Cunha"
|
||||||
|
349+NLSRC_OFFSET "Turks and Caicos Islands"
|
||||||
|
351+NLSRC_OFFSET "Virgin Islands, British"
|
||||||
|
352+NLSRC_OFFSET "Wallis and Futuna"
|
||||||
|
15126+NLSRC_OFFSET "Man, Isle of"
|
||||||
|
19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
|
||||||
|
21242+NLSRC_OFFSET "Midway Islands"
|
||||||
|
30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
|
||||||
|
31706+NLSRC_OFFSET "Saint Martin (French part)"
|
||||||
END
|
END
|
||||||
|
|
|
@ -158,4 +158,271 @@ BEGIN
|
||||||
|
|
||||||
52936 "52936 (HZ-GB2312 Simplified Chinese)"
|
52936 "52936 (HZ-GB2312 Simplified Chinese)"
|
||||||
54936 "54936 (GB18030 Simplified Chinese)"
|
54936 "54936 (GB18030 Simplified Chinese)"
|
||||||
|
|
||||||
|
/* Locations */
|
||||||
|
2+NLSRC_OFFSET "Antigua and Barbuda"
|
||||||
|
3+NLSRC_OFFSET "Afghanistan"
|
||||||
|
4+NLSRC_OFFSET "Algeria"
|
||||||
|
5+NLSRC_OFFSET "Azerbaijan"
|
||||||
|
6+NLSRC_OFFSET "Albania"
|
||||||
|
7+NLSRC_OFFSET "Armenia"
|
||||||
|
8+NLSRC_OFFSET "Andorra"
|
||||||
|
9+NLSRC_OFFSET "Angola"
|
||||||
|
10+NLSRC_OFFSET "American Samoa"
|
||||||
|
11+NLSRC_OFFSET "Argentina"
|
||||||
|
12+NLSRC_OFFSET "Australia"
|
||||||
|
14+NLSRC_OFFSET "Austria"
|
||||||
|
17+NLSRC_OFFSET "Bahrain"
|
||||||
|
18+NLSRC_OFFSET "Barbados"
|
||||||
|
19+NLSRC_OFFSET "Botswana"
|
||||||
|
20+NLSRC_OFFSET "Bermuda"
|
||||||
|
21+NLSRC_OFFSET "Belgium"
|
||||||
|
22+NLSRC_OFFSET "Bahamas, The"
|
||||||
|
23+NLSRC_OFFSET "Bangladesh"
|
||||||
|
24+NLSRC_OFFSET "Belize"
|
||||||
|
25+NLSRC_OFFSET "Bosnia and Herzegovina"
|
||||||
|
26+NLSRC_OFFSET "Bolivia"
|
||||||
|
27+NLSRC_OFFSET "Myanmar"
|
||||||
|
28+NLSRC_OFFSET "Benin"
|
||||||
|
29+NLSRC_OFFSET "Belarus"
|
||||||
|
30+NLSRC_OFFSET "Solomon Islands"
|
||||||
|
32+NLSRC_OFFSET "Brazil"
|
||||||
|
34+NLSRC_OFFSET "Bhutan"
|
||||||
|
35+NLSRC_OFFSET "Bulgaria"
|
||||||
|
38+NLSRC_OFFSET "Burundi"
|
||||||
|
39+NLSRC_OFFSET "Canada"
|
||||||
|
40+NLSRC_OFFSET "Cambodia"
|
||||||
|
41+NLSRC_OFFSET "Chad"
|
||||||
|
42+NLSRC_OFFSET "Sri Lanka"
|
||||||
|
43+NLSRC_OFFSET "Congo"
|
||||||
|
44+NLSRC_OFFSET "Congo (DRC)"
|
||||||
|
45+NLSRC_OFFSET "China"
|
||||||
|
46+NLSRC_OFFSET "Chile"
|
||||||
|
49+NLSRC_OFFSET "Cameroon"
|
||||||
|
50+NLSRC_OFFSET "Comoros"
|
||||||
|
51+NLSRC_OFFSET "Colombia"
|
||||||
|
54+NLSRC_OFFSET "Costa Rica"
|
||||||
|
55+NLSRC_OFFSET "Central African Republic"
|
||||||
|
56+NLSRC_OFFSET "Cuba"
|
||||||
|
57+NLSRC_OFFSET "Cape Verde"
|
||||||
|
59+NLSRC_OFFSET "Cyprus"
|
||||||
|
61+NLSRC_OFFSET "Denmark"
|
||||||
|
62+NLSRC_OFFSET "Djibouti"
|
||||||
|
63+NLSRC_OFFSET "Dominica"
|
||||||
|
65+NLSRC_OFFSET "Dominican Republic"
|
||||||
|
66+NLSRC_OFFSET "Ecuador"
|
||||||
|
67+NLSRC_OFFSET "Egypt"
|
||||||
|
68+NLSRC_OFFSET "Ireland"
|
||||||
|
69+NLSRC_OFFSET "Equatorial Guinea"
|
||||||
|
70+NLSRC_OFFSET "Estonia"
|
||||||
|
71+NLSRC_OFFSET "Eritrea"
|
||||||
|
72+NLSRC_OFFSET "El Salvador"
|
||||||
|
73+NLSRC_OFFSET "Ethiopia"
|
||||||
|
75+NLSRC_OFFSET "Czech Republic"
|
||||||
|
77+NLSRC_OFFSET "Finland"
|
||||||
|
78+NLSRC_OFFSET "Fiji Islands"
|
||||||
|
80+NLSRC_OFFSET "Micronesia"
|
||||||
|
81+NLSRC_OFFSET "Faroe Islands"
|
||||||
|
84+NLSRC_OFFSET "France"
|
||||||
|
86+NLSRC_OFFSET "Gambia, The"
|
||||||
|
87+NLSRC_OFFSET "Gabon"
|
||||||
|
88+NLSRC_OFFSET "Georgia"
|
||||||
|
89+NLSRC_OFFSET "Ghana"
|
||||||
|
90+NLSRC_OFFSET "Gibraltar"
|
||||||
|
91+NLSRC_OFFSET "Grenada"
|
||||||
|
93+NLSRC_OFFSET "Greenland"
|
||||||
|
94+NLSRC_OFFSET "Germany"
|
||||||
|
98+NLSRC_OFFSET "Greece"
|
||||||
|
99+NLSRC_OFFSET "Guatemala"
|
||||||
|
100+NLSRC_OFFSET "Guinea"
|
||||||
|
101+NLSRC_OFFSET "Guyana"
|
||||||
|
103+NLSRC_OFFSET "Haiti"
|
||||||
|
104+NLSRC_OFFSET "Hong Kong S.A.R."
|
||||||
|
106+NLSRC_OFFSET "Honduras"
|
||||||
|
108+NLSRC_OFFSET "Croatia"
|
||||||
|
109+NLSRC_OFFSET "Hungary"
|
||||||
|
110+NLSRC_OFFSET "Iceland"
|
||||||
|
111+NLSRC_OFFSET "Indonesia"
|
||||||
|
113+NLSRC_OFFSET "India"
|
||||||
|
114+NLSRC_OFFSET "British Indian Ocean Territory"
|
||||||
|
116+NLSRC_OFFSET "Iran"
|
||||||
|
117+NLSRC_OFFSET "Israel"
|
||||||
|
118+NLSRC_OFFSET "Italy"
|
||||||
|
119+NLSRC_OFFSET "Côte d'Ivoire"
|
||||||
|
121+NLSRC_OFFSET "Iraq"
|
||||||
|
122+NLSRC_OFFSET "Japan"
|
||||||
|
124+NLSRC_OFFSET "Jamaica"
|
||||||
|
125+NLSRC_OFFSET "Jan Mayen"
|
||||||
|
126+NLSRC_OFFSET "Jordan"
|
||||||
|
127+NLSRC_OFFSET "Johnston Atoll"
|
||||||
|
129+NLSRC_OFFSET "Kenya"
|
||||||
|
130+NLSRC_OFFSET "Kyrgyzstan"
|
||||||
|
131+NLSRC_OFFSET "North Korea"
|
||||||
|
133+NLSRC_OFFSET "Kiribati"
|
||||||
|
134+NLSRC_OFFSET "Korea"
|
||||||
|
136+NLSRC_OFFSET "Kuwait"
|
||||||
|
137+NLSRC_OFFSET "Kazakhstan"
|
||||||
|
138+NLSRC_OFFSET "Laos"
|
||||||
|
139+NLSRC_OFFSET "Lebanon"
|
||||||
|
140+NLSRC_OFFSET "Latvia"
|
||||||
|
141+NLSRC_OFFSET "Lithuania"
|
||||||
|
142+NLSRC_OFFSET "Liberia"
|
||||||
|
143+NLSRC_OFFSET "Slovakia"
|
||||||
|
145+NLSRC_OFFSET "Liechtenstein"
|
||||||
|
146+NLSRC_OFFSET "Lesotho"
|
||||||
|
147+NLSRC_OFFSET "Luxembourg"
|
||||||
|
148+NLSRC_OFFSET "Libya"
|
||||||
|
149+NLSRC_OFFSET "Madagascar"
|
||||||
|
151+NLSRC_OFFSET "Macao S.A.R."
|
||||||
|
152+NLSRC_OFFSET "Moldova"
|
||||||
|
154+NLSRC_OFFSET "Mongolia"
|
||||||
|
156+NLSRC_OFFSET "Malawi"
|
||||||
|
157+NLSRC_OFFSET "Mali"
|
||||||
|
158+NLSRC_OFFSET "Monaco"
|
||||||
|
159+NLSRC_OFFSET "Morocco"
|
||||||
|
160+NLSRC_OFFSET "Mauritius"
|
||||||
|
162+NLSRC_OFFSET "Mauritania"
|
||||||
|
163+NLSRC_OFFSET "Malta"
|
||||||
|
164+NLSRC_OFFSET "Oman"
|
||||||
|
165+NLSRC_OFFSET "Maldives"
|
||||||
|
166+NLSRC_OFFSET "Mexico"
|
||||||
|
167+NLSRC_OFFSET "Malaysia"
|
||||||
|
168+NLSRC_OFFSET "Mozambique"
|
||||||
|
173+NLSRC_OFFSET "Niger"
|
||||||
|
174+NLSRC_OFFSET "Vanuatu"
|
||||||
|
175+NLSRC_OFFSET "Nigeria"
|
||||||
|
176+NLSRC_OFFSET "Netherlands"
|
||||||
|
177+NLSRC_OFFSET "Norway"
|
||||||
|
178+NLSRC_OFFSET "Nepal"
|
||||||
|
180+NLSRC_OFFSET "Nauru"
|
||||||
|
181+NLSRC_OFFSET "Suriname"
|
||||||
|
182+NLSRC_OFFSET "Nicaragua"
|
||||||
|
183+NLSRC_OFFSET "New Zealand"
|
||||||
|
184+NLSRC_OFFSET "Palestinian Authority"
|
||||||
|
185+NLSRC_OFFSET "Paraguay"
|
||||||
|
187+NLSRC_OFFSET "Peru"
|
||||||
|
190+NLSRC_OFFSET "Pakistan"
|
||||||
|
191+NLSRC_OFFSET "Poland"
|
||||||
|
192+NLSRC_OFFSET "Panama"
|
||||||
|
193+NLSRC_OFFSET "Portugal"
|
||||||
|
194+NLSRC_OFFSET "Papua New Guinea"
|
||||||
|
195+NLSRC_OFFSET "Palau"
|
||||||
|
196+NLSRC_OFFSET "Guinea-Bissau"
|
||||||
|
197+NLSRC_OFFSET "Qatar"
|
||||||
|
198+NLSRC_OFFSET "Reunion"
|
||||||
|
199+NLSRC_OFFSET "Marshall Islands"
|
||||||
|
200+NLSRC_OFFSET "Romania"
|
||||||
|
201+NLSRC_OFFSET "Philippines"
|
||||||
|
202+NLSRC_OFFSET "Puerto Rico"
|
||||||
|
203+NLSRC_OFFSET "Russia"
|
||||||
|
204+NLSRC_OFFSET "Rwanda"
|
||||||
|
205+NLSRC_OFFSET "Saudi Arabia"
|
||||||
|
206+NLSRC_OFFSET "St. Pierre and Miquelon"
|
||||||
|
207+NLSRC_OFFSET "St. Kitts and Nevis"
|
||||||
|
208+NLSRC_OFFSET "Seychelles"
|
||||||
|
209+NLSRC_OFFSET "South Africa"
|
||||||
|
210+NLSRC_OFFSET "Senegal"
|
||||||
|
212+NLSRC_OFFSET "Slovenia"
|
||||||
|
213+NLSRC_OFFSET "Sierra Leone"
|
||||||
|
214+NLSRC_OFFSET "San Marino"
|
||||||
|
215+NLSRC_OFFSET "Singapore"
|
||||||
|
216+NLSRC_OFFSET "Somalia"
|
||||||
|
217+NLSRC_OFFSET "Spain"
|
||||||
|
218+NLSRC_OFFSET "St. Lucia"
|
||||||
|
219+NLSRC_OFFSET "Sudan"
|
||||||
|
220+NLSRC_OFFSET "Svalbard"
|
||||||
|
221+NLSRC_OFFSET "Sweden"
|
||||||
|
222+NLSRC_OFFSET "Syria"
|
||||||
|
223+NLSRC_OFFSET "Switzerland"
|
||||||
|
224+NLSRC_OFFSET "United Arab Emirates"
|
||||||
|
225+NLSRC_OFFSET "Trinidad and Tobago"
|
||||||
|
227+NLSRC_OFFSET "Thailand"
|
||||||
|
228+NLSRC_OFFSET "Tajikistan"
|
||||||
|
231+NLSRC_OFFSET "Tonga"
|
||||||
|
232+NLSRC_OFFSET "Togo"
|
||||||
|
233+NLSRC_OFFSET "São Tomé and Príncipe"
|
||||||
|
234+NLSRC_OFFSET "Tunisia"
|
||||||
|
235+NLSRC_OFFSET "Turkey"
|
||||||
|
236+NLSRC_OFFSET "Tuvalu"
|
||||||
|
237+NLSRC_OFFSET "Taiwan"
|
||||||
|
238+NLSRC_OFFSET "Turkmenistan"
|
||||||
|
239+NLSRC_OFFSET "Tanzania"
|
||||||
|
240+NLSRC_OFFSET "Uganda"
|
||||||
|
241+NLSRC_OFFSET "Ukraine"
|
||||||
|
242+NLSRC_OFFSET "United Kingdom"
|
||||||
|
244+NLSRC_OFFSET "United States"
|
||||||
|
245+NLSRC_OFFSET "Burkina Faso"
|
||||||
|
246+NLSRC_OFFSET "Uruguay"
|
||||||
|
247+NLSRC_OFFSET "Uzbekistan"
|
||||||
|
248+NLSRC_OFFSET "St. Vincent and the Grenadines"
|
||||||
|
249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
|
||||||
|
251+NLSRC_OFFSET "Vietnam"
|
||||||
|
252+NLSRC_OFFSET "Virgin Islands"
|
||||||
|
253+NLSRC_OFFSET "Vatican City"
|
||||||
|
254+NLSRC_OFFSET "Namibia"
|
||||||
|
257+NLSRC_OFFSET "Western Sahara (disputed)"
|
||||||
|
258+NLSRC_OFFSET "Wake Island"
|
||||||
|
259+NLSRC_OFFSET "Samoa"
|
||||||
|
260+NLSRC_OFFSET "Swaziland"
|
||||||
|
261+NLSRC_OFFSET "Yemen"
|
||||||
|
263+NLSRC_OFFSET "Zambia"
|
||||||
|
264+NLSRC_OFFSET "Zimbabwe"
|
||||||
|
269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
|
||||||
|
270+NLSRC_OFFSET "Montenegro"
|
||||||
|
271+NLSRC_OFFSET "Serbia"
|
||||||
|
273+NLSRC_OFFSET "Curaçao"
|
||||||
|
276+NLSRC_OFFSET "South Sudan"
|
||||||
|
300+NLSRC_OFFSET "Anguilla"
|
||||||
|
301+NLSRC_OFFSET "Antarctica"
|
||||||
|
302+NLSRC_OFFSET "Aruba"
|
||||||
|
303+NLSRC_OFFSET "Ascension Island"
|
||||||
|
304+NLSRC_OFFSET "Ashmore and Cartier Islands"
|
||||||
|
305+NLSRC_OFFSET "Baker Island"
|
||||||
|
306+NLSRC_OFFSET "Bouvet Island"
|
||||||
|
307+NLSRC_OFFSET "Cayman Islands"
|
||||||
|
308+NLSRC_OFFSET "Channel Islands"
|
||||||
|
309+NLSRC_OFFSET "Christmas Island"
|
||||||
|
310+NLSRC_OFFSET "Clipperton Island"
|
||||||
|
311+NLSRC_OFFSET "Cocos (Keeling) Islands"
|
||||||
|
312+NLSRC_OFFSET "Cook Islands"
|
||||||
|
313+NLSRC_OFFSET "Coral Sea Islands"
|
||||||
|
314+NLSRC_OFFSET "Diego Garcia"
|
||||||
|
315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
|
||||||
|
317+NLSRC_OFFSET "French Guiana"
|
||||||
|
318+NLSRC_OFFSET "French Polynesia"
|
||||||
|
319+NLSRC_OFFSET "French Southern and Antarctic Lands"
|
||||||
|
321+NLSRC_OFFSET "Guadeloupe"
|
||||||
|
322+NLSRC_OFFSET "Guam"
|
||||||
|
323+NLSRC_OFFSET "Guantanamo Bay"
|
||||||
|
324+NLSRC_OFFSET "Guernsey"
|
||||||
|
325+NLSRC_OFFSET "Heard Island and McDonald Islands"
|
||||||
|
326+NLSRC_OFFSET "Howland Island"
|
||||||
|
327+NLSRC_OFFSET "Jarvis Island"
|
||||||
|
328+NLSRC_OFFSET "Jersey"
|
||||||
|
329+NLSRC_OFFSET "Kingman Reef"
|
||||||
|
330+NLSRC_OFFSET "Martinique"
|
||||||
|
331+NLSRC_OFFSET "Mayotte"
|
||||||
|
332+NLSRC_OFFSET "Montserrat"
|
||||||
|
333+NLSRC_OFFSET "Netherlands Antilles (Former)"
|
||||||
|
334+NLSRC_OFFSET "New Caledonia"
|
||||||
|
335+NLSRC_OFFSET "Niue"
|
||||||
|
336+NLSRC_OFFSET "Norfolk Island"
|
||||||
|
337+NLSRC_OFFSET "Northern Mariana Islands"
|
||||||
|
338+NLSRC_OFFSET "Palmyra Atoll"
|
||||||
|
339+NLSRC_OFFSET "Pitcairn Islands"
|
||||||
|
340+NLSRC_OFFSET "Rota Island"
|
||||||
|
341+NLSRC_OFFSET "Saipan"
|
||||||
|
342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
|
||||||
|
343+NLSRC_OFFSET "St. Helena"
|
||||||
|
346+NLSRC_OFFSET "Tinian Island"
|
||||||
|
347+NLSRC_OFFSET "Tokelau"
|
||||||
|
348+NLSRC_OFFSET "Tristan da Cunha"
|
||||||
|
349+NLSRC_OFFSET "Turks and Caicos Islands"
|
||||||
|
351+NLSRC_OFFSET "Virgin Islands, British"
|
||||||
|
352+NLSRC_OFFSET "Wallis and Futuna"
|
||||||
|
15126+NLSRC_OFFSET "Man, Isle of"
|
||||||
|
19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
|
||||||
|
21242+NLSRC_OFFSET "Midway Islands"
|
||||||
|
30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
|
||||||
|
31706+NLSRC_OFFSET "Saint Martin (French part)"
|
||||||
END
|
END
|
||||||
|
|
|
@ -158,4 +158,271 @@ BEGIN
|
||||||
|
|
||||||
52936 "52936 (HZ-GB2312 Chino simplificado)"
|
52936 "52936 (HZ-GB2312 Chino simplificado)"
|
||||||
54936 "54936 (GB18030 Chino simplificado)"
|
54936 "54936 (GB18030 Chino simplificado)"
|
||||||
|
|
||||||
|
/* Locations */
|
||||||
|
2+NLSRC_OFFSET "Antigua and Barbuda"
|
||||||
|
3+NLSRC_OFFSET "Afghanistan"
|
||||||
|
4+NLSRC_OFFSET "Algeria"
|
||||||
|
5+NLSRC_OFFSET "Azerbaijan"
|
||||||
|
6+NLSRC_OFFSET "Albania"
|
||||||
|
7+NLSRC_OFFSET "Armenia"
|
||||||
|
8+NLSRC_OFFSET "Andorra"
|
||||||
|
9+NLSRC_OFFSET "Angola"
|
||||||
|
10+NLSRC_OFFSET "American Samoa"
|
||||||
|
11+NLSRC_OFFSET "Argentina"
|
||||||
|
12+NLSRC_OFFSET "Australia"
|
||||||
|
14+NLSRC_OFFSET "Austria"
|
||||||
|
17+NLSRC_OFFSET "Bahrain"
|
||||||
|
18+NLSRC_OFFSET "Barbados"
|
||||||
|
19+NLSRC_OFFSET "Botswana"
|
||||||
|
20+NLSRC_OFFSET "Bermuda"
|
||||||
|
21+NLSRC_OFFSET "Belgium"
|
||||||
|
22+NLSRC_OFFSET "Bahamas, The"
|
||||||
|
23+NLSRC_OFFSET "Bangladesh"
|
||||||
|
24+NLSRC_OFFSET "Belize"
|
||||||
|
25+NLSRC_OFFSET "Bosnia and Herzegovina"
|
||||||
|
26+NLSRC_OFFSET "Bolivia"
|
||||||
|
27+NLSRC_OFFSET "Myanmar"
|
||||||
|
28+NLSRC_OFFSET "Benin"
|
||||||
|
29+NLSRC_OFFSET "Belarus"
|
||||||
|
30+NLSRC_OFFSET "Solomon Islands"
|
||||||
|
32+NLSRC_OFFSET "Brazil"
|
||||||
|
34+NLSRC_OFFSET "Bhutan"
|
||||||
|
35+NLSRC_OFFSET "Bulgaria"
|
||||||
|
38+NLSRC_OFFSET "Burundi"
|
||||||
|
39+NLSRC_OFFSET "Canada"
|
||||||
|
40+NLSRC_OFFSET "Cambodia"
|
||||||
|
41+NLSRC_OFFSET "Chad"
|
||||||
|
42+NLSRC_OFFSET "Sri Lanka"
|
||||||
|
43+NLSRC_OFFSET "Congo"
|
||||||
|
44+NLSRC_OFFSET "Congo (DRC)"
|
||||||
|
45+NLSRC_OFFSET "China"
|
||||||
|
46+NLSRC_OFFSET "Chile"
|
||||||
|
49+NLSRC_OFFSET "Cameroon"
|
||||||
|
50+NLSRC_OFFSET "Comoros"
|
||||||
|
51+NLSRC_OFFSET "Colombia"
|
||||||
|
54+NLSRC_OFFSET "Costa Rica"
|
||||||
|
55+NLSRC_OFFSET "Central African Republic"
|
||||||
|
56+NLSRC_OFFSET "Cuba"
|
||||||
|
57+NLSRC_OFFSET "Cape Verde"
|
||||||
|
59+NLSRC_OFFSET "Cyprus"
|
||||||
|
61+NLSRC_OFFSET "Denmark"
|
||||||
|
62+NLSRC_OFFSET "Djibouti"
|
||||||
|
63+NLSRC_OFFSET "Dominica"
|
||||||
|
65+NLSRC_OFFSET "Dominican Republic"
|
||||||
|
66+NLSRC_OFFSET "Ecuador"
|
||||||
|
67+NLSRC_OFFSET "Egypt"
|
||||||
|
68+NLSRC_OFFSET "Ireland"
|
||||||
|
69+NLSRC_OFFSET "Equatorial Guinea"
|
||||||
|
70+NLSRC_OFFSET "Estonia"
|
||||||
|
71+NLSRC_OFFSET "Eritrea"
|
||||||
|
72+NLSRC_OFFSET "El Salvador"
|
||||||
|
73+NLSRC_OFFSET "Ethiopia"
|
||||||
|
75+NLSRC_OFFSET "Czech Republic"
|
||||||
|
77+NLSRC_OFFSET "Finland"
|
||||||
|
78+NLSRC_OFFSET "Fiji Islands"
|
||||||
|
80+NLSRC_OFFSET "Micronesia"
|
||||||
|
81+NLSRC_OFFSET "Faroe Islands"
|
||||||
|
84+NLSRC_OFFSET "France"
|
||||||
|
86+NLSRC_OFFSET "Gambia, The"
|
||||||
|
87+NLSRC_OFFSET "Gabon"
|
||||||
|
88+NLSRC_OFFSET "Georgia"
|
||||||
|
89+NLSRC_OFFSET "Ghana"
|
||||||
|
90+NLSRC_OFFSET "Gibraltar"
|
||||||
|
91+NLSRC_OFFSET "Grenada"
|
||||||
|
93+NLSRC_OFFSET "Greenland"
|
||||||
|
94+NLSRC_OFFSET "Germany"
|
||||||
|
98+NLSRC_OFFSET "Greece"
|
||||||
|
99+NLSRC_OFFSET "Guatemala"
|
||||||
|
100+NLSRC_OFFSET "Guinea"
|
||||||
|
101+NLSRC_OFFSET "Guyana"
|
||||||
|
103+NLSRC_OFFSET "Haiti"
|
||||||
|
104+NLSRC_OFFSET "Hong Kong S.A.R."
|
||||||
|
106+NLSRC_OFFSET "Honduras"
|
||||||
|
108+NLSRC_OFFSET "Croatia"
|
||||||
|
109+NLSRC_OFFSET "Hungary"
|
||||||
|
110+NLSRC_OFFSET "Iceland"
|
||||||
|
111+NLSRC_OFFSET "Indonesia"
|
||||||
|
113+NLSRC_OFFSET "India"
|
||||||
|
114+NLSRC_OFFSET "British Indian Ocean Territory"
|
||||||
|
116+NLSRC_OFFSET "Iran"
|
||||||
|
117+NLSRC_OFFSET "Israel"
|
||||||
|
118+NLSRC_OFFSET "Italy"
|
||||||
|
119+NLSRC_OFFSET "Côte d'Ivoire"
|
||||||
|
121+NLSRC_OFFSET "Iraq"
|
||||||
|
122+NLSRC_OFFSET "Japan"
|
||||||
|
124+NLSRC_OFFSET "Jamaica"
|
||||||
|
125+NLSRC_OFFSET "Jan Mayen"
|
||||||
|
126+NLSRC_OFFSET "Jordan"
|
||||||
|
127+NLSRC_OFFSET "Johnston Atoll"
|
||||||
|
129+NLSRC_OFFSET "Kenya"
|
||||||
|
130+NLSRC_OFFSET "Kyrgyzstan"
|
||||||
|
131+NLSRC_OFFSET "North Korea"
|
||||||
|
133+NLSRC_OFFSET "Kiribati"
|
||||||
|
134+NLSRC_OFFSET "Korea"
|
||||||
|
136+NLSRC_OFFSET "Kuwait"
|
||||||
|
137+NLSRC_OFFSET "Kazakhstan"
|
||||||
|
138+NLSRC_OFFSET "Laos"
|
||||||
|
139+NLSRC_OFFSET "Lebanon"
|
||||||
|
140+NLSRC_OFFSET "Latvia"
|
||||||
|
141+NLSRC_OFFSET "Lithuania"
|
||||||
|
142+NLSRC_OFFSET "Liberia"
|
||||||
|
143+NLSRC_OFFSET "Slovakia"
|
||||||
|
145+NLSRC_OFFSET "Liechtenstein"
|
||||||
|
146+NLSRC_OFFSET "Lesotho"
|
||||||
|
147+NLSRC_OFFSET "Luxembourg"
|
||||||
|
148+NLSRC_OFFSET "Libya"
|
||||||
|
149+NLSRC_OFFSET "Madagascar"
|
||||||
|
151+NLSRC_OFFSET "Macao S.A.R."
|
||||||
|
152+NLSRC_OFFSET "Moldova"
|
||||||
|
154+NLSRC_OFFSET "Mongolia"
|
||||||
|
156+NLSRC_OFFSET "Malawi"
|
||||||
|
157+NLSRC_OFFSET "Mali"
|
||||||
|
158+NLSRC_OFFSET "Monaco"
|
||||||
|
159+NLSRC_OFFSET "Morocco"
|
||||||
|
160+NLSRC_OFFSET "Mauritius"
|
||||||
|
162+NLSRC_OFFSET "Mauritania"
|
||||||
|
163+NLSRC_OFFSET "Malta"
|
||||||
|
164+NLSRC_OFFSET "Oman"
|
||||||
|
165+NLSRC_OFFSET "Maldives"
|
||||||
|
166+NLSRC_OFFSET "Mexico"
|
||||||
|
167+NLSRC_OFFSET "Malaysia"
|
||||||
|
168+NLSRC_OFFSET "Mozambique"
|
||||||
|
173+NLSRC_OFFSET "Niger"
|
||||||
|
174+NLSRC_OFFSET "Vanuatu"
|
||||||
|
175+NLSRC_OFFSET "Nigeria"
|
||||||
|
176+NLSRC_OFFSET "Netherlands"
|
||||||
|
177+NLSRC_OFFSET "Norway"
|
||||||
|
178+NLSRC_OFFSET "Nepal"
|
||||||
|
180+NLSRC_OFFSET "Nauru"
|
||||||
|
181+NLSRC_OFFSET "Suriname"
|
||||||
|
182+NLSRC_OFFSET "Nicaragua"
|
||||||
|
183+NLSRC_OFFSET "New Zealand"
|
||||||
|
184+NLSRC_OFFSET "Palestinian Authority"
|
||||||
|
185+NLSRC_OFFSET "Paraguay"
|
||||||
|
187+NLSRC_OFFSET "Peru"
|
||||||
|
190+NLSRC_OFFSET "Pakistan"
|
||||||
|
191+NLSRC_OFFSET "Poland"
|
||||||
|
192+NLSRC_OFFSET "Panama"
|
||||||
|
193+NLSRC_OFFSET "Portugal"
|
||||||
|
194+NLSRC_OFFSET "Papua New Guinea"
|
||||||
|
195+NLSRC_OFFSET "Palau"
|
||||||
|
196+NLSRC_OFFSET "Guinea-Bissau"
|
||||||
|
197+NLSRC_OFFSET "Qatar"
|
||||||
|
198+NLSRC_OFFSET "Reunion"
|
||||||
|
199+NLSRC_OFFSET "Marshall Islands"
|
||||||
|
200+NLSRC_OFFSET "Romania"
|
||||||
|
201+NLSRC_OFFSET "Philippines"
|
||||||
|
202+NLSRC_OFFSET "Puerto Rico"
|
||||||
|
203+NLSRC_OFFSET "Russia"
|
||||||
|
204+NLSRC_OFFSET "Rwanda"
|
||||||
|
205+NLSRC_OFFSET "Saudi Arabia"
|
||||||
|
206+NLSRC_OFFSET "St. Pierre and Miquelon"
|
||||||
|
207+NLSRC_OFFSET "St. Kitts and Nevis"
|
||||||
|
208+NLSRC_OFFSET "Seychelles"
|
||||||
|
209+NLSRC_OFFSET "South Africa"
|
||||||
|
210+NLSRC_OFFSET "Senegal"
|
||||||
|
212+NLSRC_OFFSET "Slovenia"
|
||||||
|
213+NLSRC_OFFSET "Sierra Leone"
|
||||||
|
214+NLSRC_OFFSET "San Marino"
|
||||||
|
215+NLSRC_OFFSET "Singapore"
|
||||||
|
216+NLSRC_OFFSET "Somalia"
|
||||||
|
217+NLSRC_OFFSET "Spain"
|
||||||
|
218+NLSRC_OFFSET "St. Lucia"
|
||||||
|
219+NLSRC_OFFSET "Sudan"
|
||||||
|
220+NLSRC_OFFSET "Svalbard"
|
||||||
|
221+NLSRC_OFFSET "Sweden"
|
||||||
|
222+NLSRC_OFFSET "Syria"
|
||||||
|
223+NLSRC_OFFSET "Switzerland"
|
||||||
|
224+NLSRC_OFFSET "United Arab Emirates"
|
||||||
|
225+NLSRC_OFFSET "Trinidad and Tobago"
|
||||||
|
227+NLSRC_OFFSET "Thailand"
|
||||||
|
228+NLSRC_OFFSET "Tajikistan"
|
||||||
|
231+NLSRC_OFFSET "Tonga"
|
||||||
|
232+NLSRC_OFFSET "Togo"
|
||||||
|
233+NLSRC_OFFSET "São Tomé and Príncipe"
|
||||||
|
234+NLSRC_OFFSET "Tunisia"
|
||||||
|
235+NLSRC_OFFSET "Turkey"
|
||||||
|
236+NLSRC_OFFSET "Tuvalu"
|
||||||
|
237+NLSRC_OFFSET "Taiwan"
|
||||||
|
238+NLSRC_OFFSET "Turkmenistan"
|
||||||
|
239+NLSRC_OFFSET "Tanzania"
|
||||||
|
240+NLSRC_OFFSET "Uganda"
|
||||||
|
241+NLSRC_OFFSET "Ukraine"
|
||||||
|
242+NLSRC_OFFSET "United Kingdom"
|
||||||
|
244+NLSRC_OFFSET "United States"
|
||||||
|
245+NLSRC_OFFSET "Burkina Faso"
|
||||||
|
246+NLSRC_OFFSET "Uruguay"
|
||||||
|
247+NLSRC_OFFSET "Uzbekistan"
|
||||||
|
248+NLSRC_OFFSET "St. Vincent and the Grenadines"
|
||||||
|
249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
|
||||||
|
251+NLSRC_OFFSET "Vietnam"
|
||||||
|
252+NLSRC_OFFSET "Virgin Islands"
|
||||||
|
253+NLSRC_OFFSET "Vatican City"
|
||||||
|
254+NLSRC_OFFSET "Namibia"
|
||||||
|
257+NLSRC_OFFSET "Western Sahara (disputed)"
|
||||||
|
258+NLSRC_OFFSET "Wake Island"
|
||||||
|
259+NLSRC_OFFSET "Samoa"
|
||||||
|
260+NLSRC_OFFSET "Swaziland"
|
||||||
|
261+NLSRC_OFFSET "Yemen"
|
||||||
|
263+NLSRC_OFFSET "Zambia"
|
||||||
|
264+NLSRC_OFFSET "Zimbabwe"
|
||||||
|
269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
|
||||||
|
270+NLSRC_OFFSET "Montenegro"
|
||||||
|
271+NLSRC_OFFSET "Serbia"
|
||||||
|
273+NLSRC_OFFSET "Curaçao"
|
||||||
|
276+NLSRC_OFFSET "South Sudan"
|
||||||
|
300+NLSRC_OFFSET "Anguilla"
|
||||||
|
301+NLSRC_OFFSET "Antarctica"
|
||||||
|
302+NLSRC_OFFSET "Aruba"
|
||||||
|
303+NLSRC_OFFSET "Ascension Island"
|
||||||
|
304+NLSRC_OFFSET "Ashmore and Cartier Islands"
|
||||||
|
305+NLSRC_OFFSET "Baker Island"
|
||||||
|
306+NLSRC_OFFSET "Bouvet Island"
|
||||||
|
307+NLSRC_OFFSET "Cayman Islands"
|
||||||
|
308+NLSRC_OFFSET "Channel Islands"
|
||||||
|
309+NLSRC_OFFSET "Christmas Island"
|
||||||
|
310+NLSRC_OFFSET "Clipperton Island"
|
||||||
|
311+NLSRC_OFFSET "Cocos (Keeling) Islands"
|
||||||
|
312+NLSRC_OFFSET "Cook Islands"
|
||||||
|
313+NLSRC_OFFSET "Coral Sea Islands"
|
||||||
|
314+NLSRC_OFFSET "Diego Garcia"
|
||||||
|
315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
|
||||||
|
317+NLSRC_OFFSET "French Guiana"
|
||||||
|
318+NLSRC_OFFSET "French Polynesia"
|
||||||
|
319+NLSRC_OFFSET "French Southern and Antarctic Lands"
|
||||||
|
321+NLSRC_OFFSET "Guadeloupe"
|
||||||
|
322+NLSRC_OFFSET "Guam"
|
||||||
|
323+NLSRC_OFFSET "Guantanamo Bay"
|
||||||
|
324+NLSRC_OFFSET "Guernsey"
|
||||||
|
325+NLSRC_OFFSET "Heard Island and McDonald Islands"
|
||||||
|
326+NLSRC_OFFSET "Howland Island"
|
||||||
|
327+NLSRC_OFFSET "Jarvis Island"
|
||||||
|
328+NLSRC_OFFSET "Jersey"
|
||||||
|
329+NLSRC_OFFSET "Kingman Reef"
|
||||||
|
330+NLSRC_OFFSET "Martinique"
|
||||||
|
331+NLSRC_OFFSET "Mayotte"
|
||||||
|
332+NLSRC_OFFSET "Montserrat"
|
||||||
|
333+NLSRC_OFFSET "Netherlands Antilles (Former)"
|
||||||
|
334+NLSRC_OFFSET "New Caledonia"
|
||||||
|
335+NLSRC_OFFSET "Niue"
|
||||||
|
336+NLSRC_OFFSET "Norfolk Island"
|
||||||
|
337+NLSRC_OFFSET "Northern Mariana Islands"
|
||||||
|
338+NLSRC_OFFSET "Palmyra Atoll"
|
||||||
|
339+NLSRC_OFFSET "Pitcairn Islands"
|
||||||
|
340+NLSRC_OFFSET "Rota Island"
|
||||||
|
341+NLSRC_OFFSET "Saipan"
|
||||||
|
342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
|
||||||
|
343+NLSRC_OFFSET "St. Helena"
|
||||||
|
346+NLSRC_OFFSET "Tinian Island"
|
||||||
|
347+NLSRC_OFFSET "Tokelau"
|
||||||
|
348+NLSRC_OFFSET "Tristan da Cunha"
|
||||||
|
349+NLSRC_OFFSET "Turks and Caicos Islands"
|
||||||
|
351+NLSRC_OFFSET "Virgin Islands, British"
|
||||||
|
352+NLSRC_OFFSET "Wallis and Futuna"
|
||||||
|
15126+NLSRC_OFFSET "Man, Isle of"
|
||||||
|
19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
|
||||||
|
21242+NLSRC_OFFSET "Midway Islands"
|
||||||
|
30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
|
||||||
|
31706+NLSRC_OFFSET "Saint Martin (French part)"
|
||||||
END
|
END
|
||||||
|
|
|
@ -158,4 +158,271 @@ BEGIN
|
||||||
|
|
||||||
52936 "52936 (HZ-GB2312 Simplified Chinese)"
|
52936 "52936 (HZ-GB2312 Simplified Chinese)"
|
||||||
54936 "54936 (GB18030 Simplified Chinese)"
|
54936 "54936 (GB18030 Simplified Chinese)"
|
||||||
|
|
||||||
|
/* Locations */
|
||||||
|
2+NLSRC_OFFSET "Antigua and Barbuda"
|
||||||
|
3+NLSRC_OFFSET "Afghanistan"
|
||||||
|
4+NLSRC_OFFSET "Algeria"
|
||||||
|
5+NLSRC_OFFSET "Azerbaijan"
|
||||||
|
6+NLSRC_OFFSET "Albania"
|
||||||
|
7+NLSRC_OFFSET "Armenia"
|
||||||
|
8+NLSRC_OFFSET "Andorra"
|
||||||
|
9+NLSRC_OFFSET "Angola"
|
||||||
|
10+NLSRC_OFFSET "American Samoa"
|
||||||
|
11+NLSRC_OFFSET "Argentina"
|
||||||
|
12+NLSRC_OFFSET "Australia"
|
||||||
|
14+NLSRC_OFFSET "Austria"
|
||||||
|
17+NLSRC_OFFSET "Bahrain"
|
||||||
|
18+NLSRC_OFFSET "Barbados"
|
||||||
|
19+NLSRC_OFFSET "Botswana"
|
||||||
|
20+NLSRC_OFFSET "Bermuda"
|
||||||
|
21+NLSRC_OFFSET "Belgium"
|
||||||
|
22+NLSRC_OFFSET "Bahamas, The"
|
||||||
|
23+NLSRC_OFFSET "Bangladesh"
|
||||||
|
24+NLSRC_OFFSET "Belize"
|
||||||
|
25+NLSRC_OFFSET "Bosnia and Herzegovina"
|
||||||
|
26+NLSRC_OFFSET "Bolivia"
|
||||||
|
27+NLSRC_OFFSET "Myanmar"
|
||||||
|
28+NLSRC_OFFSET "Benin"
|
||||||
|
29+NLSRC_OFFSET "Belarus"
|
||||||
|
30+NLSRC_OFFSET "Solomon Islands"
|
||||||
|
32+NLSRC_OFFSET "Brazil"
|
||||||
|
34+NLSRC_OFFSET "Bhutan"
|
||||||
|
35+NLSRC_OFFSET "Bulgaria"
|
||||||
|
38+NLSRC_OFFSET "Burundi"
|
||||||
|
39+NLSRC_OFFSET "Canada"
|
||||||
|
40+NLSRC_OFFSET "Cambodia"
|
||||||
|
41+NLSRC_OFFSET "Chad"
|
||||||
|
42+NLSRC_OFFSET "Sri Lanka"
|
||||||
|
43+NLSRC_OFFSET "Congo"
|
||||||
|
44+NLSRC_OFFSET "Congo (DRC)"
|
||||||
|
45+NLSRC_OFFSET "China"
|
||||||
|
46+NLSRC_OFFSET "Chile"
|
||||||
|
49+NLSRC_OFFSET "Cameroon"
|
||||||
|
50+NLSRC_OFFSET "Comoros"
|
||||||
|
51+NLSRC_OFFSET "Colombia"
|
||||||
|
54+NLSRC_OFFSET "Costa Rica"
|
||||||
|
55+NLSRC_OFFSET "Central African Republic"
|
||||||
|
56+NLSRC_OFFSET "Cuba"
|
||||||
|
57+NLSRC_OFFSET "Cape Verde"
|
||||||
|
59+NLSRC_OFFSET "Cyprus"
|
||||||
|
61+NLSRC_OFFSET "Denmark"
|
||||||
|
62+NLSRC_OFFSET "Djibouti"
|
||||||
|
63+NLSRC_OFFSET "Dominica"
|
||||||
|
65+NLSRC_OFFSET "Dominican Republic"
|
||||||
|
66+NLSRC_OFFSET "Ecuador"
|
||||||
|
67+NLSRC_OFFSET "Egypt"
|
||||||
|
68+NLSRC_OFFSET "Ireland"
|
||||||
|
69+NLSRC_OFFSET "Equatorial Guinea"
|
||||||
|
70+NLSRC_OFFSET "Estonia"
|
||||||
|
71+NLSRC_OFFSET "Eritrea"
|
||||||
|
72+NLSRC_OFFSET "El Salvador"
|
||||||
|
73+NLSRC_OFFSET "Ethiopia"
|
||||||
|
75+NLSRC_OFFSET "Czech Republic"
|
||||||
|
77+NLSRC_OFFSET "Finland"
|
||||||
|
78+NLSRC_OFFSET "Fiji Islands"
|
||||||
|
80+NLSRC_OFFSET "Micronesia"
|
||||||
|
81+NLSRC_OFFSET "Faroe Islands"
|
||||||
|
84+NLSRC_OFFSET "France"
|
||||||
|
86+NLSRC_OFFSET "Gambia, The"
|
||||||
|
87+NLSRC_OFFSET "Gabon"
|
||||||
|
88+NLSRC_OFFSET "Georgia"
|
||||||
|
89+NLSRC_OFFSET "Ghana"
|
||||||
|
90+NLSRC_OFFSET "Gibraltar"
|
||||||
|
91+NLSRC_OFFSET "Grenada"
|
||||||
|
93+NLSRC_OFFSET "Greenland"
|
||||||
|
94+NLSRC_OFFSET "Germany"
|
||||||
|
98+NLSRC_OFFSET "Greece"
|
||||||
|
99+NLSRC_OFFSET "Guatemala"
|
||||||
|
100+NLSRC_OFFSET "Guinea"
|
||||||
|
101+NLSRC_OFFSET "Guyana"
|
||||||
|
103+NLSRC_OFFSET "Haiti"
|
||||||
|
104+NLSRC_OFFSET "Hong Kong S.A.R."
|
||||||
|
106+NLSRC_OFFSET "Honduras"
|
||||||
|
108+NLSRC_OFFSET "Croatia"
|
||||||
|
109+NLSRC_OFFSET "Hungary"
|
||||||
|
110+NLSRC_OFFSET "Iceland"
|
||||||
|
111+NLSRC_OFFSET "Indonesia"
|
||||||
|
113+NLSRC_OFFSET "India"
|
||||||
|
114+NLSRC_OFFSET "British Indian Ocean Territory"
|
||||||
|
116+NLSRC_OFFSET "Iran"
|
||||||
|
117+NLSRC_OFFSET "Israel"
|
||||||
|
118+NLSRC_OFFSET "Italy"
|
||||||
|
119+NLSRC_OFFSET "Côte d'Ivoire"
|
||||||
|
121+NLSRC_OFFSET "Iraq"
|
||||||
|
122+NLSRC_OFFSET "Japan"
|
||||||
|
124+NLSRC_OFFSET "Jamaica"
|
||||||
|
125+NLSRC_OFFSET "Jan Mayen"
|
||||||
|
126+NLSRC_OFFSET "Jordan"
|
||||||
|
127+NLSRC_OFFSET "Johnston Atoll"
|
||||||
|
129+NLSRC_OFFSET "Kenya"
|
||||||
|
130+NLSRC_OFFSET "Kyrgyzstan"
|
||||||
|
131+NLSRC_OFFSET "North Korea"
|
||||||
|
133+NLSRC_OFFSET "Kiribati"
|
||||||
|
134+NLSRC_OFFSET "Korea"
|
||||||
|
136+NLSRC_OFFSET "Kuwait"
|
||||||
|
137+NLSRC_OFFSET "Kazakhstan"
|
||||||
|
138+NLSRC_OFFSET "Laos"
|
||||||
|
139+NLSRC_OFFSET "Lebanon"
|
||||||
|
140+NLSRC_OFFSET "Latvia"
|
||||||
|
141+NLSRC_OFFSET "Lithuania"
|
||||||
|
142+NLSRC_OFFSET "Liberia"
|
||||||
|
143+NLSRC_OFFSET "Slovakia"
|
||||||
|
145+NLSRC_OFFSET "Liechtenstein"
|
||||||
|
146+NLSRC_OFFSET "Lesotho"
|
||||||
|
147+NLSRC_OFFSET "Luxembourg"
|
||||||
|
148+NLSRC_OFFSET "Libya"
|
||||||
|
149+NLSRC_OFFSET "Madagascar"
|
||||||
|
151+NLSRC_OFFSET "Macao S.A.R."
|
||||||
|
152+NLSRC_OFFSET "Moldova"
|
||||||
|
154+NLSRC_OFFSET "Mongolia"
|
||||||
|
156+NLSRC_OFFSET "Malawi"
|
||||||
|
157+NLSRC_OFFSET "Mali"
|
||||||
|
158+NLSRC_OFFSET "Monaco"
|
||||||
|
159+NLSRC_OFFSET "Morocco"
|
||||||
|
160+NLSRC_OFFSET "Mauritius"
|
||||||
|
162+NLSRC_OFFSET "Mauritania"
|
||||||
|
163+NLSRC_OFFSET "Malta"
|
||||||
|
164+NLSRC_OFFSET "Oman"
|
||||||
|
165+NLSRC_OFFSET "Maldives"
|
||||||
|
166+NLSRC_OFFSET "Mexico"
|
||||||
|
167+NLSRC_OFFSET "Malaysia"
|
||||||
|
168+NLSRC_OFFSET "Mozambique"
|
||||||
|
173+NLSRC_OFFSET "Niger"
|
||||||
|
174+NLSRC_OFFSET "Vanuatu"
|
||||||
|
175+NLSRC_OFFSET "Nigeria"
|
||||||
|
176+NLSRC_OFFSET "Netherlands"
|
||||||
|
177+NLSRC_OFFSET "Norway"
|
||||||
|
178+NLSRC_OFFSET "Nepal"
|
||||||
|
180+NLSRC_OFFSET "Nauru"
|
||||||
|
181+NLSRC_OFFSET "Suriname"
|
||||||
|
182+NLSRC_OFFSET "Nicaragua"
|
||||||
|
183+NLSRC_OFFSET "New Zealand"
|
||||||
|
184+NLSRC_OFFSET "Palestinian Authority"
|
||||||
|
185+NLSRC_OFFSET "Paraguay"
|
||||||
|
187+NLSRC_OFFSET "Peru"
|
||||||
|
190+NLSRC_OFFSET "Pakistan"
|
||||||
|
191+NLSRC_OFFSET "Poland"
|
||||||
|
192+NLSRC_OFFSET "Panama"
|
||||||
|
193+NLSRC_OFFSET "Portugal"
|
||||||
|
194+NLSRC_OFFSET "Papua New Guinea"
|
||||||
|
195+NLSRC_OFFSET "Palau"
|
||||||
|
196+NLSRC_OFFSET "Guinea-Bissau"
|
||||||
|
197+NLSRC_OFFSET "Qatar"
|
||||||
|
198+NLSRC_OFFSET "Reunion"
|
||||||
|
199+NLSRC_OFFSET "Marshall Islands"
|
||||||
|
200+NLSRC_OFFSET "Romania"
|
||||||
|
201+NLSRC_OFFSET "Philippines"
|
||||||
|
202+NLSRC_OFFSET "Puerto Rico"
|
||||||
|
203+NLSRC_OFFSET "Russia"
|
||||||
|
204+NLSRC_OFFSET "Rwanda"
|
||||||
|
205+NLSRC_OFFSET "Saudi Arabia"
|
||||||
|
206+NLSRC_OFFSET "St. Pierre and Miquelon"
|
||||||
|
207+NLSRC_OFFSET "St. Kitts and Nevis"
|
||||||
|
208+NLSRC_OFFSET "Seychelles"
|
||||||
|
209+NLSRC_OFFSET "South Africa"
|
||||||
|
210+NLSRC_OFFSET "Senegal"
|
||||||
|
212+NLSRC_OFFSET "Slovenia"
|
||||||
|
213+NLSRC_OFFSET "Sierra Leone"
|
||||||
|
214+NLSRC_OFFSET "San Marino"
|
||||||
|
215+NLSRC_OFFSET "Singapore"
|
||||||
|
216+NLSRC_OFFSET "Somalia"
|
||||||
|
217+NLSRC_OFFSET "Spain"
|
||||||
|
218+NLSRC_OFFSET "St. Lucia"
|
||||||
|
219+NLSRC_OFFSET "Sudan"
|
||||||
|
220+NLSRC_OFFSET "Svalbard"
|
||||||
|
221+NLSRC_OFFSET "Sweden"
|
||||||
|
222+NLSRC_OFFSET "Syria"
|
||||||
|
223+NLSRC_OFFSET "Switzerland"
|
||||||
|
224+NLSRC_OFFSET "United Arab Emirates"
|
||||||
|
225+NLSRC_OFFSET "Trinidad and Tobago"
|
||||||
|
227+NLSRC_OFFSET "Thailand"
|
||||||
|
228+NLSRC_OFFSET "Tajikistan"
|
||||||
|
231+NLSRC_OFFSET "Tonga"
|
||||||
|
232+NLSRC_OFFSET "Togo"
|
||||||
|
233+NLSRC_OFFSET "São Tomé and Príncipe"
|
||||||
|
234+NLSRC_OFFSET "Tunisia"
|
||||||
|
235+NLSRC_OFFSET "Turkey"
|
||||||
|
236+NLSRC_OFFSET "Tuvalu"
|
||||||
|
237+NLSRC_OFFSET "Taiwan"
|
||||||
|
238+NLSRC_OFFSET "Turkmenistan"
|
||||||
|
239+NLSRC_OFFSET "Tanzania"
|
||||||
|
240+NLSRC_OFFSET "Uganda"
|
||||||
|
241+NLSRC_OFFSET "Ukraine"
|
||||||
|
242+NLSRC_OFFSET "United Kingdom"
|
||||||
|
244+NLSRC_OFFSET "United States"
|
||||||
|
245+NLSRC_OFFSET "Burkina Faso"
|
||||||
|
246+NLSRC_OFFSET "Uruguay"
|
||||||
|
247+NLSRC_OFFSET "Uzbekistan"
|
||||||
|
248+NLSRC_OFFSET "St. Vincent and the Grenadines"
|
||||||
|
249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
|
||||||
|
251+NLSRC_OFFSET "Vietnam"
|
||||||
|
252+NLSRC_OFFSET "Virgin Islands"
|
||||||
|
253+NLSRC_OFFSET "Vatican City"
|
||||||
|
254+NLSRC_OFFSET "Namibia"
|
||||||
|
257+NLSRC_OFFSET "Western Sahara (disputed)"
|
||||||
|
258+NLSRC_OFFSET "Wake Island"
|
||||||
|
259+NLSRC_OFFSET "Samoa"
|
||||||
|
260+NLSRC_OFFSET "Swaziland"
|
||||||
|
261+NLSRC_OFFSET "Yemen"
|
||||||
|
263+NLSRC_OFFSET "Zambia"
|
||||||
|
264+NLSRC_OFFSET "Zimbabwe"
|
||||||
|
269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
|
||||||
|
270+NLSRC_OFFSET "Montenegro"
|
||||||
|
271+NLSRC_OFFSET "Serbia"
|
||||||
|
273+NLSRC_OFFSET "Curaçao"
|
||||||
|
276+NLSRC_OFFSET "South Sudan"
|
||||||
|
300+NLSRC_OFFSET "Anguilla"
|
||||||
|
301+NLSRC_OFFSET "Antarctica"
|
||||||
|
302+NLSRC_OFFSET "Aruba"
|
||||||
|
303+NLSRC_OFFSET "Ascension Island"
|
||||||
|
304+NLSRC_OFFSET "Ashmore and Cartier Islands"
|
||||||
|
305+NLSRC_OFFSET "Baker Island"
|
||||||
|
306+NLSRC_OFFSET "Bouvet Island"
|
||||||
|
307+NLSRC_OFFSET "Cayman Islands"
|
||||||
|
308+NLSRC_OFFSET "Channel Islands"
|
||||||
|
309+NLSRC_OFFSET "Christmas Island"
|
||||||
|
310+NLSRC_OFFSET "Clipperton Island"
|
||||||
|
311+NLSRC_OFFSET "Cocos (Keeling) Islands"
|
||||||
|
312+NLSRC_OFFSET "Cook Islands"
|
||||||
|
313+NLSRC_OFFSET "Coral Sea Islands"
|
||||||
|
314+NLSRC_OFFSET "Diego Garcia"
|
||||||
|
315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
|
||||||
|
317+NLSRC_OFFSET "French Guiana"
|
||||||
|
318+NLSRC_OFFSET "French Polynesia"
|
||||||
|
319+NLSRC_OFFSET "French Southern and Antarctic Lands"
|
||||||
|
321+NLSRC_OFFSET "Guadeloupe"
|
||||||
|
322+NLSRC_OFFSET "Guam"
|
||||||
|
323+NLSRC_OFFSET "Guantanamo Bay"
|
||||||
|
324+NLSRC_OFFSET "Guernsey"
|
||||||
|
325+NLSRC_OFFSET "Heard Island and McDonald Islands"
|
||||||
|
326+NLSRC_OFFSET "Howland Island"
|
||||||
|
327+NLSRC_OFFSET "Jarvis Island"
|
||||||
|
328+NLSRC_OFFSET "Jersey"
|
||||||
|
329+NLSRC_OFFSET "Kingman Reef"
|
||||||
|
330+NLSRC_OFFSET "Martinique"
|
||||||
|
331+NLSRC_OFFSET "Mayotte"
|
||||||
|
332+NLSRC_OFFSET "Montserrat"
|
||||||
|
333+NLSRC_OFFSET "Netherlands Antilles (Former)"
|
||||||
|
334+NLSRC_OFFSET "New Caledonia"
|
||||||
|
335+NLSRC_OFFSET "Niue"
|
||||||
|
336+NLSRC_OFFSET "Norfolk Island"
|
||||||
|
337+NLSRC_OFFSET "Northern Mariana Islands"
|
||||||
|
338+NLSRC_OFFSET "Palmyra Atoll"
|
||||||
|
339+NLSRC_OFFSET "Pitcairn Islands"
|
||||||
|
340+NLSRC_OFFSET "Rota Island"
|
||||||
|
341+NLSRC_OFFSET "Saipan"
|
||||||
|
342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
|
||||||
|
343+NLSRC_OFFSET "St. Helena"
|
||||||
|
346+NLSRC_OFFSET "Tinian Island"
|
||||||
|
347+NLSRC_OFFSET "Tokelau"
|
||||||
|
348+NLSRC_OFFSET "Tristan da Cunha"
|
||||||
|
349+NLSRC_OFFSET "Turks and Caicos Islands"
|
||||||
|
351+NLSRC_OFFSET "Virgin Islands, British"
|
||||||
|
352+NLSRC_OFFSET "Wallis and Futuna"
|
||||||
|
15126+NLSRC_OFFSET "Man, Isle of"
|
||||||
|
19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
|
||||||
|
21242+NLSRC_OFFSET "Midway Islands"
|
||||||
|
30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
|
||||||
|
31706+NLSRC_OFFSET "Saint Martin (French part)"
|
||||||
END
|
END
|
||||||
|
|
|
@ -160,4 +160,271 @@ BEGIN
|
||||||
|
|
||||||
52936 "52936 (HZ-GB2312 chinezesc simplificat)"
|
52936 "52936 (HZ-GB2312 chinezesc simplificat)"
|
||||||
54936 "54936 (GB18030 chinezesc simplificat)"
|
54936 "54936 (GB18030 chinezesc simplificat)"
|
||||||
|
|
||||||
|
/* Locations */
|
||||||
|
2+NLSRC_OFFSET "Antigua and Barbuda"
|
||||||
|
3+NLSRC_OFFSET "Afghanistan"
|
||||||
|
4+NLSRC_OFFSET "Algeria"
|
||||||
|
5+NLSRC_OFFSET "Azerbaijan"
|
||||||
|
6+NLSRC_OFFSET "Albania"
|
||||||
|
7+NLSRC_OFFSET "Armenia"
|
||||||
|
8+NLSRC_OFFSET "Andorra"
|
||||||
|
9+NLSRC_OFFSET "Angola"
|
||||||
|
10+NLSRC_OFFSET "American Samoa"
|
||||||
|
11+NLSRC_OFFSET "Argentina"
|
||||||
|
12+NLSRC_OFFSET "Australia"
|
||||||
|
14+NLSRC_OFFSET "Austria"
|
||||||
|
17+NLSRC_OFFSET "Bahrain"
|
||||||
|
18+NLSRC_OFFSET "Barbados"
|
||||||
|
19+NLSRC_OFFSET "Botswana"
|
||||||
|
20+NLSRC_OFFSET "Bermuda"
|
||||||
|
21+NLSRC_OFFSET "Belgium"
|
||||||
|
22+NLSRC_OFFSET "Bahamas, The"
|
||||||
|
23+NLSRC_OFFSET "Bangladesh"
|
||||||
|
24+NLSRC_OFFSET "Belize"
|
||||||
|
25+NLSRC_OFFSET "Bosnia and Herzegovina"
|
||||||
|
26+NLSRC_OFFSET "Bolivia"
|
||||||
|
27+NLSRC_OFFSET "Myanmar"
|
||||||
|
28+NLSRC_OFFSET "Benin"
|
||||||
|
29+NLSRC_OFFSET "Belarus"
|
||||||
|
30+NLSRC_OFFSET "Solomon Islands"
|
||||||
|
32+NLSRC_OFFSET "Brazil"
|
||||||
|
34+NLSRC_OFFSET "Bhutan"
|
||||||
|
35+NLSRC_OFFSET "Bulgaria"
|
||||||
|
38+NLSRC_OFFSET "Burundi"
|
||||||
|
39+NLSRC_OFFSET "Canada"
|
||||||
|
40+NLSRC_OFFSET "Cambodia"
|
||||||
|
41+NLSRC_OFFSET "Chad"
|
||||||
|
42+NLSRC_OFFSET "Sri Lanka"
|
||||||
|
43+NLSRC_OFFSET "Congo"
|
||||||
|
44+NLSRC_OFFSET "Congo (DRC)"
|
||||||
|
45+NLSRC_OFFSET "China"
|
||||||
|
46+NLSRC_OFFSET "Chile"
|
||||||
|
49+NLSRC_OFFSET "Cameroon"
|
||||||
|
50+NLSRC_OFFSET "Comoros"
|
||||||
|
51+NLSRC_OFFSET "Colombia"
|
||||||
|
54+NLSRC_OFFSET "Costa Rica"
|
||||||
|
55+NLSRC_OFFSET "Central African Republic"
|
||||||
|
56+NLSRC_OFFSET "Cuba"
|
||||||
|
57+NLSRC_OFFSET "Cape Verde"
|
||||||
|
59+NLSRC_OFFSET "Cyprus"
|
||||||
|
61+NLSRC_OFFSET "Denmark"
|
||||||
|
62+NLSRC_OFFSET "Djibouti"
|
||||||
|
63+NLSRC_OFFSET "Dominica"
|
||||||
|
65+NLSRC_OFFSET "Dominican Republic"
|
||||||
|
66+NLSRC_OFFSET "Ecuador"
|
||||||
|
67+NLSRC_OFFSET "Egypt"
|
||||||
|
68+NLSRC_OFFSET "Ireland"
|
||||||
|
69+NLSRC_OFFSET "Equatorial Guinea"
|
||||||
|
70+NLSRC_OFFSET "Estonia"
|
||||||
|
71+NLSRC_OFFSET "Eritrea"
|
||||||
|
72+NLSRC_OFFSET "El Salvador"
|
||||||
|
73+NLSRC_OFFSET "Ethiopia"
|
||||||
|
75+NLSRC_OFFSET "Czech Republic"
|
||||||
|
77+NLSRC_OFFSET "Finland"
|
||||||
|
78+NLSRC_OFFSET "Fiji Islands"
|
||||||
|
80+NLSRC_OFFSET "Micronesia"
|
||||||
|
81+NLSRC_OFFSET "Faroe Islands"
|
||||||
|
84+NLSRC_OFFSET "France"
|
||||||
|
86+NLSRC_OFFSET "Gambia, The"
|
||||||
|
87+NLSRC_OFFSET "Gabon"
|
||||||
|
88+NLSRC_OFFSET "Georgia"
|
||||||
|
89+NLSRC_OFFSET "Ghana"
|
||||||
|
90+NLSRC_OFFSET "Gibraltar"
|
||||||
|
91+NLSRC_OFFSET "Grenada"
|
||||||
|
93+NLSRC_OFFSET "Greenland"
|
||||||
|
94+NLSRC_OFFSET "Germany"
|
||||||
|
98+NLSRC_OFFSET "Greece"
|
||||||
|
99+NLSRC_OFFSET "Guatemala"
|
||||||
|
100+NLSRC_OFFSET "Guinea"
|
||||||
|
101+NLSRC_OFFSET "Guyana"
|
||||||
|
103+NLSRC_OFFSET "Haiti"
|
||||||
|
104+NLSRC_OFFSET "Hong Kong S.A.R."
|
||||||
|
106+NLSRC_OFFSET "Honduras"
|
||||||
|
108+NLSRC_OFFSET "Croatia"
|
||||||
|
109+NLSRC_OFFSET "Hungary"
|
||||||
|
110+NLSRC_OFFSET "Iceland"
|
||||||
|
111+NLSRC_OFFSET "Indonesia"
|
||||||
|
113+NLSRC_OFFSET "India"
|
||||||
|
114+NLSRC_OFFSET "British Indian Ocean Territory"
|
||||||
|
116+NLSRC_OFFSET "Iran"
|
||||||
|
117+NLSRC_OFFSET "Israel"
|
||||||
|
118+NLSRC_OFFSET "Italy"
|
||||||
|
119+NLSRC_OFFSET "Côte d'Ivoire"
|
||||||
|
121+NLSRC_OFFSET "Iraq"
|
||||||
|
122+NLSRC_OFFSET "Japan"
|
||||||
|
124+NLSRC_OFFSET "Jamaica"
|
||||||
|
125+NLSRC_OFFSET "Jan Mayen"
|
||||||
|
126+NLSRC_OFFSET "Jordan"
|
||||||
|
127+NLSRC_OFFSET "Johnston Atoll"
|
||||||
|
129+NLSRC_OFFSET "Kenya"
|
||||||
|
130+NLSRC_OFFSET "Kyrgyzstan"
|
||||||
|
131+NLSRC_OFFSET "North Korea"
|
||||||
|
133+NLSRC_OFFSET "Kiribati"
|
||||||
|
134+NLSRC_OFFSET "Korea"
|
||||||
|
136+NLSRC_OFFSET "Kuwait"
|
||||||
|
137+NLSRC_OFFSET "Kazakhstan"
|
||||||
|
138+NLSRC_OFFSET "Laos"
|
||||||
|
139+NLSRC_OFFSET "Lebanon"
|
||||||
|
140+NLSRC_OFFSET "Latvia"
|
||||||
|
141+NLSRC_OFFSET "Lithuania"
|
||||||
|
142+NLSRC_OFFSET "Liberia"
|
||||||
|
143+NLSRC_OFFSET "Slovakia"
|
||||||
|
145+NLSRC_OFFSET "Liechtenstein"
|
||||||
|
146+NLSRC_OFFSET "Lesotho"
|
||||||
|
147+NLSRC_OFFSET "Luxembourg"
|
||||||
|
148+NLSRC_OFFSET "Libya"
|
||||||
|
149+NLSRC_OFFSET "Madagascar"
|
||||||
|
151+NLSRC_OFFSET "Macao S.A.R."
|
||||||
|
152+NLSRC_OFFSET "Moldova"
|
||||||
|
154+NLSRC_OFFSET "Mongolia"
|
||||||
|
156+NLSRC_OFFSET "Malawi"
|
||||||
|
157+NLSRC_OFFSET "Mali"
|
||||||
|
158+NLSRC_OFFSET "Monaco"
|
||||||
|
159+NLSRC_OFFSET "Morocco"
|
||||||
|
160+NLSRC_OFFSET "Mauritius"
|
||||||
|
162+NLSRC_OFFSET "Mauritania"
|
||||||
|
163+NLSRC_OFFSET "Malta"
|
||||||
|
164+NLSRC_OFFSET "Oman"
|
||||||
|
165+NLSRC_OFFSET "Maldives"
|
||||||
|
166+NLSRC_OFFSET "Mexico"
|
||||||
|
167+NLSRC_OFFSET "Malaysia"
|
||||||
|
168+NLSRC_OFFSET "Mozambique"
|
||||||
|
173+NLSRC_OFFSET "Niger"
|
||||||
|
174+NLSRC_OFFSET "Vanuatu"
|
||||||
|
175+NLSRC_OFFSET "Nigeria"
|
||||||
|
176+NLSRC_OFFSET "Netherlands"
|
||||||
|
177+NLSRC_OFFSET "Norway"
|
||||||
|
178+NLSRC_OFFSET "Nepal"
|
||||||
|
180+NLSRC_OFFSET "Nauru"
|
||||||
|
181+NLSRC_OFFSET "Suriname"
|
||||||
|
182+NLSRC_OFFSET "Nicaragua"
|
||||||
|
183+NLSRC_OFFSET "New Zealand"
|
||||||
|
184+NLSRC_OFFSET "Palestinian Authority"
|
||||||
|
185+NLSRC_OFFSET "Paraguay"
|
||||||
|
187+NLSRC_OFFSET "Peru"
|
||||||
|
190+NLSRC_OFFSET "Pakistan"
|
||||||
|
191+NLSRC_OFFSET "Poland"
|
||||||
|
192+NLSRC_OFFSET "Panama"
|
||||||
|
193+NLSRC_OFFSET "Portugal"
|
||||||
|
194+NLSRC_OFFSET "Papua New Guinea"
|
||||||
|
195+NLSRC_OFFSET "Palau"
|
||||||
|
196+NLSRC_OFFSET "Guinea-Bissau"
|
||||||
|
197+NLSRC_OFFSET "Qatar"
|
||||||
|
198+NLSRC_OFFSET "Reunion"
|
||||||
|
199+NLSRC_OFFSET "Marshall Islands"
|
||||||
|
200+NLSRC_OFFSET "Romania"
|
||||||
|
201+NLSRC_OFFSET "Philippines"
|
||||||
|
202+NLSRC_OFFSET "Puerto Rico"
|
||||||
|
203+NLSRC_OFFSET "Russia"
|
||||||
|
204+NLSRC_OFFSET "Rwanda"
|
||||||
|
205+NLSRC_OFFSET "Saudi Arabia"
|
||||||
|
206+NLSRC_OFFSET "St. Pierre and Miquelon"
|
||||||
|
207+NLSRC_OFFSET "St. Kitts and Nevis"
|
||||||
|
208+NLSRC_OFFSET "Seychelles"
|
||||||
|
209+NLSRC_OFFSET "South Africa"
|
||||||
|
210+NLSRC_OFFSET "Senegal"
|
||||||
|
212+NLSRC_OFFSET "Slovenia"
|
||||||
|
213+NLSRC_OFFSET "Sierra Leone"
|
||||||
|
214+NLSRC_OFFSET "San Marino"
|
||||||
|
215+NLSRC_OFFSET "Singapore"
|
||||||
|
216+NLSRC_OFFSET "Somalia"
|
||||||
|
217+NLSRC_OFFSET "Spain"
|
||||||
|
218+NLSRC_OFFSET "St. Lucia"
|
||||||
|
219+NLSRC_OFFSET "Sudan"
|
||||||
|
220+NLSRC_OFFSET "Svalbard"
|
||||||
|
221+NLSRC_OFFSET "Sweden"
|
||||||
|
222+NLSRC_OFFSET "Syria"
|
||||||
|
223+NLSRC_OFFSET "Switzerland"
|
||||||
|
224+NLSRC_OFFSET "United Arab Emirates"
|
||||||
|
225+NLSRC_OFFSET "Trinidad and Tobago"
|
||||||
|
227+NLSRC_OFFSET "Thailand"
|
||||||
|
228+NLSRC_OFFSET "Tajikistan"
|
||||||
|
231+NLSRC_OFFSET "Tonga"
|
||||||
|
232+NLSRC_OFFSET "Togo"
|
||||||
|
233+NLSRC_OFFSET "São Tomé and Príncipe"
|
||||||
|
234+NLSRC_OFFSET "Tunisia"
|
||||||
|
235+NLSRC_OFFSET "Turkey"
|
||||||
|
236+NLSRC_OFFSET "Tuvalu"
|
||||||
|
237+NLSRC_OFFSET "Taiwan"
|
||||||
|
238+NLSRC_OFFSET "Turkmenistan"
|
||||||
|
239+NLSRC_OFFSET "Tanzania"
|
||||||
|
240+NLSRC_OFFSET "Uganda"
|
||||||
|
241+NLSRC_OFFSET "Ukraine"
|
||||||
|
242+NLSRC_OFFSET "United Kingdom"
|
||||||
|
244+NLSRC_OFFSET "United States"
|
||||||
|
245+NLSRC_OFFSET "Burkina Faso"
|
||||||
|
246+NLSRC_OFFSET "Uruguay"
|
||||||
|
247+NLSRC_OFFSET "Uzbekistan"
|
||||||
|
248+NLSRC_OFFSET "St. Vincent and the Grenadines"
|
||||||
|
249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
|
||||||
|
251+NLSRC_OFFSET "Vietnam"
|
||||||
|
252+NLSRC_OFFSET "Virgin Islands"
|
||||||
|
253+NLSRC_OFFSET "Vatican City"
|
||||||
|
254+NLSRC_OFFSET "Namibia"
|
||||||
|
257+NLSRC_OFFSET "Western Sahara (disputed)"
|
||||||
|
258+NLSRC_OFFSET "Wake Island"
|
||||||
|
259+NLSRC_OFFSET "Samoa"
|
||||||
|
260+NLSRC_OFFSET "Swaziland"
|
||||||
|
261+NLSRC_OFFSET "Yemen"
|
||||||
|
263+NLSRC_OFFSET "Zambia"
|
||||||
|
264+NLSRC_OFFSET "Zimbabwe"
|
||||||
|
269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
|
||||||
|
270+NLSRC_OFFSET "Montenegro"
|
||||||
|
271+NLSRC_OFFSET "Serbia"
|
||||||
|
273+NLSRC_OFFSET "Curaçao"
|
||||||
|
276+NLSRC_OFFSET "South Sudan"
|
||||||
|
300+NLSRC_OFFSET "Anguilla"
|
||||||
|
301+NLSRC_OFFSET "Antarctica"
|
||||||
|
302+NLSRC_OFFSET "Aruba"
|
||||||
|
303+NLSRC_OFFSET "Ascension Island"
|
||||||
|
304+NLSRC_OFFSET "Ashmore and Cartier Islands"
|
||||||
|
305+NLSRC_OFFSET "Baker Island"
|
||||||
|
306+NLSRC_OFFSET "Bouvet Island"
|
||||||
|
307+NLSRC_OFFSET "Cayman Islands"
|
||||||
|
308+NLSRC_OFFSET "Channel Islands"
|
||||||
|
309+NLSRC_OFFSET "Christmas Island"
|
||||||
|
310+NLSRC_OFFSET "Clipperton Island"
|
||||||
|
311+NLSRC_OFFSET "Cocos (Keeling) Islands"
|
||||||
|
312+NLSRC_OFFSET "Cook Islands"
|
||||||
|
313+NLSRC_OFFSET "Coral Sea Islands"
|
||||||
|
314+NLSRC_OFFSET "Diego Garcia"
|
||||||
|
315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
|
||||||
|
317+NLSRC_OFFSET "French Guiana"
|
||||||
|
318+NLSRC_OFFSET "French Polynesia"
|
||||||
|
319+NLSRC_OFFSET "French Southern and Antarctic Lands"
|
||||||
|
321+NLSRC_OFFSET "Guadeloupe"
|
||||||
|
322+NLSRC_OFFSET "Guam"
|
||||||
|
323+NLSRC_OFFSET "Guantanamo Bay"
|
||||||
|
324+NLSRC_OFFSET "Guernsey"
|
||||||
|
325+NLSRC_OFFSET "Heard Island and McDonald Islands"
|
||||||
|
326+NLSRC_OFFSET "Howland Island"
|
||||||
|
327+NLSRC_OFFSET "Jarvis Island"
|
||||||
|
328+NLSRC_OFFSET "Jersey"
|
||||||
|
329+NLSRC_OFFSET "Kingman Reef"
|
||||||
|
330+NLSRC_OFFSET "Martinique"
|
||||||
|
331+NLSRC_OFFSET "Mayotte"
|
||||||
|
332+NLSRC_OFFSET "Montserrat"
|
||||||
|
333+NLSRC_OFFSET "Netherlands Antilles (Former)"
|
||||||
|
334+NLSRC_OFFSET "New Caledonia"
|
||||||
|
335+NLSRC_OFFSET "Niue"
|
||||||
|
336+NLSRC_OFFSET "Norfolk Island"
|
||||||
|
337+NLSRC_OFFSET "Northern Mariana Islands"
|
||||||
|
338+NLSRC_OFFSET "Palmyra Atoll"
|
||||||
|
339+NLSRC_OFFSET "Pitcairn Islands"
|
||||||
|
340+NLSRC_OFFSET "Rota Island"
|
||||||
|
341+NLSRC_OFFSET "Saipan"
|
||||||
|
342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
|
||||||
|
343+NLSRC_OFFSET "St. Helena"
|
||||||
|
346+NLSRC_OFFSET "Tinian Island"
|
||||||
|
347+NLSRC_OFFSET "Tokelau"
|
||||||
|
348+NLSRC_OFFSET "Tristan da Cunha"
|
||||||
|
349+NLSRC_OFFSET "Turks and Caicos Islands"
|
||||||
|
351+NLSRC_OFFSET "Virgin Islands, British"
|
||||||
|
352+NLSRC_OFFSET "Wallis and Futuna"
|
||||||
|
15126+NLSRC_OFFSET "Man, Isle of"
|
||||||
|
19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
|
||||||
|
21242+NLSRC_OFFSET "Midway Islands"
|
||||||
|
30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
|
||||||
|
31706+NLSRC_OFFSET "Saint Martin (French part)"
|
||||||
END
|
END
|
||||||
|
|
|
@ -158,4 +158,271 @@ BEGIN
|
||||||
|
|
||||||
52936 "52936 (HZ-GB2312 китайская упрощенная)"
|
52936 "52936 (HZ-GB2312 китайская упрощенная)"
|
||||||
54936 "54936 (GB18030 китайская упрощенная)"
|
54936 "54936 (GB18030 китайская упрощенная)"
|
||||||
|
|
||||||
|
/* Locations */
|
||||||
|
2+NLSRC_OFFSET "Antigua and Barbuda"
|
||||||
|
3+NLSRC_OFFSET "Afghanistan"
|
||||||
|
4+NLSRC_OFFSET "Algeria"
|
||||||
|
5+NLSRC_OFFSET "Azerbaijan"
|
||||||
|
6+NLSRC_OFFSET "Albania"
|
||||||
|
7+NLSRC_OFFSET "Armenia"
|
||||||
|
8+NLSRC_OFFSET "Andorra"
|
||||||
|
9+NLSRC_OFFSET "Angola"
|
||||||
|
10+NLSRC_OFFSET "American Samoa"
|
||||||
|
11+NLSRC_OFFSET "Argentina"
|
||||||
|
12+NLSRC_OFFSET "Australia"
|
||||||
|
14+NLSRC_OFFSET "Austria"
|
||||||
|
17+NLSRC_OFFSET "Bahrain"
|
||||||
|
18+NLSRC_OFFSET "Barbados"
|
||||||
|
19+NLSRC_OFFSET "Botswana"
|
||||||
|
20+NLSRC_OFFSET "Bermuda"
|
||||||
|
21+NLSRC_OFFSET "Belgium"
|
||||||
|
22+NLSRC_OFFSET "Bahamas, The"
|
||||||
|
23+NLSRC_OFFSET "Bangladesh"
|
||||||
|
24+NLSRC_OFFSET "Belize"
|
||||||
|
25+NLSRC_OFFSET "Bosnia and Herzegovina"
|
||||||
|
26+NLSRC_OFFSET "Bolivia"
|
||||||
|
27+NLSRC_OFFSET "Myanmar"
|
||||||
|
28+NLSRC_OFFSET "Benin"
|
||||||
|
29+NLSRC_OFFSET "Belarus"
|
||||||
|
30+NLSRC_OFFSET "Solomon Islands"
|
||||||
|
32+NLSRC_OFFSET "Brazil"
|
||||||
|
34+NLSRC_OFFSET "Bhutan"
|
||||||
|
35+NLSRC_OFFSET "Bulgaria"
|
||||||
|
38+NLSRC_OFFSET "Burundi"
|
||||||
|
39+NLSRC_OFFSET "Canada"
|
||||||
|
40+NLSRC_OFFSET "Cambodia"
|
||||||
|
41+NLSRC_OFFSET "Chad"
|
||||||
|
42+NLSRC_OFFSET "Sri Lanka"
|
||||||
|
43+NLSRC_OFFSET "Congo"
|
||||||
|
44+NLSRC_OFFSET "Congo (DRC)"
|
||||||
|
45+NLSRC_OFFSET "China"
|
||||||
|
46+NLSRC_OFFSET "Chile"
|
||||||
|
49+NLSRC_OFFSET "Cameroon"
|
||||||
|
50+NLSRC_OFFSET "Comoros"
|
||||||
|
51+NLSRC_OFFSET "Colombia"
|
||||||
|
54+NLSRC_OFFSET "Costa Rica"
|
||||||
|
55+NLSRC_OFFSET "Central African Republic"
|
||||||
|
56+NLSRC_OFFSET "Cuba"
|
||||||
|
57+NLSRC_OFFSET "Cape Verde"
|
||||||
|
59+NLSRC_OFFSET "Cyprus"
|
||||||
|
61+NLSRC_OFFSET "Denmark"
|
||||||
|
62+NLSRC_OFFSET "Djibouti"
|
||||||
|
63+NLSRC_OFFSET "Dominica"
|
||||||
|
65+NLSRC_OFFSET "Dominican Republic"
|
||||||
|
66+NLSRC_OFFSET "Ecuador"
|
||||||
|
67+NLSRC_OFFSET "Egypt"
|
||||||
|
68+NLSRC_OFFSET "Ireland"
|
||||||
|
69+NLSRC_OFFSET "Equatorial Guinea"
|
||||||
|
70+NLSRC_OFFSET "Estonia"
|
||||||
|
71+NLSRC_OFFSET "Eritrea"
|
||||||
|
72+NLSRC_OFFSET "El Salvador"
|
||||||
|
73+NLSRC_OFFSET "Ethiopia"
|
||||||
|
75+NLSRC_OFFSET "Czech Republic"
|
||||||
|
77+NLSRC_OFFSET "Finland"
|
||||||
|
78+NLSRC_OFFSET "Fiji Islands"
|
||||||
|
80+NLSRC_OFFSET "Micronesia"
|
||||||
|
81+NLSRC_OFFSET "Faroe Islands"
|
||||||
|
84+NLSRC_OFFSET "France"
|
||||||
|
86+NLSRC_OFFSET "Gambia, The"
|
||||||
|
87+NLSRC_OFFSET "Gabon"
|
||||||
|
88+NLSRC_OFFSET "Georgia"
|
||||||
|
89+NLSRC_OFFSET "Ghana"
|
||||||
|
90+NLSRC_OFFSET "Gibraltar"
|
||||||
|
91+NLSRC_OFFSET "Grenada"
|
||||||
|
93+NLSRC_OFFSET "Greenland"
|
||||||
|
94+NLSRC_OFFSET "Germany"
|
||||||
|
98+NLSRC_OFFSET "Greece"
|
||||||
|
99+NLSRC_OFFSET "Guatemala"
|
||||||
|
100+NLSRC_OFFSET "Guinea"
|
||||||
|
101+NLSRC_OFFSET "Guyana"
|
||||||
|
103+NLSRC_OFFSET "Haiti"
|
||||||
|
104+NLSRC_OFFSET "Hong Kong S.A.R."
|
||||||
|
106+NLSRC_OFFSET "Honduras"
|
||||||
|
108+NLSRC_OFFSET "Croatia"
|
||||||
|
109+NLSRC_OFFSET "Hungary"
|
||||||
|
110+NLSRC_OFFSET "Iceland"
|
||||||
|
111+NLSRC_OFFSET "Indonesia"
|
||||||
|
113+NLSRC_OFFSET "India"
|
||||||
|
114+NLSRC_OFFSET "British Indian Ocean Territory"
|
||||||
|
116+NLSRC_OFFSET "Iran"
|
||||||
|
117+NLSRC_OFFSET "Israel"
|
||||||
|
118+NLSRC_OFFSET "Italy"
|
||||||
|
119+NLSRC_OFFSET "Côte d'Ivoire"
|
||||||
|
121+NLSRC_OFFSET "Iraq"
|
||||||
|
122+NLSRC_OFFSET "Japan"
|
||||||
|
124+NLSRC_OFFSET "Jamaica"
|
||||||
|
125+NLSRC_OFFSET "Jan Mayen"
|
||||||
|
126+NLSRC_OFFSET "Jordan"
|
||||||
|
127+NLSRC_OFFSET "Johnston Atoll"
|
||||||
|
129+NLSRC_OFFSET "Kenya"
|
||||||
|
130+NLSRC_OFFSET "Kyrgyzstan"
|
||||||
|
131+NLSRC_OFFSET "North Korea"
|
||||||
|
133+NLSRC_OFFSET "Kiribati"
|
||||||
|
134+NLSRC_OFFSET "Korea"
|
||||||
|
136+NLSRC_OFFSET "Kuwait"
|
||||||
|
137+NLSRC_OFFSET "Kazakhstan"
|
||||||
|
138+NLSRC_OFFSET "Laos"
|
||||||
|
139+NLSRC_OFFSET "Lebanon"
|
||||||
|
140+NLSRC_OFFSET "Latvia"
|
||||||
|
141+NLSRC_OFFSET "Lithuania"
|
||||||
|
142+NLSRC_OFFSET "Liberia"
|
||||||
|
143+NLSRC_OFFSET "Slovakia"
|
||||||
|
145+NLSRC_OFFSET "Liechtenstein"
|
||||||
|
146+NLSRC_OFFSET "Lesotho"
|
||||||
|
147+NLSRC_OFFSET "Luxembourg"
|
||||||
|
148+NLSRC_OFFSET "Libya"
|
||||||
|
149+NLSRC_OFFSET "Madagascar"
|
||||||
|
151+NLSRC_OFFSET "Macao S.A.R."
|
||||||
|
152+NLSRC_OFFSET "Moldova"
|
||||||
|
154+NLSRC_OFFSET "Mongolia"
|
||||||
|
156+NLSRC_OFFSET "Malawi"
|
||||||
|
157+NLSRC_OFFSET "Mali"
|
||||||
|
158+NLSRC_OFFSET "Monaco"
|
||||||
|
159+NLSRC_OFFSET "Morocco"
|
||||||
|
160+NLSRC_OFFSET "Mauritius"
|
||||||
|
162+NLSRC_OFFSET "Mauritania"
|
||||||
|
163+NLSRC_OFFSET "Malta"
|
||||||
|
164+NLSRC_OFFSET "Oman"
|
||||||
|
165+NLSRC_OFFSET "Maldives"
|
||||||
|
166+NLSRC_OFFSET "Mexico"
|
||||||
|
167+NLSRC_OFFSET "Malaysia"
|
||||||
|
168+NLSRC_OFFSET "Mozambique"
|
||||||
|
173+NLSRC_OFFSET "Niger"
|
||||||
|
174+NLSRC_OFFSET "Vanuatu"
|
||||||
|
175+NLSRC_OFFSET "Nigeria"
|
||||||
|
176+NLSRC_OFFSET "Netherlands"
|
||||||
|
177+NLSRC_OFFSET "Norway"
|
||||||
|
178+NLSRC_OFFSET "Nepal"
|
||||||
|
180+NLSRC_OFFSET "Nauru"
|
||||||
|
181+NLSRC_OFFSET "Suriname"
|
||||||
|
182+NLSRC_OFFSET "Nicaragua"
|
||||||
|
183+NLSRC_OFFSET "New Zealand"
|
||||||
|
184+NLSRC_OFFSET "Palestinian Authority"
|
||||||
|
185+NLSRC_OFFSET "Paraguay"
|
||||||
|
187+NLSRC_OFFSET "Peru"
|
||||||
|
190+NLSRC_OFFSET "Pakistan"
|
||||||
|
191+NLSRC_OFFSET "Poland"
|
||||||
|
192+NLSRC_OFFSET "Panama"
|
||||||
|
193+NLSRC_OFFSET "Portugal"
|
||||||
|
194+NLSRC_OFFSET "Papua New Guinea"
|
||||||
|
195+NLSRC_OFFSET "Palau"
|
||||||
|
196+NLSRC_OFFSET "Guinea-Bissau"
|
||||||
|
197+NLSRC_OFFSET "Qatar"
|
||||||
|
198+NLSRC_OFFSET "Reunion"
|
||||||
|
199+NLSRC_OFFSET "Marshall Islands"
|
||||||
|
200+NLSRC_OFFSET "Romania"
|
||||||
|
201+NLSRC_OFFSET "Philippines"
|
||||||
|
202+NLSRC_OFFSET "Puerto Rico"
|
||||||
|
203+NLSRC_OFFSET "Russia"
|
||||||
|
204+NLSRC_OFFSET "Rwanda"
|
||||||
|
205+NLSRC_OFFSET "Saudi Arabia"
|
||||||
|
206+NLSRC_OFFSET "St. Pierre and Miquelon"
|
||||||
|
207+NLSRC_OFFSET "St. Kitts and Nevis"
|
||||||
|
208+NLSRC_OFFSET "Seychelles"
|
||||||
|
209+NLSRC_OFFSET "South Africa"
|
||||||
|
210+NLSRC_OFFSET "Senegal"
|
||||||
|
212+NLSRC_OFFSET "Slovenia"
|
||||||
|
213+NLSRC_OFFSET "Sierra Leone"
|
||||||
|
214+NLSRC_OFFSET "San Marino"
|
||||||
|
215+NLSRC_OFFSET "Singapore"
|
||||||
|
216+NLSRC_OFFSET "Somalia"
|
||||||
|
217+NLSRC_OFFSET "Spain"
|
||||||
|
218+NLSRC_OFFSET "St. Lucia"
|
||||||
|
219+NLSRC_OFFSET "Sudan"
|
||||||
|
220+NLSRC_OFFSET "Svalbard"
|
||||||
|
221+NLSRC_OFFSET "Sweden"
|
||||||
|
222+NLSRC_OFFSET "Syria"
|
||||||
|
223+NLSRC_OFFSET "Switzerland"
|
||||||
|
224+NLSRC_OFFSET "United Arab Emirates"
|
||||||
|
225+NLSRC_OFFSET "Trinidad and Tobago"
|
||||||
|
227+NLSRC_OFFSET "Thailand"
|
||||||
|
228+NLSRC_OFFSET "Tajikistan"
|
||||||
|
231+NLSRC_OFFSET "Tonga"
|
||||||
|
232+NLSRC_OFFSET "Togo"
|
||||||
|
233+NLSRC_OFFSET "São Tomé and Príncipe"
|
||||||
|
234+NLSRC_OFFSET "Tunisia"
|
||||||
|
235+NLSRC_OFFSET "Turkey"
|
||||||
|
236+NLSRC_OFFSET "Tuvalu"
|
||||||
|
237+NLSRC_OFFSET "Taiwan"
|
||||||
|
238+NLSRC_OFFSET "Turkmenistan"
|
||||||
|
239+NLSRC_OFFSET "Tanzania"
|
||||||
|
240+NLSRC_OFFSET "Uganda"
|
||||||
|
241+NLSRC_OFFSET "Ukraine"
|
||||||
|
242+NLSRC_OFFSET "United Kingdom"
|
||||||
|
244+NLSRC_OFFSET "United States"
|
||||||
|
245+NLSRC_OFFSET "Burkina Faso"
|
||||||
|
246+NLSRC_OFFSET "Uruguay"
|
||||||
|
247+NLSRC_OFFSET "Uzbekistan"
|
||||||
|
248+NLSRC_OFFSET "St. Vincent and the Grenadines"
|
||||||
|
249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
|
||||||
|
251+NLSRC_OFFSET "Vietnam"
|
||||||
|
252+NLSRC_OFFSET "Virgin Islands"
|
||||||
|
253+NLSRC_OFFSET "Vatican City"
|
||||||
|
254+NLSRC_OFFSET "Namibia"
|
||||||
|
257+NLSRC_OFFSET "Western Sahara (disputed)"
|
||||||
|
258+NLSRC_OFFSET "Wake Island"
|
||||||
|
259+NLSRC_OFFSET "Samoa"
|
||||||
|
260+NLSRC_OFFSET "Swaziland"
|
||||||
|
261+NLSRC_OFFSET "Yemen"
|
||||||
|
263+NLSRC_OFFSET "Zambia"
|
||||||
|
264+NLSRC_OFFSET "Zimbabwe"
|
||||||
|
269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
|
||||||
|
270+NLSRC_OFFSET "Montenegro"
|
||||||
|
271+NLSRC_OFFSET "Serbia"
|
||||||
|
273+NLSRC_OFFSET "Curaçao"
|
||||||
|
276+NLSRC_OFFSET "South Sudan"
|
||||||
|
300+NLSRC_OFFSET "Anguilla"
|
||||||
|
301+NLSRC_OFFSET "Antarctica"
|
||||||
|
302+NLSRC_OFFSET "Aruba"
|
||||||
|
303+NLSRC_OFFSET "Ascension Island"
|
||||||
|
304+NLSRC_OFFSET "Ashmore and Cartier Islands"
|
||||||
|
305+NLSRC_OFFSET "Baker Island"
|
||||||
|
306+NLSRC_OFFSET "Bouvet Island"
|
||||||
|
307+NLSRC_OFFSET "Cayman Islands"
|
||||||
|
308+NLSRC_OFFSET "Channel Islands"
|
||||||
|
309+NLSRC_OFFSET "Christmas Island"
|
||||||
|
310+NLSRC_OFFSET "Clipperton Island"
|
||||||
|
311+NLSRC_OFFSET "Cocos (Keeling) Islands"
|
||||||
|
312+NLSRC_OFFSET "Cook Islands"
|
||||||
|
313+NLSRC_OFFSET "Coral Sea Islands"
|
||||||
|
314+NLSRC_OFFSET "Diego Garcia"
|
||||||
|
315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
|
||||||
|
317+NLSRC_OFFSET "French Guiana"
|
||||||
|
318+NLSRC_OFFSET "French Polynesia"
|
||||||
|
319+NLSRC_OFFSET "French Southern and Antarctic Lands"
|
||||||
|
321+NLSRC_OFFSET "Guadeloupe"
|
||||||
|
322+NLSRC_OFFSET "Guam"
|
||||||
|
323+NLSRC_OFFSET "Guantanamo Bay"
|
||||||
|
324+NLSRC_OFFSET "Guernsey"
|
||||||
|
325+NLSRC_OFFSET "Heard Island and McDonald Islands"
|
||||||
|
326+NLSRC_OFFSET "Howland Island"
|
||||||
|
327+NLSRC_OFFSET "Jarvis Island"
|
||||||
|
328+NLSRC_OFFSET "Jersey"
|
||||||
|
329+NLSRC_OFFSET "Kingman Reef"
|
||||||
|
330+NLSRC_OFFSET "Martinique"
|
||||||
|
331+NLSRC_OFFSET "Mayotte"
|
||||||
|
332+NLSRC_OFFSET "Montserrat"
|
||||||
|
333+NLSRC_OFFSET "Netherlands Antilles (Former)"
|
||||||
|
334+NLSRC_OFFSET "New Caledonia"
|
||||||
|
335+NLSRC_OFFSET "Niue"
|
||||||
|
336+NLSRC_OFFSET "Norfolk Island"
|
||||||
|
337+NLSRC_OFFSET "Northern Mariana Islands"
|
||||||
|
338+NLSRC_OFFSET "Palmyra Atoll"
|
||||||
|
339+NLSRC_OFFSET "Pitcairn Islands"
|
||||||
|
340+NLSRC_OFFSET "Rota Island"
|
||||||
|
341+NLSRC_OFFSET "Saipan"
|
||||||
|
342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
|
||||||
|
343+NLSRC_OFFSET "St. Helena"
|
||||||
|
346+NLSRC_OFFSET "Tinian Island"
|
||||||
|
347+NLSRC_OFFSET "Tokelau"
|
||||||
|
348+NLSRC_OFFSET "Tristan da Cunha"
|
||||||
|
349+NLSRC_OFFSET "Turks and Caicos Islands"
|
||||||
|
351+NLSRC_OFFSET "Virgin Islands, British"
|
||||||
|
352+NLSRC_OFFSET "Wallis and Futuna"
|
||||||
|
15126+NLSRC_OFFSET "Man, Isle of"
|
||||||
|
19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
|
||||||
|
21242+NLSRC_OFFSET "Midway Islands"
|
||||||
|
30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
|
||||||
|
31706+NLSRC_OFFSET "Saint Martin (French part)"
|
||||||
END
|
END
|
||||||
|
|
|
@ -158,4 +158,271 @@ BEGIN
|
||||||
|
|
||||||
52936 "52936 (HZ-GB2312 Kineze Thjeshtuar)"
|
52936 "52936 (HZ-GB2312 Kineze Thjeshtuar)"
|
||||||
54936 "54936 (GB18030 Kineze Thjeshtesuar)"
|
54936 "54936 (GB18030 Kineze Thjeshtesuar)"
|
||||||
|
|
||||||
|
/* Locations */
|
||||||
|
2+NLSRC_OFFSET "Antigua and Barbuda"
|
||||||
|
3+NLSRC_OFFSET "Afghanistan"
|
||||||
|
4+NLSRC_OFFSET "Algeria"
|
||||||
|
5+NLSRC_OFFSET "Azerbaijan"
|
||||||
|
6+NLSRC_OFFSET "Albania"
|
||||||
|
7+NLSRC_OFFSET "Armenia"
|
||||||
|
8+NLSRC_OFFSET "Andorra"
|
||||||
|
9+NLSRC_OFFSET "Angola"
|
||||||
|
10+NLSRC_OFFSET "American Samoa"
|
||||||
|
11+NLSRC_OFFSET "Argentina"
|
||||||
|
12+NLSRC_OFFSET "Australia"
|
||||||
|
14+NLSRC_OFFSET "Austria"
|
||||||
|
17+NLSRC_OFFSET "Bahrain"
|
||||||
|
18+NLSRC_OFFSET "Barbados"
|
||||||
|
19+NLSRC_OFFSET "Botswana"
|
||||||
|
20+NLSRC_OFFSET "Bermuda"
|
||||||
|
21+NLSRC_OFFSET "Belgium"
|
||||||
|
22+NLSRC_OFFSET "Bahamas, The"
|
||||||
|
23+NLSRC_OFFSET "Bangladesh"
|
||||||
|
24+NLSRC_OFFSET "Belize"
|
||||||
|
25+NLSRC_OFFSET "Bosnia and Herzegovina"
|
||||||
|
26+NLSRC_OFFSET "Bolivia"
|
||||||
|
27+NLSRC_OFFSET "Myanmar"
|
||||||
|
28+NLSRC_OFFSET "Benin"
|
||||||
|
29+NLSRC_OFFSET "Belarus"
|
||||||
|
30+NLSRC_OFFSET "Solomon Islands"
|
||||||
|
32+NLSRC_OFFSET "Brazil"
|
||||||
|
34+NLSRC_OFFSET "Bhutan"
|
||||||
|
35+NLSRC_OFFSET "Bulgaria"
|
||||||
|
38+NLSRC_OFFSET "Burundi"
|
||||||
|
39+NLSRC_OFFSET "Canada"
|
||||||
|
40+NLSRC_OFFSET "Cambodia"
|
||||||
|
41+NLSRC_OFFSET "Chad"
|
||||||
|
42+NLSRC_OFFSET "Sri Lanka"
|
||||||
|
43+NLSRC_OFFSET "Congo"
|
||||||
|
44+NLSRC_OFFSET "Congo (DRC)"
|
||||||
|
45+NLSRC_OFFSET "China"
|
||||||
|
46+NLSRC_OFFSET "Chile"
|
||||||
|
49+NLSRC_OFFSET "Cameroon"
|
||||||
|
50+NLSRC_OFFSET "Comoros"
|
||||||
|
51+NLSRC_OFFSET "Colombia"
|
||||||
|
54+NLSRC_OFFSET "Costa Rica"
|
||||||
|
55+NLSRC_OFFSET "Central African Republic"
|
||||||
|
56+NLSRC_OFFSET "Cuba"
|
||||||
|
57+NLSRC_OFFSET "Cape Verde"
|
||||||
|
59+NLSRC_OFFSET "Cyprus"
|
||||||
|
61+NLSRC_OFFSET "Denmark"
|
||||||
|
62+NLSRC_OFFSET "Djibouti"
|
||||||
|
63+NLSRC_OFFSET "Dominica"
|
||||||
|
65+NLSRC_OFFSET "Dominican Republic"
|
||||||
|
66+NLSRC_OFFSET "Ecuador"
|
||||||
|
67+NLSRC_OFFSET "Egypt"
|
||||||
|
68+NLSRC_OFFSET "Ireland"
|
||||||
|
69+NLSRC_OFFSET "Equatorial Guinea"
|
||||||
|
70+NLSRC_OFFSET "Estonia"
|
||||||
|
71+NLSRC_OFFSET "Eritrea"
|
||||||
|
72+NLSRC_OFFSET "El Salvador"
|
||||||
|
73+NLSRC_OFFSET "Ethiopia"
|
||||||
|
75+NLSRC_OFFSET "Czech Republic"
|
||||||
|
77+NLSRC_OFFSET "Finland"
|
||||||
|
78+NLSRC_OFFSET "Fiji Islands"
|
||||||
|
80+NLSRC_OFFSET "Micronesia"
|
||||||
|
81+NLSRC_OFFSET "Faroe Islands"
|
||||||
|
84+NLSRC_OFFSET "France"
|
||||||
|
86+NLSRC_OFFSET "Gambia, The"
|
||||||
|
87+NLSRC_OFFSET "Gabon"
|
||||||
|
88+NLSRC_OFFSET "Georgia"
|
||||||
|
89+NLSRC_OFFSET "Ghana"
|
||||||
|
90+NLSRC_OFFSET "Gibraltar"
|
||||||
|
91+NLSRC_OFFSET "Grenada"
|
||||||
|
93+NLSRC_OFFSET "Greenland"
|
||||||
|
94+NLSRC_OFFSET "Germany"
|
||||||
|
98+NLSRC_OFFSET "Greece"
|
||||||
|
99+NLSRC_OFFSET "Guatemala"
|
||||||
|
100+NLSRC_OFFSET "Guinea"
|
||||||
|
101+NLSRC_OFFSET "Guyana"
|
||||||
|
103+NLSRC_OFFSET "Haiti"
|
||||||
|
104+NLSRC_OFFSET "Hong Kong S.A.R."
|
||||||
|
106+NLSRC_OFFSET "Honduras"
|
||||||
|
108+NLSRC_OFFSET "Croatia"
|
||||||
|
109+NLSRC_OFFSET "Hungary"
|
||||||
|
110+NLSRC_OFFSET "Iceland"
|
||||||
|
111+NLSRC_OFFSET "Indonesia"
|
||||||
|
113+NLSRC_OFFSET "India"
|
||||||
|
114+NLSRC_OFFSET "British Indian Ocean Territory"
|
||||||
|
116+NLSRC_OFFSET "Iran"
|
||||||
|
117+NLSRC_OFFSET "Israel"
|
||||||
|
118+NLSRC_OFFSET "Italy"
|
||||||
|
119+NLSRC_OFFSET "Côte d'Ivoire"
|
||||||
|
121+NLSRC_OFFSET "Iraq"
|
||||||
|
122+NLSRC_OFFSET "Japan"
|
||||||
|
124+NLSRC_OFFSET "Jamaica"
|
||||||
|
125+NLSRC_OFFSET "Jan Mayen"
|
||||||
|
126+NLSRC_OFFSET "Jordan"
|
||||||
|
127+NLSRC_OFFSET "Johnston Atoll"
|
||||||
|
129+NLSRC_OFFSET "Kenya"
|
||||||
|
130+NLSRC_OFFSET "Kyrgyzstan"
|
||||||
|
131+NLSRC_OFFSET "North Korea"
|
||||||
|
133+NLSRC_OFFSET "Kiribati"
|
||||||
|
134+NLSRC_OFFSET "Korea"
|
||||||
|
136+NLSRC_OFFSET "Kuwait"
|
||||||
|
137+NLSRC_OFFSET "Kazakhstan"
|
||||||
|
138+NLSRC_OFFSET "Laos"
|
||||||
|
139+NLSRC_OFFSET "Lebanon"
|
||||||
|
140+NLSRC_OFFSET "Latvia"
|
||||||
|
141+NLSRC_OFFSET "Lithuania"
|
||||||
|
142+NLSRC_OFFSET "Liberia"
|
||||||
|
143+NLSRC_OFFSET "Slovakia"
|
||||||
|
145+NLSRC_OFFSET "Liechtenstein"
|
||||||
|
146+NLSRC_OFFSET "Lesotho"
|
||||||
|
147+NLSRC_OFFSET "Luxembourg"
|
||||||
|
148+NLSRC_OFFSET "Libya"
|
||||||
|
149+NLSRC_OFFSET "Madagascar"
|
||||||
|
151+NLSRC_OFFSET "Macao S.A.R."
|
||||||
|
152+NLSRC_OFFSET "Moldova"
|
||||||
|
154+NLSRC_OFFSET "Mongolia"
|
||||||
|
156+NLSRC_OFFSET "Malawi"
|
||||||
|
157+NLSRC_OFFSET "Mali"
|
||||||
|
158+NLSRC_OFFSET "Monaco"
|
||||||
|
159+NLSRC_OFFSET "Morocco"
|
||||||
|
160+NLSRC_OFFSET "Mauritius"
|
||||||
|
162+NLSRC_OFFSET "Mauritania"
|
||||||
|
163+NLSRC_OFFSET "Malta"
|
||||||
|
164+NLSRC_OFFSET "Oman"
|
||||||
|
165+NLSRC_OFFSET "Maldives"
|
||||||
|
166+NLSRC_OFFSET "Mexico"
|
||||||
|
167+NLSRC_OFFSET "Malaysia"
|
||||||
|
168+NLSRC_OFFSET "Mozambique"
|
||||||
|
173+NLSRC_OFFSET "Niger"
|
||||||
|
174+NLSRC_OFFSET "Vanuatu"
|
||||||
|
175+NLSRC_OFFSET "Nigeria"
|
||||||
|
176+NLSRC_OFFSET "Netherlands"
|
||||||
|
177+NLSRC_OFFSET "Norway"
|
||||||
|
178+NLSRC_OFFSET "Nepal"
|
||||||
|
180+NLSRC_OFFSET "Nauru"
|
||||||
|
181+NLSRC_OFFSET "Suriname"
|
||||||
|
182+NLSRC_OFFSET "Nicaragua"
|
||||||
|
183+NLSRC_OFFSET "New Zealand"
|
||||||
|
184+NLSRC_OFFSET "Palestinian Authority"
|
||||||
|
185+NLSRC_OFFSET "Paraguay"
|
||||||
|
187+NLSRC_OFFSET "Peru"
|
||||||
|
190+NLSRC_OFFSET "Pakistan"
|
||||||
|
191+NLSRC_OFFSET "Poland"
|
||||||
|
192+NLSRC_OFFSET "Panama"
|
||||||
|
193+NLSRC_OFFSET "Portugal"
|
||||||
|
194+NLSRC_OFFSET "Papua New Guinea"
|
||||||
|
195+NLSRC_OFFSET "Palau"
|
||||||
|
196+NLSRC_OFFSET "Guinea-Bissau"
|
||||||
|
197+NLSRC_OFFSET "Qatar"
|
||||||
|
198+NLSRC_OFFSET "Reunion"
|
||||||
|
199+NLSRC_OFFSET "Marshall Islands"
|
||||||
|
200+NLSRC_OFFSET "Romania"
|
||||||
|
201+NLSRC_OFFSET "Philippines"
|
||||||
|
202+NLSRC_OFFSET "Puerto Rico"
|
||||||
|
203+NLSRC_OFFSET "Russia"
|
||||||
|
204+NLSRC_OFFSET "Rwanda"
|
||||||
|
205+NLSRC_OFFSET "Saudi Arabia"
|
||||||
|
206+NLSRC_OFFSET "St. Pierre and Miquelon"
|
||||||
|
207+NLSRC_OFFSET "St. Kitts and Nevis"
|
||||||
|
208+NLSRC_OFFSET "Seychelles"
|
||||||
|
209+NLSRC_OFFSET "South Africa"
|
||||||
|
210+NLSRC_OFFSET "Senegal"
|
||||||
|
212+NLSRC_OFFSET "Slovenia"
|
||||||
|
213+NLSRC_OFFSET "Sierra Leone"
|
||||||
|
214+NLSRC_OFFSET "San Marino"
|
||||||
|
215+NLSRC_OFFSET "Singapore"
|
||||||
|
216+NLSRC_OFFSET "Somalia"
|
||||||
|
217+NLSRC_OFFSET "Spain"
|
||||||
|
218+NLSRC_OFFSET "St. Lucia"
|
||||||
|
219+NLSRC_OFFSET "Sudan"
|
||||||
|
220+NLSRC_OFFSET "Svalbard"
|
||||||
|
221+NLSRC_OFFSET "Sweden"
|
||||||
|
222+NLSRC_OFFSET "Syria"
|
||||||
|
223+NLSRC_OFFSET "Switzerland"
|
||||||
|
224+NLSRC_OFFSET "United Arab Emirates"
|
||||||
|
225+NLSRC_OFFSET "Trinidad and Tobago"
|
||||||
|
227+NLSRC_OFFSET "Thailand"
|
||||||
|
228+NLSRC_OFFSET "Tajikistan"
|
||||||
|
231+NLSRC_OFFSET "Tonga"
|
||||||
|
232+NLSRC_OFFSET "Togo"
|
||||||
|
233+NLSRC_OFFSET "São Tomé and Príncipe"
|
||||||
|
234+NLSRC_OFFSET "Tunisia"
|
||||||
|
235+NLSRC_OFFSET "Turkey"
|
||||||
|
236+NLSRC_OFFSET "Tuvalu"
|
||||||
|
237+NLSRC_OFFSET "Taiwan"
|
||||||
|
238+NLSRC_OFFSET "Turkmenistan"
|
||||||
|
239+NLSRC_OFFSET "Tanzania"
|
||||||
|
240+NLSRC_OFFSET "Uganda"
|
||||||
|
241+NLSRC_OFFSET "Ukraine"
|
||||||
|
242+NLSRC_OFFSET "United Kingdom"
|
||||||
|
244+NLSRC_OFFSET "United States"
|
||||||
|
245+NLSRC_OFFSET "Burkina Faso"
|
||||||
|
246+NLSRC_OFFSET "Uruguay"
|
||||||
|
247+NLSRC_OFFSET "Uzbekistan"
|
||||||
|
248+NLSRC_OFFSET "St. Vincent and the Grenadines"
|
||||||
|
249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
|
||||||
|
251+NLSRC_OFFSET "Vietnam"
|
||||||
|
252+NLSRC_OFFSET "Virgin Islands"
|
||||||
|
253+NLSRC_OFFSET "Vatican City"
|
||||||
|
254+NLSRC_OFFSET "Namibia"
|
||||||
|
257+NLSRC_OFFSET "Western Sahara (disputed)"
|
||||||
|
258+NLSRC_OFFSET "Wake Island"
|
||||||
|
259+NLSRC_OFFSET "Samoa"
|
||||||
|
260+NLSRC_OFFSET "Swaziland"
|
||||||
|
261+NLSRC_OFFSET "Yemen"
|
||||||
|
263+NLSRC_OFFSET "Zambia"
|
||||||
|
264+NLSRC_OFFSET "Zimbabwe"
|
||||||
|
269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
|
||||||
|
270+NLSRC_OFFSET "Montenegro"
|
||||||
|
271+NLSRC_OFFSET "Serbia"
|
||||||
|
273+NLSRC_OFFSET "Curaçao"
|
||||||
|
276+NLSRC_OFFSET "South Sudan"
|
||||||
|
300+NLSRC_OFFSET "Anguilla"
|
||||||
|
301+NLSRC_OFFSET "Antarctica"
|
||||||
|
302+NLSRC_OFFSET "Aruba"
|
||||||
|
303+NLSRC_OFFSET "Ascension Island"
|
||||||
|
304+NLSRC_OFFSET "Ashmore and Cartier Islands"
|
||||||
|
305+NLSRC_OFFSET "Baker Island"
|
||||||
|
306+NLSRC_OFFSET "Bouvet Island"
|
||||||
|
307+NLSRC_OFFSET "Cayman Islands"
|
||||||
|
308+NLSRC_OFFSET "Channel Islands"
|
||||||
|
309+NLSRC_OFFSET "Christmas Island"
|
||||||
|
310+NLSRC_OFFSET "Clipperton Island"
|
||||||
|
311+NLSRC_OFFSET "Cocos (Keeling) Islands"
|
||||||
|
312+NLSRC_OFFSET "Cook Islands"
|
||||||
|
313+NLSRC_OFFSET "Coral Sea Islands"
|
||||||
|
314+NLSRC_OFFSET "Diego Garcia"
|
||||||
|
315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
|
||||||
|
317+NLSRC_OFFSET "French Guiana"
|
||||||
|
318+NLSRC_OFFSET "French Polynesia"
|
||||||
|
319+NLSRC_OFFSET "French Southern and Antarctic Lands"
|
||||||
|
321+NLSRC_OFFSET "Guadeloupe"
|
||||||
|
322+NLSRC_OFFSET "Guam"
|
||||||
|
323+NLSRC_OFFSET "Guantanamo Bay"
|
||||||
|
324+NLSRC_OFFSET "Guernsey"
|
||||||
|
325+NLSRC_OFFSET "Heard Island and McDonald Islands"
|
||||||
|
326+NLSRC_OFFSET "Howland Island"
|
||||||
|
327+NLSRC_OFFSET "Jarvis Island"
|
||||||
|
328+NLSRC_OFFSET "Jersey"
|
||||||
|
329+NLSRC_OFFSET "Kingman Reef"
|
||||||
|
330+NLSRC_OFFSET "Martinique"
|
||||||
|
331+NLSRC_OFFSET "Mayotte"
|
||||||
|
332+NLSRC_OFFSET "Montserrat"
|
||||||
|
333+NLSRC_OFFSET "Netherlands Antilles (Former)"
|
||||||
|
334+NLSRC_OFFSET "New Caledonia"
|
||||||
|
335+NLSRC_OFFSET "Niue"
|
||||||
|
336+NLSRC_OFFSET "Norfolk Island"
|
||||||
|
337+NLSRC_OFFSET "Northern Mariana Islands"
|
||||||
|
338+NLSRC_OFFSET "Palmyra Atoll"
|
||||||
|
339+NLSRC_OFFSET "Pitcairn Islands"
|
||||||
|
340+NLSRC_OFFSET "Rota Island"
|
||||||
|
341+NLSRC_OFFSET "Saipan"
|
||||||
|
342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
|
||||||
|
343+NLSRC_OFFSET "St. Helena"
|
||||||
|
346+NLSRC_OFFSET "Tinian Island"
|
||||||
|
347+NLSRC_OFFSET "Tokelau"
|
||||||
|
348+NLSRC_OFFSET "Tristan da Cunha"
|
||||||
|
349+NLSRC_OFFSET "Turks and Caicos Islands"
|
||||||
|
351+NLSRC_OFFSET "Virgin Islands, British"
|
||||||
|
352+NLSRC_OFFSET "Wallis and Futuna"
|
||||||
|
15126+NLSRC_OFFSET "Man, Isle of"
|
||||||
|
19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
|
||||||
|
21242+NLSRC_OFFSET "Midway Islands"
|
||||||
|
30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
|
||||||
|
31706+NLSRC_OFFSET "Saint Martin (French part)"
|
||||||
END
|
END
|
||||||
|
|
|
@ -159,4 +159,271 @@ BEGIN
|
||||||
|
|
||||||
52936 "52936 (HZ-GB2312 Bayağılaştırılmış Çince)"
|
52936 "52936 (HZ-GB2312 Bayağılaştırılmış Çince)"
|
||||||
54936 "54936 (GB18030 Bayağılaştırılmış Çince)"
|
54936 "54936 (GB18030 Bayağılaştırılmış Çince)"
|
||||||
|
|
||||||
|
/* Locations */
|
||||||
|
2+NLSRC_OFFSET "Antigua and Barbuda"
|
||||||
|
3+NLSRC_OFFSET "Afghanistan"
|
||||||
|
4+NLSRC_OFFSET "Algeria"
|
||||||
|
5+NLSRC_OFFSET "Azerbaijan"
|
||||||
|
6+NLSRC_OFFSET "Albania"
|
||||||
|
7+NLSRC_OFFSET "Armenia"
|
||||||
|
8+NLSRC_OFFSET "Andorra"
|
||||||
|
9+NLSRC_OFFSET "Angola"
|
||||||
|
10+NLSRC_OFFSET "American Samoa"
|
||||||
|
11+NLSRC_OFFSET "Argentina"
|
||||||
|
12+NLSRC_OFFSET "Australia"
|
||||||
|
14+NLSRC_OFFSET "Austria"
|
||||||
|
17+NLSRC_OFFSET "Bahrain"
|
||||||
|
18+NLSRC_OFFSET "Barbados"
|
||||||
|
19+NLSRC_OFFSET "Botswana"
|
||||||
|
20+NLSRC_OFFSET "Bermuda"
|
||||||
|
21+NLSRC_OFFSET "Belgium"
|
||||||
|
22+NLSRC_OFFSET "Bahamas, The"
|
||||||
|
23+NLSRC_OFFSET "Bangladesh"
|
||||||
|
24+NLSRC_OFFSET "Belize"
|
||||||
|
25+NLSRC_OFFSET "Bosnia and Herzegovina"
|
||||||
|
26+NLSRC_OFFSET "Bolivia"
|
||||||
|
27+NLSRC_OFFSET "Myanmar"
|
||||||
|
28+NLSRC_OFFSET "Benin"
|
||||||
|
29+NLSRC_OFFSET "Belarus"
|
||||||
|
30+NLSRC_OFFSET "Solomon Islands"
|
||||||
|
32+NLSRC_OFFSET "Brazil"
|
||||||
|
34+NLSRC_OFFSET "Bhutan"
|
||||||
|
35+NLSRC_OFFSET "Bulgaria"
|
||||||
|
38+NLSRC_OFFSET "Burundi"
|
||||||
|
39+NLSRC_OFFSET "Canada"
|
||||||
|
40+NLSRC_OFFSET "Cambodia"
|
||||||
|
41+NLSRC_OFFSET "Chad"
|
||||||
|
42+NLSRC_OFFSET "Sri Lanka"
|
||||||
|
43+NLSRC_OFFSET "Congo"
|
||||||
|
44+NLSRC_OFFSET "Congo (DRC)"
|
||||||
|
45+NLSRC_OFFSET "China"
|
||||||
|
46+NLSRC_OFFSET "Chile"
|
||||||
|
49+NLSRC_OFFSET "Cameroon"
|
||||||
|
50+NLSRC_OFFSET "Comoros"
|
||||||
|
51+NLSRC_OFFSET "Colombia"
|
||||||
|
54+NLSRC_OFFSET "Costa Rica"
|
||||||
|
55+NLSRC_OFFSET "Central African Republic"
|
||||||
|
56+NLSRC_OFFSET "Cuba"
|
||||||
|
57+NLSRC_OFFSET "Cape Verde"
|
||||||
|
59+NLSRC_OFFSET "Cyprus"
|
||||||
|
61+NLSRC_OFFSET "Denmark"
|
||||||
|
62+NLSRC_OFFSET "Djibouti"
|
||||||
|
63+NLSRC_OFFSET "Dominica"
|
||||||
|
65+NLSRC_OFFSET "Dominican Republic"
|
||||||
|
66+NLSRC_OFFSET "Ecuador"
|
||||||
|
67+NLSRC_OFFSET "Egypt"
|
||||||
|
68+NLSRC_OFFSET "Ireland"
|
||||||
|
69+NLSRC_OFFSET "Equatorial Guinea"
|
||||||
|
70+NLSRC_OFFSET "Estonia"
|
||||||
|
71+NLSRC_OFFSET "Eritrea"
|
||||||
|
72+NLSRC_OFFSET "El Salvador"
|
||||||
|
73+NLSRC_OFFSET "Ethiopia"
|
||||||
|
75+NLSRC_OFFSET "Czech Republic"
|
||||||
|
77+NLSRC_OFFSET "Finland"
|
||||||
|
78+NLSRC_OFFSET "Fiji Islands"
|
||||||
|
80+NLSRC_OFFSET "Micronesia"
|
||||||
|
81+NLSRC_OFFSET "Faroe Islands"
|
||||||
|
84+NLSRC_OFFSET "France"
|
||||||
|
86+NLSRC_OFFSET "Gambia, The"
|
||||||
|
87+NLSRC_OFFSET "Gabon"
|
||||||
|
88+NLSRC_OFFSET "Georgia"
|
||||||
|
89+NLSRC_OFFSET "Ghana"
|
||||||
|
90+NLSRC_OFFSET "Gibraltar"
|
||||||
|
91+NLSRC_OFFSET "Grenada"
|
||||||
|
93+NLSRC_OFFSET "Greenland"
|
||||||
|
94+NLSRC_OFFSET "Germany"
|
||||||
|
98+NLSRC_OFFSET "Greece"
|
||||||
|
99+NLSRC_OFFSET "Guatemala"
|
||||||
|
100+NLSRC_OFFSET "Guinea"
|
||||||
|
101+NLSRC_OFFSET "Guyana"
|
||||||
|
103+NLSRC_OFFSET "Haiti"
|
||||||
|
104+NLSRC_OFFSET "Hong Kong S.A.R."
|
||||||
|
106+NLSRC_OFFSET "Honduras"
|
||||||
|
108+NLSRC_OFFSET "Croatia"
|
||||||
|
109+NLSRC_OFFSET "Hungary"
|
||||||
|
110+NLSRC_OFFSET "Iceland"
|
||||||
|
111+NLSRC_OFFSET "Indonesia"
|
||||||
|
113+NLSRC_OFFSET "India"
|
||||||
|
114+NLSRC_OFFSET "British Indian Ocean Territory"
|
||||||
|
116+NLSRC_OFFSET "Iran"
|
||||||
|
117+NLSRC_OFFSET "Israel"
|
||||||
|
118+NLSRC_OFFSET "Italy"
|
||||||
|
119+NLSRC_OFFSET "Côte d'Ivoire"
|
||||||
|
121+NLSRC_OFFSET "Iraq"
|
||||||
|
122+NLSRC_OFFSET "Japan"
|
||||||
|
124+NLSRC_OFFSET "Jamaica"
|
||||||
|
125+NLSRC_OFFSET "Jan Mayen"
|
||||||
|
126+NLSRC_OFFSET "Jordan"
|
||||||
|
127+NLSRC_OFFSET "Johnston Atoll"
|
||||||
|
129+NLSRC_OFFSET "Kenya"
|
||||||
|
130+NLSRC_OFFSET "Kyrgyzstan"
|
||||||
|
131+NLSRC_OFFSET "North Korea"
|
||||||
|
133+NLSRC_OFFSET "Kiribati"
|
||||||
|
134+NLSRC_OFFSET "Korea"
|
||||||
|
136+NLSRC_OFFSET "Kuwait"
|
||||||
|
137+NLSRC_OFFSET "Kazakhstan"
|
||||||
|
138+NLSRC_OFFSET "Laos"
|
||||||
|
139+NLSRC_OFFSET "Lebanon"
|
||||||
|
140+NLSRC_OFFSET "Latvia"
|
||||||
|
141+NLSRC_OFFSET "Lithuania"
|
||||||
|
142+NLSRC_OFFSET "Liberia"
|
||||||
|
143+NLSRC_OFFSET "Slovakia"
|
||||||
|
145+NLSRC_OFFSET "Liechtenstein"
|
||||||
|
146+NLSRC_OFFSET "Lesotho"
|
||||||
|
147+NLSRC_OFFSET "Luxembourg"
|
||||||
|
148+NLSRC_OFFSET "Libya"
|
||||||
|
149+NLSRC_OFFSET "Madagascar"
|
||||||
|
151+NLSRC_OFFSET "Macao S.A.R."
|
||||||
|
152+NLSRC_OFFSET "Moldova"
|
||||||
|
154+NLSRC_OFFSET "Mongolia"
|
||||||
|
156+NLSRC_OFFSET "Malawi"
|
||||||
|
157+NLSRC_OFFSET "Mali"
|
||||||
|
158+NLSRC_OFFSET "Monaco"
|
||||||
|
159+NLSRC_OFFSET "Morocco"
|
||||||
|
160+NLSRC_OFFSET "Mauritius"
|
||||||
|
162+NLSRC_OFFSET "Mauritania"
|
||||||
|
163+NLSRC_OFFSET "Malta"
|
||||||
|
164+NLSRC_OFFSET "Oman"
|
||||||
|
165+NLSRC_OFFSET "Maldives"
|
||||||
|
166+NLSRC_OFFSET "Mexico"
|
||||||
|
167+NLSRC_OFFSET "Malaysia"
|
||||||
|
168+NLSRC_OFFSET "Mozambique"
|
||||||
|
173+NLSRC_OFFSET "Niger"
|
||||||
|
174+NLSRC_OFFSET "Vanuatu"
|
||||||
|
175+NLSRC_OFFSET "Nigeria"
|
||||||
|
176+NLSRC_OFFSET "Netherlands"
|
||||||
|
177+NLSRC_OFFSET "Norway"
|
||||||
|
178+NLSRC_OFFSET "Nepal"
|
||||||
|
180+NLSRC_OFFSET "Nauru"
|
||||||
|
181+NLSRC_OFFSET "Suriname"
|
||||||
|
182+NLSRC_OFFSET "Nicaragua"
|
||||||
|
183+NLSRC_OFFSET "New Zealand"
|
||||||
|
184+NLSRC_OFFSET "Palestinian Authority"
|
||||||
|
185+NLSRC_OFFSET "Paraguay"
|
||||||
|
187+NLSRC_OFFSET "Peru"
|
||||||
|
190+NLSRC_OFFSET "Pakistan"
|
||||||
|
191+NLSRC_OFFSET "Poland"
|
||||||
|
192+NLSRC_OFFSET "Panama"
|
||||||
|
193+NLSRC_OFFSET "Portugal"
|
||||||
|
194+NLSRC_OFFSET "Papua New Guinea"
|
||||||
|
195+NLSRC_OFFSET "Palau"
|
||||||
|
196+NLSRC_OFFSET "Guinea-Bissau"
|
||||||
|
197+NLSRC_OFFSET "Qatar"
|
||||||
|
198+NLSRC_OFFSET "Reunion"
|
||||||
|
199+NLSRC_OFFSET "Marshall Islands"
|
||||||
|
200+NLSRC_OFFSET "Romania"
|
||||||
|
201+NLSRC_OFFSET "Philippines"
|
||||||
|
202+NLSRC_OFFSET "Puerto Rico"
|
||||||
|
203+NLSRC_OFFSET "Russia"
|
||||||
|
204+NLSRC_OFFSET "Rwanda"
|
||||||
|
205+NLSRC_OFFSET "Saudi Arabia"
|
||||||
|
206+NLSRC_OFFSET "St. Pierre and Miquelon"
|
||||||
|
207+NLSRC_OFFSET "St. Kitts and Nevis"
|
||||||
|
208+NLSRC_OFFSET "Seychelles"
|
||||||
|
209+NLSRC_OFFSET "South Africa"
|
||||||
|
210+NLSRC_OFFSET "Senegal"
|
||||||
|
212+NLSRC_OFFSET "Slovenia"
|
||||||
|
213+NLSRC_OFFSET "Sierra Leone"
|
||||||
|
214+NLSRC_OFFSET "San Marino"
|
||||||
|
215+NLSRC_OFFSET "Singapore"
|
||||||
|
216+NLSRC_OFFSET "Somalia"
|
||||||
|
217+NLSRC_OFFSET "Spain"
|
||||||
|
218+NLSRC_OFFSET "St. Lucia"
|
||||||
|
219+NLSRC_OFFSET "Sudan"
|
||||||
|
220+NLSRC_OFFSET "Svalbard"
|
||||||
|
221+NLSRC_OFFSET "Sweden"
|
||||||
|
222+NLSRC_OFFSET "Syria"
|
||||||
|
223+NLSRC_OFFSET "Switzerland"
|
||||||
|
224+NLSRC_OFFSET "United Arab Emirates"
|
||||||
|
225+NLSRC_OFFSET "Trinidad and Tobago"
|
||||||
|
227+NLSRC_OFFSET "Thailand"
|
||||||
|
228+NLSRC_OFFSET "Tajikistan"
|
||||||
|
231+NLSRC_OFFSET "Tonga"
|
||||||
|
232+NLSRC_OFFSET "Togo"
|
||||||
|
233+NLSRC_OFFSET "São Tomé and Príncipe"
|
||||||
|
234+NLSRC_OFFSET "Tunisia"
|
||||||
|
235+NLSRC_OFFSET "Turkey"
|
||||||
|
236+NLSRC_OFFSET "Tuvalu"
|
||||||
|
237+NLSRC_OFFSET "Taiwan"
|
||||||
|
238+NLSRC_OFFSET "Turkmenistan"
|
||||||
|
239+NLSRC_OFFSET "Tanzania"
|
||||||
|
240+NLSRC_OFFSET "Uganda"
|
||||||
|
241+NLSRC_OFFSET "Ukraine"
|
||||||
|
242+NLSRC_OFFSET "United Kingdom"
|
||||||
|
244+NLSRC_OFFSET "United States"
|
||||||
|
245+NLSRC_OFFSET "Burkina Faso"
|
||||||
|
246+NLSRC_OFFSET "Uruguay"
|
||||||
|
247+NLSRC_OFFSET "Uzbekistan"
|
||||||
|
248+NLSRC_OFFSET "St. Vincent and the Grenadines"
|
||||||
|
249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
|
||||||
|
251+NLSRC_OFFSET "Vietnam"
|
||||||
|
252+NLSRC_OFFSET "Virgin Islands"
|
||||||
|
253+NLSRC_OFFSET "Vatican City"
|
||||||
|
254+NLSRC_OFFSET "Namibia"
|
||||||
|
257+NLSRC_OFFSET "Western Sahara (disputed)"
|
||||||
|
258+NLSRC_OFFSET "Wake Island"
|
||||||
|
259+NLSRC_OFFSET "Samoa"
|
||||||
|
260+NLSRC_OFFSET "Swaziland"
|
||||||
|
261+NLSRC_OFFSET "Yemen"
|
||||||
|
263+NLSRC_OFFSET "Zambia"
|
||||||
|
264+NLSRC_OFFSET "Zimbabwe"
|
||||||
|
269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
|
||||||
|
270+NLSRC_OFFSET "Montenegro"
|
||||||
|
271+NLSRC_OFFSET "Serbia"
|
||||||
|
273+NLSRC_OFFSET "Curaçao"
|
||||||
|
276+NLSRC_OFFSET "South Sudan"
|
||||||
|
300+NLSRC_OFFSET "Anguilla"
|
||||||
|
301+NLSRC_OFFSET "Antarctica"
|
||||||
|
302+NLSRC_OFFSET "Aruba"
|
||||||
|
303+NLSRC_OFFSET "Ascension Island"
|
||||||
|
304+NLSRC_OFFSET "Ashmore and Cartier Islands"
|
||||||
|
305+NLSRC_OFFSET "Baker Island"
|
||||||
|
306+NLSRC_OFFSET "Bouvet Island"
|
||||||
|
307+NLSRC_OFFSET "Cayman Islands"
|
||||||
|
308+NLSRC_OFFSET "Channel Islands"
|
||||||
|
309+NLSRC_OFFSET "Christmas Island"
|
||||||
|
310+NLSRC_OFFSET "Clipperton Island"
|
||||||
|
311+NLSRC_OFFSET "Cocos (Keeling) Islands"
|
||||||
|
312+NLSRC_OFFSET "Cook Islands"
|
||||||
|
313+NLSRC_OFFSET "Coral Sea Islands"
|
||||||
|
314+NLSRC_OFFSET "Diego Garcia"
|
||||||
|
315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
|
||||||
|
317+NLSRC_OFFSET "French Guiana"
|
||||||
|
318+NLSRC_OFFSET "French Polynesia"
|
||||||
|
319+NLSRC_OFFSET "French Southern and Antarctic Lands"
|
||||||
|
321+NLSRC_OFFSET "Guadeloupe"
|
||||||
|
322+NLSRC_OFFSET "Guam"
|
||||||
|
323+NLSRC_OFFSET "Guantanamo Bay"
|
||||||
|
324+NLSRC_OFFSET "Guernsey"
|
||||||
|
325+NLSRC_OFFSET "Heard Island and McDonald Islands"
|
||||||
|
326+NLSRC_OFFSET "Howland Island"
|
||||||
|
327+NLSRC_OFFSET "Jarvis Island"
|
||||||
|
328+NLSRC_OFFSET "Jersey"
|
||||||
|
329+NLSRC_OFFSET "Kingman Reef"
|
||||||
|
330+NLSRC_OFFSET "Martinique"
|
||||||
|
331+NLSRC_OFFSET "Mayotte"
|
||||||
|
332+NLSRC_OFFSET "Montserrat"
|
||||||
|
333+NLSRC_OFFSET "Netherlands Antilles (Former)"
|
||||||
|
334+NLSRC_OFFSET "New Caledonia"
|
||||||
|
335+NLSRC_OFFSET "Niue"
|
||||||
|
336+NLSRC_OFFSET "Norfolk Island"
|
||||||
|
337+NLSRC_OFFSET "Northern Mariana Islands"
|
||||||
|
338+NLSRC_OFFSET "Palmyra Atoll"
|
||||||
|
339+NLSRC_OFFSET "Pitcairn Islands"
|
||||||
|
340+NLSRC_OFFSET "Rota Island"
|
||||||
|
341+NLSRC_OFFSET "Saipan"
|
||||||
|
342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
|
||||||
|
343+NLSRC_OFFSET "St. Helena"
|
||||||
|
346+NLSRC_OFFSET "Tinian Island"
|
||||||
|
347+NLSRC_OFFSET "Tokelau"
|
||||||
|
348+NLSRC_OFFSET "Tristan da Cunha"
|
||||||
|
349+NLSRC_OFFSET "Turks and Caicos Islands"
|
||||||
|
351+NLSRC_OFFSET "Virgin Islands, British"
|
||||||
|
352+NLSRC_OFFSET "Wallis and Futuna"
|
||||||
|
15126+NLSRC_OFFSET "Man, Isle of"
|
||||||
|
19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
|
||||||
|
21242+NLSRC_OFFSET "Midway Islands"
|
||||||
|
30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
|
||||||
|
31706+NLSRC_OFFSET "Saint Martin (French part)"
|
||||||
END
|
END
|
||||||
|
|
|
@ -158,4 +158,271 @@ BEGIN
|
||||||
|
|
||||||
52936 "52936 (HZ-GB2312 Китайська спрощена)"
|
52936 "52936 (HZ-GB2312 Китайська спрощена)"
|
||||||
54936 "54936 (GB18030 Китайська спрощена)"
|
54936 "54936 (GB18030 Китайська спрощена)"
|
||||||
|
|
||||||
|
/* Locations */
|
||||||
|
2+NLSRC_OFFSET "Antigua and Barbuda"
|
||||||
|
3+NLSRC_OFFSET "Afghanistan"
|
||||||
|
4+NLSRC_OFFSET "Algeria"
|
||||||
|
5+NLSRC_OFFSET "Azerbaijan"
|
||||||
|
6+NLSRC_OFFSET "Albania"
|
||||||
|
7+NLSRC_OFFSET "Armenia"
|
||||||
|
8+NLSRC_OFFSET "Andorra"
|
||||||
|
9+NLSRC_OFFSET "Angola"
|
||||||
|
10+NLSRC_OFFSET "American Samoa"
|
||||||
|
11+NLSRC_OFFSET "Argentina"
|
||||||
|
12+NLSRC_OFFSET "Australia"
|
||||||
|
14+NLSRC_OFFSET "Austria"
|
||||||
|
17+NLSRC_OFFSET "Bahrain"
|
||||||
|
18+NLSRC_OFFSET "Barbados"
|
||||||
|
19+NLSRC_OFFSET "Botswana"
|
||||||
|
20+NLSRC_OFFSET "Bermuda"
|
||||||
|
21+NLSRC_OFFSET "Belgium"
|
||||||
|
22+NLSRC_OFFSET "Bahamas, The"
|
||||||
|
23+NLSRC_OFFSET "Bangladesh"
|
||||||
|
24+NLSRC_OFFSET "Belize"
|
||||||
|
25+NLSRC_OFFSET "Bosnia and Herzegovina"
|
||||||
|
26+NLSRC_OFFSET "Bolivia"
|
||||||
|
27+NLSRC_OFFSET "Myanmar"
|
||||||
|
28+NLSRC_OFFSET "Benin"
|
||||||
|
29+NLSRC_OFFSET "Belarus"
|
||||||
|
30+NLSRC_OFFSET "Solomon Islands"
|
||||||
|
32+NLSRC_OFFSET "Brazil"
|
||||||
|
34+NLSRC_OFFSET "Bhutan"
|
||||||
|
35+NLSRC_OFFSET "Bulgaria"
|
||||||
|
38+NLSRC_OFFSET "Burundi"
|
||||||
|
39+NLSRC_OFFSET "Canada"
|
||||||
|
40+NLSRC_OFFSET "Cambodia"
|
||||||
|
41+NLSRC_OFFSET "Chad"
|
||||||
|
42+NLSRC_OFFSET "Sri Lanka"
|
||||||
|
43+NLSRC_OFFSET "Congo"
|
||||||
|
44+NLSRC_OFFSET "Congo (DRC)"
|
||||||
|
45+NLSRC_OFFSET "China"
|
||||||
|
46+NLSRC_OFFSET "Chile"
|
||||||
|
49+NLSRC_OFFSET "Cameroon"
|
||||||
|
50+NLSRC_OFFSET "Comoros"
|
||||||
|
51+NLSRC_OFFSET "Colombia"
|
||||||
|
54+NLSRC_OFFSET "Costa Rica"
|
||||||
|
55+NLSRC_OFFSET "Central African Republic"
|
||||||
|
56+NLSRC_OFFSET "Cuba"
|
||||||
|
57+NLSRC_OFFSET "Cape Verde"
|
||||||
|
59+NLSRC_OFFSET "Cyprus"
|
||||||
|
61+NLSRC_OFFSET "Denmark"
|
||||||
|
62+NLSRC_OFFSET "Djibouti"
|
||||||
|
63+NLSRC_OFFSET "Dominica"
|
||||||
|
65+NLSRC_OFFSET "Dominican Republic"
|
||||||
|
66+NLSRC_OFFSET "Ecuador"
|
||||||
|
67+NLSRC_OFFSET "Egypt"
|
||||||
|
68+NLSRC_OFFSET "Ireland"
|
||||||
|
69+NLSRC_OFFSET "Equatorial Guinea"
|
||||||
|
70+NLSRC_OFFSET "Estonia"
|
||||||
|
71+NLSRC_OFFSET "Eritrea"
|
||||||
|
72+NLSRC_OFFSET "El Salvador"
|
||||||
|
73+NLSRC_OFFSET "Ethiopia"
|
||||||
|
75+NLSRC_OFFSET "Czech Republic"
|
||||||
|
77+NLSRC_OFFSET "Finland"
|
||||||
|
78+NLSRC_OFFSET "Fiji Islands"
|
||||||
|
80+NLSRC_OFFSET "Micronesia"
|
||||||
|
81+NLSRC_OFFSET "Faroe Islands"
|
||||||
|
84+NLSRC_OFFSET "France"
|
||||||
|
86+NLSRC_OFFSET "Gambia, The"
|
||||||
|
87+NLSRC_OFFSET "Gabon"
|
||||||
|
88+NLSRC_OFFSET "Georgia"
|
||||||
|
89+NLSRC_OFFSET "Ghana"
|
||||||
|
90+NLSRC_OFFSET "Gibraltar"
|
||||||
|
91+NLSRC_OFFSET "Grenada"
|
||||||
|
93+NLSRC_OFFSET "Greenland"
|
||||||
|
94+NLSRC_OFFSET "Germany"
|
||||||
|
98+NLSRC_OFFSET "Greece"
|
||||||
|
99+NLSRC_OFFSET "Guatemala"
|
||||||
|
100+NLSRC_OFFSET "Guinea"
|
||||||
|
101+NLSRC_OFFSET "Guyana"
|
||||||
|
103+NLSRC_OFFSET "Haiti"
|
||||||
|
104+NLSRC_OFFSET "Hong Kong S.A.R."
|
||||||
|
106+NLSRC_OFFSET "Honduras"
|
||||||
|
108+NLSRC_OFFSET "Croatia"
|
||||||
|
109+NLSRC_OFFSET "Hungary"
|
||||||
|
110+NLSRC_OFFSET "Iceland"
|
||||||
|
111+NLSRC_OFFSET "Indonesia"
|
||||||
|
113+NLSRC_OFFSET "India"
|
||||||
|
114+NLSRC_OFFSET "British Indian Ocean Territory"
|
||||||
|
116+NLSRC_OFFSET "Iran"
|
||||||
|
117+NLSRC_OFFSET "Israel"
|
||||||
|
118+NLSRC_OFFSET "Italy"
|
||||||
|
119+NLSRC_OFFSET "Côte d'Ivoire"
|
||||||
|
121+NLSRC_OFFSET "Iraq"
|
||||||
|
122+NLSRC_OFFSET "Japan"
|
||||||
|
124+NLSRC_OFFSET "Jamaica"
|
||||||
|
125+NLSRC_OFFSET "Jan Mayen"
|
||||||
|
126+NLSRC_OFFSET "Jordan"
|
||||||
|
127+NLSRC_OFFSET "Johnston Atoll"
|
||||||
|
129+NLSRC_OFFSET "Kenya"
|
||||||
|
130+NLSRC_OFFSET "Kyrgyzstan"
|
||||||
|
131+NLSRC_OFFSET "North Korea"
|
||||||
|
133+NLSRC_OFFSET "Kiribati"
|
||||||
|
134+NLSRC_OFFSET "Korea"
|
||||||
|
136+NLSRC_OFFSET "Kuwait"
|
||||||
|
137+NLSRC_OFFSET "Kazakhstan"
|
||||||
|
138+NLSRC_OFFSET "Laos"
|
||||||
|
139+NLSRC_OFFSET "Lebanon"
|
||||||
|
140+NLSRC_OFFSET "Latvia"
|
||||||
|
141+NLSRC_OFFSET "Lithuania"
|
||||||
|
142+NLSRC_OFFSET "Liberia"
|
||||||
|
143+NLSRC_OFFSET "Slovakia"
|
||||||
|
145+NLSRC_OFFSET "Liechtenstein"
|
||||||
|
146+NLSRC_OFFSET "Lesotho"
|
||||||
|
147+NLSRC_OFFSET "Luxembourg"
|
||||||
|
148+NLSRC_OFFSET "Libya"
|
||||||
|
149+NLSRC_OFFSET "Madagascar"
|
||||||
|
151+NLSRC_OFFSET "Macao S.A.R."
|
||||||
|
152+NLSRC_OFFSET "Moldova"
|
||||||
|
154+NLSRC_OFFSET "Mongolia"
|
||||||
|
156+NLSRC_OFFSET "Malawi"
|
||||||
|
157+NLSRC_OFFSET "Mali"
|
||||||
|
158+NLSRC_OFFSET "Monaco"
|
||||||
|
159+NLSRC_OFFSET "Morocco"
|
||||||
|
160+NLSRC_OFFSET "Mauritius"
|
||||||
|
162+NLSRC_OFFSET "Mauritania"
|
||||||
|
163+NLSRC_OFFSET "Malta"
|
||||||
|
164+NLSRC_OFFSET "Oman"
|
||||||
|
165+NLSRC_OFFSET "Maldives"
|
||||||
|
166+NLSRC_OFFSET "Mexico"
|
||||||
|
167+NLSRC_OFFSET "Malaysia"
|
||||||
|
168+NLSRC_OFFSET "Mozambique"
|
||||||
|
173+NLSRC_OFFSET "Niger"
|
||||||
|
174+NLSRC_OFFSET "Vanuatu"
|
||||||
|
175+NLSRC_OFFSET "Nigeria"
|
||||||
|
176+NLSRC_OFFSET "Netherlands"
|
||||||
|
177+NLSRC_OFFSET "Norway"
|
||||||
|
178+NLSRC_OFFSET "Nepal"
|
||||||
|
180+NLSRC_OFFSET "Nauru"
|
||||||
|
181+NLSRC_OFFSET "Suriname"
|
||||||
|
182+NLSRC_OFFSET "Nicaragua"
|
||||||
|
183+NLSRC_OFFSET "New Zealand"
|
||||||
|
184+NLSRC_OFFSET "Palestinian Authority"
|
||||||
|
185+NLSRC_OFFSET "Paraguay"
|
||||||
|
187+NLSRC_OFFSET "Peru"
|
||||||
|
190+NLSRC_OFFSET "Pakistan"
|
||||||
|
191+NLSRC_OFFSET "Poland"
|
||||||
|
192+NLSRC_OFFSET "Panama"
|
||||||
|
193+NLSRC_OFFSET "Portugal"
|
||||||
|
194+NLSRC_OFFSET "Papua New Guinea"
|
||||||
|
195+NLSRC_OFFSET "Palau"
|
||||||
|
196+NLSRC_OFFSET "Guinea-Bissau"
|
||||||
|
197+NLSRC_OFFSET "Qatar"
|
||||||
|
198+NLSRC_OFFSET "Reunion"
|
||||||
|
199+NLSRC_OFFSET "Marshall Islands"
|
||||||
|
200+NLSRC_OFFSET "Romania"
|
||||||
|
201+NLSRC_OFFSET "Philippines"
|
||||||
|
202+NLSRC_OFFSET "Puerto Rico"
|
||||||
|
203+NLSRC_OFFSET "Russia"
|
||||||
|
204+NLSRC_OFFSET "Rwanda"
|
||||||
|
205+NLSRC_OFFSET "Saudi Arabia"
|
||||||
|
206+NLSRC_OFFSET "St. Pierre and Miquelon"
|
||||||
|
207+NLSRC_OFFSET "St. Kitts and Nevis"
|
||||||
|
208+NLSRC_OFFSET "Seychelles"
|
||||||
|
209+NLSRC_OFFSET "South Africa"
|
||||||
|
210+NLSRC_OFFSET "Senegal"
|
||||||
|
212+NLSRC_OFFSET "Slovenia"
|
||||||
|
213+NLSRC_OFFSET "Sierra Leone"
|
||||||
|
214+NLSRC_OFFSET "San Marino"
|
||||||
|
215+NLSRC_OFFSET "Singapore"
|
||||||
|
216+NLSRC_OFFSET "Somalia"
|
||||||
|
217+NLSRC_OFFSET "Spain"
|
||||||
|
218+NLSRC_OFFSET "St. Lucia"
|
||||||
|
219+NLSRC_OFFSET "Sudan"
|
||||||
|
220+NLSRC_OFFSET "Svalbard"
|
||||||
|
221+NLSRC_OFFSET "Sweden"
|
||||||
|
222+NLSRC_OFFSET "Syria"
|
||||||
|
223+NLSRC_OFFSET "Switzerland"
|
||||||
|
224+NLSRC_OFFSET "United Arab Emirates"
|
||||||
|
225+NLSRC_OFFSET "Trinidad and Tobago"
|
||||||
|
227+NLSRC_OFFSET "Thailand"
|
||||||
|
228+NLSRC_OFFSET "Tajikistan"
|
||||||
|
231+NLSRC_OFFSET "Tonga"
|
||||||
|
232+NLSRC_OFFSET "Togo"
|
||||||
|
233+NLSRC_OFFSET "São Tomé and Príncipe"
|
||||||
|
234+NLSRC_OFFSET "Tunisia"
|
||||||
|
235+NLSRC_OFFSET "Turkey"
|
||||||
|
236+NLSRC_OFFSET "Tuvalu"
|
||||||
|
237+NLSRC_OFFSET "Taiwan"
|
||||||
|
238+NLSRC_OFFSET "Turkmenistan"
|
||||||
|
239+NLSRC_OFFSET "Tanzania"
|
||||||
|
240+NLSRC_OFFSET "Uganda"
|
||||||
|
241+NLSRC_OFFSET "Ukraine"
|
||||||
|
242+NLSRC_OFFSET "United Kingdom"
|
||||||
|
244+NLSRC_OFFSET "United States"
|
||||||
|
245+NLSRC_OFFSET "Burkina Faso"
|
||||||
|
246+NLSRC_OFFSET "Uruguay"
|
||||||
|
247+NLSRC_OFFSET "Uzbekistan"
|
||||||
|
248+NLSRC_OFFSET "St. Vincent and the Grenadines"
|
||||||
|
249+NLSRC_OFFSET "Bolivarian Republic of Venezuela"
|
||||||
|
251+NLSRC_OFFSET "Vietnam"
|
||||||
|
252+NLSRC_OFFSET "Virgin Islands"
|
||||||
|
253+NLSRC_OFFSET "Vatican City"
|
||||||
|
254+NLSRC_OFFSET "Namibia"
|
||||||
|
257+NLSRC_OFFSET "Western Sahara (disputed)"
|
||||||
|
258+NLSRC_OFFSET "Wake Island"
|
||||||
|
259+NLSRC_OFFSET "Samoa"
|
||||||
|
260+NLSRC_OFFSET "Swaziland"
|
||||||
|
261+NLSRC_OFFSET "Yemen"
|
||||||
|
263+NLSRC_OFFSET "Zambia"
|
||||||
|
264+NLSRC_OFFSET "Zimbabwe"
|
||||||
|
269+NLSRC_OFFSET "Serbia and Montenegro (Former)"
|
||||||
|
270+NLSRC_OFFSET "Montenegro"
|
||||||
|
271+NLSRC_OFFSET "Serbia"
|
||||||
|
273+NLSRC_OFFSET "Curaçao"
|
||||||
|
276+NLSRC_OFFSET "South Sudan"
|
||||||
|
300+NLSRC_OFFSET "Anguilla"
|
||||||
|
301+NLSRC_OFFSET "Antarctica"
|
||||||
|
302+NLSRC_OFFSET "Aruba"
|
||||||
|
303+NLSRC_OFFSET "Ascension Island"
|
||||||
|
304+NLSRC_OFFSET "Ashmore and Cartier Islands"
|
||||||
|
305+NLSRC_OFFSET "Baker Island"
|
||||||
|
306+NLSRC_OFFSET "Bouvet Island"
|
||||||
|
307+NLSRC_OFFSET "Cayman Islands"
|
||||||
|
308+NLSRC_OFFSET "Channel Islands"
|
||||||
|
309+NLSRC_OFFSET "Christmas Island"
|
||||||
|
310+NLSRC_OFFSET "Clipperton Island"
|
||||||
|
311+NLSRC_OFFSET "Cocos (Keeling) Islands"
|
||||||
|
312+NLSRC_OFFSET "Cook Islands"
|
||||||
|
313+NLSRC_OFFSET "Coral Sea Islands"
|
||||||
|
314+NLSRC_OFFSET "Diego Garcia"
|
||||||
|
315+NLSRC_OFFSET "Falkland Islands (Islas Malvinas)"
|
||||||
|
317+NLSRC_OFFSET "French Guiana"
|
||||||
|
318+NLSRC_OFFSET "French Polynesia"
|
||||||
|
319+NLSRC_OFFSET "French Southern and Antarctic Lands"
|
||||||
|
321+NLSRC_OFFSET "Guadeloupe"
|
||||||
|
322+NLSRC_OFFSET "Guam"
|
||||||
|
323+NLSRC_OFFSET "Guantanamo Bay"
|
||||||
|
324+NLSRC_OFFSET "Guernsey"
|
||||||
|
325+NLSRC_OFFSET "Heard Island and McDonald Islands"
|
||||||
|
326+NLSRC_OFFSET "Howland Island"
|
||||||
|
327+NLSRC_OFFSET "Jarvis Island"
|
||||||
|
328+NLSRC_OFFSET "Jersey"
|
||||||
|
329+NLSRC_OFFSET "Kingman Reef"
|
||||||
|
330+NLSRC_OFFSET "Martinique"
|
||||||
|
331+NLSRC_OFFSET "Mayotte"
|
||||||
|
332+NLSRC_OFFSET "Montserrat"
|
||||||
|
333+NLSRC_OFFSET "Netherlands Antilles (Former)"
|
||||||
|
334+NLSRC_OFFSET "New Caledonia"
|
||||||
|
335+NLSRC_OFFSET "Niue"
|
||||||
|
336+NLSRC_OFFSET "Norfolk Island"
|
||||||
|
337+NLSRC_OFFSET "Northern Mariana Islands"
|
||||||
|
338+NLSRC_OFFSET "Palmyra Atoll"
|
||||||
|
339+NLSRC_OFFSET "Pitcairn Islands"
|
||||||
|
340+NLSRC_OFFSET "Rota Island"
|
||||||
|
341+NLSRC_OFFSET "Saipan"
|
||||||
|
342+NLSRC_OFFSET "South Georgia and the South Sandwich Islands"
|
||||||
|
343+NLSRC_OFFSET "St. Helena"
|
||||||
|
346+NLSRC_OFFSET "Tinian Island"
|
||||||
|
347+NLSRC_OFFSET "Tokelau"
|
||||||
|
348+NLSRC_OFFSET "Tristan da Cunha"
|
||||||
|
349+NLSRC_OFFSET "Turks and Caicos Islands"
|
||||||
|
351+NLSRC_OFFSET "Virgin Islands, British"
|
||||||
|
352+NLSRC_OFFSET "Wallis and Futuna"
|
||||||
|
15126+NLSRC_OFFSET "Man, Isle of"
|
||||||
|
19618+NLSRC_OFFSET "Macedonia, Former Yugoslav Republic of"
|
||||||
|
21242+NLSRC_OFFSET "Midway Islands"
|
||||||
|
30967+NLSRC_OFFSET "Sint Maarten (Dutch part)"
|
||||||
|
31706+NLSRC_OFFSET "Saint Martin (French part)"
|
||||||
END
|
END
|
||||||
|
|
|
@ -33,6 +33,8 @@ DEBUG_CHANNEL(nls);
|
||||||
extern int wine_fold_string(int flags, const WCHAR *src, int srclen, WCHAR *dst, int dstlen);
|
extern int wine_fold_string(int flags, const WCHAR *src, int srclen, WCHAR *dst, int dstlen);
|
||||||
extern int wine_get_sortkey(int flags, const WCHAR *src, int srclen, char *dst, int dstlen);
|
extern int wine_get_sortkey(int flags, const WCHAR *src, int srclen, char *dst, int dstlen);
|
||||||
extern int wine_compare_string(int flags, const WCHAR *str1, int len1, const WCHAR *str2, int len2);
|
extern int wine_compare_string(int flags, const WCHAR *str1, int len1, const WCHAR *str2, int len2);
|
||||||
|
extern DWORD GetLocalisedText(DWORD dwResId, WCHAR *lpszDest, DWORD dwDestSize);
|
||||||
|
#define NLSRC_OFFSET 5000 /* FIXME */
|
||||||
|
|
||||||
extern HMODULE kernel32_handle;
|
extern HMODULE kernel32_handle;
|
||||||
|
|
||||||
|
@ -2992,77 +2994,33 @@ BOOL WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW pUILangEnumProc, DWORD dwFlags
|
||||||
static int
|
static int
|
||||||
NLS_GetGeoFriendlyName(GEOID Location, LPWSTR szFriendlyName, int cchData)
|
NLS_GetGeoFriendlyName(GEOID Location, LPWSTR szFriendlyName, int cchData)
|
||||||
{
|
{
|
||||||
HANDLE hKey;
|
LPWSTR szBuffer;
|
||||||
WCHAR szPath[MAX_PATH];
|
|
||||||
UNICODE_STRING ValueName;
|
|
||||||
KEY_VALUE_PARTIAL_INFORMATION *info;
|
|
||||||
const int info_size = FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data);
|
|
||||||
DWORD dwSize;
|
DWORD dwSize;
|
||||||
NTSTATUS Status;
|
|
||||||
int Ret;
|
|
||||||
|
|
||||||
swprintf(szPath, L"\\REGISTRY\\Machine\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Country List\\%lu", Location);
|
/* FIXME: move *.nls resources out of kernel32 into locale.nls */
|
||||||
|
Location += NLSRC_OFFSET;
|
||||||
|
|
||||||
hKey = NLS_RegOpenKey(0, szPath);
|
if(cchData == 0)
|
||||||
if (!hKey)
|
return GetLocalisedText(Location, NULL, 0);
|
||||||
|
|
||||||
|
dwSize = cchData * sizeof(WCHAR);
|
||||||
|
szBuffer = HeapAlloc(GetProcessHeap(), 0, dwSize);
|
||||||
|
|
||||||
|
if (!szBuffer)
|
||||||
{
|
{
|
||||||
WARN("NLS_RegOpenKey() failed\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dwSize = info_size + cchData * sizeof(WCHAR);
|
|
||||||
|
|
||||||
if (!(info = HeapAlloc(GetProcessHeap(), 0, dwSize)))
|
|
||||||
{
|
|
||||||
NtClose(hKey);
|
|
||||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
RtlInitUnicodeString(&ValueName, L"Name");
|
if(GetLocalisedText(Location, szBuffer, dwSize))
|
||||||
|
|
||||||
Status = NtQueryValueKey(hKey, &ValueName, KeyValuePartialInformation,
|
|
||||||
(LPBYTE)info, dwSize, &dwSize);
|
|
||||||
|
|
||||||
if (!Status)
|
|
||||||
{
|
{
|
||||||
Ret = (dwSize - info_size) / sizeof(WCHAR);
|
memcpy(szFriendlyName, szBuffer, dwSize);
|
||||||
|
HeapFree(GetProcessHeap(), 0, szBuffer);
|
||||||
if (!Ret || ((WCHAR *)info->Data)[Ret-1])
|
return strlenW(szFriendlyName) + 1;
|
||||||
{
|
|
||||||
if (Ret < cchData || !szFriendlyName) Ret++;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
WARN("ERROR_INSUFFICIENT_BUFFER\n");
|
|
||||||
SetLastError(ERROR_INSUFFICIENT_BUFFER);
|
|
||||||
Ret = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Ret && szFriendlyName)
|
|
||||||
{
|
|
||||||
memcpy(szFriendlyName, info->Data, (Ret-1) * sizeof(WCHAR));
|
|
||||||
szFriendlyName[Ret-1] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (Status == STATUS_BUFFER_OVERFLOW && !szFriendlyName)
|
|
||||||
{
|
|
||||||
Ret = (dwSize - info_size) / sizeof(WCHAR) + 1;
|
|
||||||
}
|
|
||||||
else if (Status == STATUS_OBJECT_NAME_NOT_FOUND)
|
|
||||||
{
|
|
||||||
Ret = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
Ret = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NtClose(hKey);
|
HeapFree(GetProcessHeap(), 0, szBuffer);
|
||||||
HeapFree(GetProcessHeap(), 0, info);
|
return 0;
|
||||||
|
|
||||||
return Ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct geoinfo_t *get_geoinfo_dataptr(GEOID geoid)
|
static const struct geoinfo_t *get_geoinfo_dataptr(GEOID geoid)
|
||||||
|
|
|
@ -1679,8 +1679,8 @@ static INT WideCharToUtf7(LPCWSTR pszWide, INT cchWide, LPSTR pszUtf7, INT cchUt
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL
|
DWORD
|
||||||
GetLocalisedText(DWORD dwResId, WCHAR *lpszDest)
|
GetLocalisedText(DWORD dwResId, WCHAR *lpszDest, DWORD dwDestSize)
|
||||||
{
|
{
|
||||||
HRSRC hrsrc;
|
HRSRC hrsrc;
|
||||||
LCID lcid;
|
LCID lcid;
|
||||||
|
@ -1704,6 +1704,16 @@ GetLocalisedText(DWORD dwResId, WCHAR *lpszDest)
|
||||||
(LPWSTR)RT_STRING,
|
(LPWSTR)RT_STRING,
|
||||||
MAKEINTRESOURCEW((dwId >> 4) + 1),
|
MAKEINTRESOURCEW((dwId >> 4) + 1),
|
||||||
langId);
|
langId);
|
||||||
|
|
||||||
|
/* english fallback */
|
||||||
|
if(!hrsrc)
|
||||||
|
{
|
||||||
|
hrsrc = FindResourceExW(hCurrentModule,
|
||||||
|
(LPWSTR)RT_STRING,
|
||||||
|
MAKEINTRESOURCEW((dwId >> 4) + 1),
|
||||||
|
MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||||
|
}
|
||||||
|
|
||||||
if (hrsrc)
|
if (hrsrc)
|
||||||
{
|
{
|
||||||
HGLOBAL hmem = LoadResource(hCurrentModule, hrsrc);
|
HGLOBAL hmem = LoadResource(hCurrentModule, hrsrc);
|
||||||
|
@ -1712,18 +1722,32 @@ GetLocalisedText(DWORD dwResId, WCHAR *lpszDest)
|
||||||
{
|
{
|
||||||
const WCHAR *p;
|
const WCHAR *p;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
unsigned int len;
|
||||||
|
|
||||||
p = LockResource(hmem);
|
p = LockResource(hmem);
|
||||||
|
|
||||||
for (i = 0; i < (dwId & 0x0f); i++) p += *p + 1;
|
for (i = 0; i < (dwId & 0x0f); i++) p += *p + 1;
|
||||||
|
|
||||||
memcpy(lpszDest, p + 1, *p * sizeof(WCHAR));
|
if(dwDestSize == 0)
|
||||||
|
return *p + 1;
|
||||||
|
|
||||||
|
len = *p * sizeof(WCHAR);
|
||||||
|
|
||||||
|
if(len + sizeof(WCHAR) > dwDestSize)
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INSUFFICIENT_BUFFER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(lpszDest, p + 1, len);
|
||||||
lpszDest[*p] = '\0';
|
lpszDest[*p] = '\0';
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT1("Could not get codepage name. dwResId = %lu\n", dwResId);
|
DPRINT1("Resource not found: dwResId = %lu\n", dwResId);
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1799,7 +1823,7 @@ GetCPInfoExW(UINT CodePage,
|
||||||
{
|
{
|
||||||
lpCPInfoEx->CodePage = CP_UTF7;
|
lpCPInfoEx->CodePage = CP_UTF7;
|
||||||
lpCPInfoEx->UnicodeDefaultChar = 0x3f;
|
lpCPInfoEx->UnicodeDefaultChar = 0x3f;
|
||||||
return GetLocalisedText((DWORD)CodePage, lpCPInfoEx->CodePageName);
|
return GetLocalisedText((DWORD)CodePage, lpCPInfoEx->CodePageName, sizeof(lpCPInfoEx->CodePageName)) != 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1807,7 +1831,7 @@ GetCPInfoExW(UINT CodePage,
|
||||||
{
|
{
|
||||||
lpCPInfoEx->CodePage = CP_UTF8;
|
lpCPInfoEx->CodePage = CP_UTF8;
|
||||||
lpCPInfoEx->UnicodeDefaultChar = 0x3f;
|
lpCPInfoEx->UnicodeDefaultChar = 0x3f;
|
||||||
return GetLocalisedText((DWORD)CodePage, lpCPInfoEx->CodePageName);
|
return GetLocalisedText((DWORD)CodePage, lpCPInfoEx->CodePageName, sizeof(lpCPInfoEx->CodePageName)) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -1824,7 +1848,7 @@ GetCPInfoExW(UINT CodePage,
|
||||||
|
|
||||||
lpCPInfoEx->CodePage = CodePageEntry->CodePageTable.CodePage;
|
lpCPInfoEx->CodePage = CodePageEntry->CodePageTable.CodePage;
|
||||||
lpCPInfoEx->UnicodeDefaultChar = CodePageEntry->CodePageTable.UniDefaultChar;
|
lpCPInfoEx->UnicodeDefaultChar = CodePageEntry->CodePageTable.UniDefaultChar;
|
||||||
return GetLocalisedText(CodePageEntry->CodePageTable.CodePage, lpCPInfoEx->CodePageName);
|
return GetLocalisedText(CodePageEntry->CodePageTable.CodePage, lpCPInfoEx->CodePageName, sizeof(lpCPInfoEx->CodePageName)) != 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <winsvc.h>
|
#include <winsvc.h>
|
||||||
#include <userenv.h>
|
#include <userenv.h>
|
||||||
#include <ndk/sefuncs.h>
|
#include <ndk/sefuncs.h>
|
||||||
|
#include <strsafe.h>
|
||||||
|
|
||||||
HINSTANCE hDllInstance;
|
HINSTANCE hDllInstance;
|
||||||
|
|
||||||
|
@ -778,15 +779,19 @@ CreateProfile(
|
||||||
pProfile->dwType = WLX_PROFILE_TYPE_V2_0;
|
pProfile->dwType = WLX_PROFILE_TYPE_V2_0;
|
||||||
pProfile->pszProfile = ProfilePath;
|
pProfile->pszProfile = ProfilePath;
|
||||||
|
|
||||||
lpEnvironment = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
cbSize = sizeof(L"LOGONSERVER=\\\\") +
|
||||||
(wcslen(pgContext->Domain)+ 14 + 1) * sizeof(WCHAR));
|
wcslen(pgContext->Domain) * sizeof(WCHAR) +
|
||||||
|
sizeof(UNICODE_NULL);
|
||||||
|
lpEnvironment = HeapAlloc(GetProcessHeap(), 0, cbSize);
|
||||||
if (!lpEnvironment)
|
if (!lpEnvironment)
|
||||||
{
|
{
|
||||||
WARN("HeapAlloc() failed\n");
|
WARN("HeapAlloc() failed\n");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
wsprintfW(lpEnvironment, L"LOGONSERVER=\\\\%s", pgContext->Domain);
|
StringCbPrintfW(lpEnvironment, cbSize, L"LOGONSERVER=\\\\%ls", pgContext->Domain);
|
||||||
|
ASSERT(wcslen(lpEnvironment) == cbSize / sizeof(WCHAR) - 2);
|
||||||
|
lpEnvironment[cbSize / sizeof(WCHAR) - 1] = UNICODE_NULL;
|
||||||
|
|
||||||
pProfile->pszEnvironment = lpEnvironment;
|
pProfile->pszEnvironment = lpEnvironment;
|
||||||
|
|
||||||
|
|
|
@ -280,7 +280,9 @@ PopulateCustomPathCombo(
|
||||||
TRACE("RegQueryValueEx() failed with error 0x%lx\n", rc);
|
TRACE("RegQueryValueEx() failed with error 0x%lx\n", rc);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
Buffer[dwPathLength] = Buffer[dwPathLength + 1] = '\0';
|
|
||||||
|
Buffer[dwPathLength / sizeof(WCHAR)] = UNICODE_NULL;
|
||||||
|
Buffer[dwPathLength / sizeof(WCHAR) + 1] = UNICODE_NULL;
|
||||||
|
|
||||||
/* Populate combo box */
|
/* Populate combo box */
|
||||||
for (Path = Buffer; *Path; Path += wcslen(Path) + 1)
|
for (Path = Buffer; *Path; Path += wcslen(Path) + 1)
|
||||||
|
@ -305,7 +307,7 @@ SaveCustomPath(
|
||||||
LPWSTR Buffer = NULL;
|
LPWSTR Buffer = NULL;
|
||||||
LPWSTR pBuffer; /* Pointer into Buffer */
|
LPWSTR pBuffer; /* Pointer into Buffer */
|
||||||
int ItemsCount, Length;
|
int ItemsCount, Length;
|
||||||
DWORD i;
|
int i;
|
||||||
DWORD TotalLength = 0;
|
DWORD TotalLength = 0;
|
||||||
BOOL UseCustomPath = TRUE;
|
BOOL UseCustomPath = TRUE;
|
||||||
HKEY hKey = NULL;
|
HKEY hKey = NULL;
|
||||||
|
|
|
@ -1334,6 +1334,14 @@ COpenWithMenu::Initialize(LPCITEMIDLIST pidlFolder,
|
||||||
pidlFolder2 = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[0]);
|
pidlFolder2 = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[0]);
|
||||||
pidlChild = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[1]);
|
pidlChild = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[1]);
|
||||||
|
|
||||||
|
if (!_ILIsValue(pidlChild))
|
||||||
|
{
|
||||||
|
TRACE("pidl is not a file\n");
|
||||||
|
GlobalUnlock(medium.hGlobal);
|
||||||
|
GlobalFree(medium.hGlobal);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
pidl = ILCombine(pidlFolder2, pidlChild);
|
pidl = ILCombine(pidlFolder2, pidlChild);
|
||||||
|
|
||||||
GlobalUnlock(medium.hGlobal);
|
GlobalUnlock(medium.hGlobal);
|
||||||
|
@ -1344,12 +1352,6 @@ COpenWithMenu::Initialize(LPCITEMIDLIST pidlFolder,
|
||||||
ERR("no mem\n");
|
ERR("no mem\n");
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
if (!_ILIsValue(pidlChild))
|
|
||||||
{
|
|
||||||
TRACE("pidl is not a file\n");
|
|
||||||
SHFree((void*)pidl);
|
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!SHGetPathFromIDListW(pidl, m_wszPath))
|
if (!SHGetPathFromIDListW(pidl, m_wszPath))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1590,14 +1590,18 @@ static void move_to_dir(LPSHFILEOPSTRUCTW lpFileOp, const FILE_ENTRY *feFrom, co
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the FO_MOVE operation */
|
/* the FO_MOVE operation */
|
||||||
static HRESULT move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const FILE_LIST *flTo)
|
static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const FILE_LIST *flTo)
|
||||||
{
|
{
|
||||||
DWORD i;
|
DWORD i;
|
||||||
|
INT mismatched = 0;
|
||||||
const FILE_ENTRY *entryToMove;
|
const FILE_ENTRY *entryToMove;
|
||||||
const FILE_ENTRY *fileDest;
|
const FILE_ENTRY *fileDest;
|
||||||
|
|
||||||
if (!flFrom->dwNumFiles || !flTo->dwNumFiles)
|
if (!flFrom->dwNumFiles)
|
||||||
return ERROR_CANCELLED;
|
return ERROR_SUCCESS;
|
||||||
|
|
||||||
|
if (!flTo->dwNumFiles)
|
||||||
|
return ERROR_FILE_NOT_FOUND;
|
||||||
|
|
||||||
if (!(lpFileOp->fFlags & FOF_MULTIDESTFILES) &&
|
if (!(lpFileOp->fFlags & FOF_MULTIDESTFILES) &&
|
||||||
flTo->dwNumFiles > 1 && flFrom->dwNumFiles > 1)
|
flTo->dwNumFiles > 1 && flFrom->dwNumFiles > 1)
|
||||||
|
@ -1615,29 +1619,44 @@ static HRESULT move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, c
|
||||||
if (!PathFileExistsW(flTo->feFiles[0].szDirectory))
|
if (!PathFileExistsW(flTo->feFiles[0].szDirectory))
|
||||||
return ERROR_CANCELLED;
|
return ERROR_CANCELLED;
|
||||||
|
|
||||||
if ((lpFileOp->fFlags & FOF_MULTIDESTFILES) &&
|
if (lpFileOp->fFlags & FOF_MULTIDESTFILES)
|
||||||
flFrom->dwNumFiles != flTo->dwNumFiles)
|
mismatched = flFrom->dwNumFiles - flTo->dwNumFiles;
|
||||||
{
|
|
||||||
return ERROR_CANCELLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
fileDest = &flTo->feFiles[0];
|
fileDest = &flTo->feFiles[0];
|
||||||
for (i = 0; i < flFrom->dwNumFiles; i++)
|
for (i = 0; i < flFrom->dwNumFiles; i++)
|
||||||
{
|
{
|
||||||
entryToMove = &flFrom->feFiles[i];
|
entryToMove = &flFrom->feFiles[i];
|
||||||
|
|
||||||
if (lpFileOp->fFlags & FOF_MULTIDESTFILES)
|
|
||||||
fileDest = &flTo->feFiles[i];
|
|
||||||
|
|
||||||
if (!PathFileExistsW(fileDest->szDirectory))
|
if (!PathFileExistsW(fileDest->szDirectory))
|
||||||
return ERROR_CANCELLED;
|
return ERROR_CANCELLED;
|
||||||
|
|
||||||
|
if (lpFileOp->fFlags & FOF_MULTIDESTFILES)
|
||||||
|
{
|
||||||
|
if (i >= flTo->dwNumFiles)
|
||||||
|
break;
|
||||||
|
fileDest = &flTo->feFiles[i];
|
||||||
|
if (mismatched && !fileDest->bExists)
|
||||||
|
{
|
||||||
|
create_dest_dirs(flTo->feFiles[i].szFullPath);
|
||||||
|
flTo->feFiles[i].bExists = TRUE;
|
||||||
|
flTo->feFiles[i].attributes = FILE_ATTRIBUTE_DIRECTORY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (fileDest->bExists && IsAttribDir(fileDest->attributes))
|
if (fileDest->bExists && IsAttribDir(fileDest->attributes))
|
||||||
move_to_dir(lpFileOp, entryToMove, fileDest);
|
move_to_dir(lpFileOp, entryToMove, fileDest);
|
||||||
else
|
else
|
||||||
SHNotifyMoveFileW(entryToMove->szFullPath, fileDest->szFullPath, IsAttribDir(entryToMove->attributes));
|
SHNotifyMoveFileW(entryToMove->szFullPath, fileDest->szFullPath, IsAttribDir(entryToMove->attributes));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mismatched > 0)
|
||||||
|
{
|
||||||
|
if (flFrom->bAnyDirectories)
|
||||||
|
return DE_DESTSAMETREE;
|
||||||
|
else
|
||||||
|
return DE_SAMEFILE;
|
||||||
|
}
|
||||||
|
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ SetAccountDomain(LPCWSTR DomainName,
|
||||||
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
DPRINT1("SYSSETUP: SetAccountDomain\n");
|
DPRINT("SYSSETUP: SetAccountDomain\n");
|
||||||
|
|
||||||
memset(&ObjectAttributes, 0, sizeof(LSA_OBJECT_ATTRIBUTES));
|
memset(&ObjectAttributes, 0, sizeof(LSA_OBJECT_ATTRIBUTES));
|
||||||
ObjectAttributes.Length = sizeof(LSA_OBJECT_ATTRIBUTES);
|
ObjectAttributes.Length = sizeof(LSA_OBJECT_ATTRIBUTES);
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Modified for ReactOS and latest ACPICA
|
* Modified for ReactOS and latest ACPICA
|
||||||
* Copyright (C)2009 Samuel Serapion
|
* Copyright (C)2009 Samuel Serapion
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <precomp.h>
|
#include <precomp.h>
|
||||||
|
@ -219,11 +219,11 @@ acpi_bus_get_power (
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/*
|
/*
|
||||||
* Get the device's power state either directly (via _PSC) or
|
* Get the device's power state either directly (via _PSC) or
|
||||||
* indirectly (via power resources).
|
* indirectly (via power resources).
|
||||||
*/
|
*/
|
||||||
if (device->power.flags.explicit_get) {
|
if (device->power.flags.explicit_get) {
|
||||||
status = acpi_evaluate_integer(device->handle, "_PSC",
|
status = acpi_evaluate_integer(device->handle, "_PSC",
|
||||||
NULL, &psc);
|
NULL, &psc);
|
||||||
if (ACPI_FAILURE(status))
|
if (ACPI_FAILURE(status))
|
||||||
return_VALUE(AE_NOT_FOUND);
|
return_VALUE(AE_NOT_FOUND);
|
||||||
|
@ -305,7 +305,7 @@ acpi_bus_set_power (
|
||||||
* On transitions to a high-powered state we first apply power (via
|
* On transitions to a high-powered state we first apply power (via
|
||||||
* power resources) then evalute _PSx. Conversly for transitions to
|
* power resources) then evalute _PSx. Conversly for transitions to
|
||||||
* a lower-powered state.
|
* a lower-powered state.
|
||||||
*/
|
*/
|
||||||
if (state < device->power.state) {
|
if (state < device->power.state) {
|
||||||
if (device->power.flags.power_resources) {
|
if (device->power.flags.power_resources) {
|
||||||
result = acpi_power_transition(device, state);
|
result = acpi_power_transition(device, state);
|
||||||
|
@ -313,7 +313,7 @@ acpi_bus_set_power (
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
if (device->power.states[state].flags.explicit_set) {
|
if (device->power.states[state].flags.explicit_set) {
|
||||||
status = AcpiEvaluateObject(device->handle,
|
status = AcpiEvaluateObject(device->handle,
|
||||||
object_name, NULL, NULL);
|
object_name, NULL, NULL);
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
result = AE_NOT_FOUND;
|
result = AE_NOT_FOUND;
|
||||||
|
@ -323,7 +323,7 @@ acpi_bus_set_power (
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (device->power.states[state].flags.explicit_set) {
|
if (device->power.states[state].flags.explicit_set) {
|
||||||
status = AcpiEvaluateObject(device->handle,
|
status = AcpiEvaluateObject(device->handle,
|
||||||
object_name, NULL, NULL);
|
object_name, NULL, NULL);
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
result = AE_NOT_FOUND;
|
result = AE_NOT_FOUND;
|
||||||
|
@ -464,11 +464,11 @@ acpi_bus_generate_event_dpc(PKDPC Dpc,
|
||||||
struct acpi_device *device = SystemArgument1;
|
struct acpi_device *device = SystemArgument1;
|
||||||
ULONG_PTR TypeData = (ULONG_PTR)SystemArgument2;
|
ULONG_PTR TypeData = (ULONG_PTR)SystemArgument2;
|
||||||
KIRQL OldIrql;
|
KIRQL OldIrql;
|
||||||
|
|
||||||
event = ExAllocatePoolWithTag(NonPagedPool,sizeof(struct acpi_bus_event), 'IPCA');
|
event = ExAllocatePoolWithTag(NonPagedPool,sizeof(struct acpi_bus_event), 'IPCA');
|
||||||
if (!event)
|
if (!event)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sprintf(event->device_class, "%s", device->pnp.device_class);
|
sprintf(event->device_class, "%s", device->pnp.device_class);
|
||||||
sprintf(event->bus_id, "%s", device->pnp.bus_id);
|
sprintf(event->bus_id, "%s", device->pnp.bus_id);
|
||||||
event->type = (TypeData & 0xFF000000) >> 24;
|
event->type = (TypeData & 0xFF000000) >> 24;
|
||||||
|
@ -497,10 +497,10 @@ acpi_bus_generate_event (
|
||||||
/* drop event on the floor if no one's listening */
|
/* drop event on the floor if no one's listening */
|
||||||
if (!event_is_open)
|
if (!event_is_open)
|
||||||
return_VALUE(0);
|
return_VALUE(0);
|
||||||
|
|
||||||
/* Data shouldn't even get near 24 bits */
|
/* Data shouldn't even get near 24 bits */
|
||||||
ASSERT(!(data & 0xFF000000));
|
ASSERT(!(data & 0xFF000000));
|
||||||
|
|
||||||
TypeData = data;
|
TypeData = data;
|
||||||
TypeData |= type << 24;
|
TypeData |= type << 24;
|
||||||
|
|
||||||
|
@ -573,9 +573,9 @@ acpi_bus_receive_event (
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
acpi_bus_walk (
|
acpi_bus_walk (
|
||||||
struct acpi_device *start,
|
struct acpi_device *start,
|
||||||
acpi_bus_walk_callback callback,
|
acpi_bus_walk_callback callback,
|
||||||
int direction,
|
int direction,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
@ -707,7 +707,7 @@ acpi_bus_check_scope (ACPI_HANDLE handle)
|
||||||
* ---------------
|
* ---------------
|
||||||
* Callback for all 'system-level' device notifications (values 0x00-0x7F).
|
* Callback for all 'system-level' device notifications (values 0x00-0x7F).
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
acpi_bus_notify (
|
acpi_bus_notify (
|
||||||
ACPI_HANDLE handle,
|
ACPI_HANDLE handle,
|
||||||
UINT32 type,
|
UINT32 type,
|
||||||
|
@ -724,27 +724,27 @@ acpi_bus_notify (
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
|
||||||
case ACPI_NOTIFY_BUS_CHECK:
|
case ACPI_NOTIFY_BUS_CHECK:
|
||||||
DPRINT("Received BUS CHECK notification for device [%s]\n",
|
DPRINT("Received BUS CHECK notification for device [%s]\n",
|
||||||
device->pnp.bus_id);
|
device->pnp.bus_id);
|
||||||
acpi_bus_check_scope(handle);
|
acpi_bus_check_scope(handle);
|
||||||
/*
|
/*
|
||||||
* TBD: We'll need to outsource certain events to non-ACPI
|
* TBD: We'll need to outsource certain events to non-ACPI
|
||||||
* drivers via the device manager (device.c).
|
* drivers via the device manager (device.c).
|
||||||
*/
|
*/
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACPI_NOTIFY_DEVICE_CHECK:
|
case ACPI_NOTIFY_DEVICE_CHECK:
|
||||||
DPRINT("Received DEVICE CHECK notification for device [%s]\n",
|
DPRINT("Received DEVICE CHECK notification for device [%s]\n",
|
||||||
device->pnp.bus_id);
|
device->pnp.bus_id);
|
||||||
acpi_bus_check_device(handle);
|
acpi_bus_check_device(handle);
|
||||||
/*
|
/*
|
||||||
* TBD: We'll need to outsource certain events to non-ACPI
|
* TBD: We'll need to outsource certain events to non-ACPI
|
||||||
* drivers via the device manager (device.c).
|
* drivers via the device manager (device.c).
|
||||||
*/
|
*/
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACPI_NOTIFY_DEVICE_WAKE:
|
case ACPI_NOTIFY_DEVICE_WAKE:
|
||||||
DPRINT("Received DEVICE WAKE notification for device [%s]\n",
|
DPRINT("Received DEVICE WAKE notification for device [%s]\n",
|
||||||
device->pnp.bus_id);
|
device->pnp.bus_id);
|
||||||
acpi_bus_check_device(handle);
|
acpi_bus_check_device(handle);
|
||||||
/*
|
/*
|
||||||
|
@ -754,37 +754,37 @@ acpi_bus_notify (
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACPI_NOTIFY_EJECT_REQUEST:
|
case ACPI_NOTIFY_EJECT_REQUEST:
|
||||||
DPRINT1("Received EJECT REQUEST notification for device [%s]\n",
|
DPRINT1("Received EJECT REQUEST notification for device [%s]\n",
|
||||||
device->pnp.bus_id);
|
device->pnp.bus_id);
|
||||||
/* TBD */
|
/* TBD */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACPI_NOTIFY_DEVICE_CHECK_LIGHT:
|
case ACPI_NOTIFY_DEVICE_CHECK_LIGHT:
|
||||||
DPRINT1("Received DEVICE CHECK LIGHT notification for device [%s]\n",
|
DPRINT1("Received DEVICE CHECK LIGHT notification for device [%s]\n",
|
||||||
device->pnp.bus_id);
|
device->pnp.bus_id);
|
||||||
/* TBD: Exactly what does 'light' mean? */
|
/* TBD: Exactly what does 'light' mean? */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACPI_NOTIFY_FREQUENCY_MISMATCH:
|
case ACPI_NOTIFY_FREQUENCY_MISMATCH:
|
||||||
DPRINT1("Received FREQUENCY MISMATCH notification for device [%s]\n",
|
DPRINT1("Received FREQUENCY MISMATCH notification for device [%s]\n",
|
||||||
device->pnp.bus_id);
|
device->pnp.bus_id);
|
||||||
/* TBD */
|
/* TBD */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACPI_NOTIFY_BUS_MODE_MISMATCH:
|
case ACPI_NOTIFY_BUS_MODE_MISMATCH:
|
||||||
DPRINT1("Received BUS MODE MISMATCH notification for device [%s]\n",
|
DPRINT1("Received BUS MODE MISMATCH notification for device [%s]\n",
|
||||||
device->pnp.bus_id);
|
device->pnp.bus_id);
|
||||||
/* TBD */
|
/* TBD */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACPI_NOTIFY_POWER_FAULT:
|
case ACPI_NOTIFY_POWER_FAULT:
|
||||||
DPRINT1("Received POWER FAULT notification for device [%s]\n",
|
DPRINT1("Received POWER FAULT notification for device [%s]\n",
|
||||||
device->pnp.bus_id);
|
device->pnp.bus_id);
|
||||||
/* TBD */
|
/* TBD */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
DPRINT1("Received unknown/unsupported notification [%08x]\n",
|
DPRINT1("Received unknown/unsupported notification [%08x]\n",
|
||||||
type);
|
type);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -810,7 +810,7 @@ static FAST_MUTEX acpi_bus_drivers_lock;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpi_bus_match
|
* acpi_bus_match
|
||||||
* --------------
|
* --------------
|
||||||
* Checks the device's hardware (_HID) or compatible (_CID) ids to see if it
|
* Checks the device's hardware (_HID) or compatible (_CID) ids to see if it
|
||||||
* matches the specified driver's criteria.
|
* matches the specified driver's criteria.
|
||||||
|
@ -840,20 +840,20 @@ acpi_bus_match (
|
||||||
error = -2;
|
error = -2;
|
||||||
|
|
||||||
Done:
|
Done:
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpi_bus_driver_init
|
* acpi_bus_driver_init
|
||||||
* --------------------
|
* --------------------
|
||||||
* Used to initialize a device via its device driver. Called whenever a
|
* Used to initialize a device via its device driver. Called whenever a
|
||||||
* driver is bound to a device. Invokes the driver's add() and start() ops.
|
* driver is bound to a device. Invokes the driver's add() and start() ops.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
acpi_bus_driver_init (
|
acpi_bus_driver_init (
|
||||||
struct acpi_device *device,
|
struct acpi_device *device,
|
||||||
struct acpi_driver *driver)
|
struct acpi_driver *driver)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
@ -896,15 +896,15 @@ acpi_bus_driver_init (
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpi_bus_attach
|
* acpi_bus_attach
|
||||||
* -------------
|
* -------------
|
||||||
* Callback for acpi_bus_walk() used to find devices that match a specific
|
* Callback for acpi_bus_walk() used to find devices that match a specific
|
||||||
* driver's criteria and then attach the driver.
|
* driver's criteria and then attach the driver.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
acpi_bus_attach (
|
acpi_bus_attach (
|
||||||
struct acpi_device *device,
|
struct acpi_device *device,
|
||||||
int level,
|
int level,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
@ -927,7 +927,7 @@ acpi_bus_attach (
|
||||||
|
|
||||||
DPRINT("Found driver [%s] for device [%s]\n",
|
DPRINT("Found driver [%s] for device [%s]\n",
|
||||||
driver->name, device->pnp.bus_id);
|
driver->name, device->pnp.bus_id);
|
||||||
|
|
||||||
result = acpi_bus_driver_init(device, driver);
|
result = acpi_bus_driver_init(device, driver);
|
||||||
if (result)
|
if (result)
|
||||||
return_VALUE(result);
|
return_VALUE(result);
|
||||||
|
@ -941,15 +941,15 @@ acpi_bus_attach (
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpi_bus_unattach
|
* acpi_bus_unattach
|
||||||
* -----------------
|
* -----------------
|
||||||
* Callback for acpi_bus_walk() used to find devices that match a specific
|
* Callback for acpi_bus_walk() used to find devices that match a specific
|
||||||
* driver's criteria and unattach the driver.
|
* driver's criteria and unattach the driver.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
acpi_bus_unattach (
|
acpi_bus_unattach (
|
||||||
struct acpi_device *device,
|
struct acpi_device *device,
|
||||||
int level,
|
int level,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
@ -980,7 +980,7 @@ acpi_bus_unattach (
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpi_bus_find_driver
|
* acpi_bus_find_driver
|
||||||
* --------------------
|
* --------------------
|
||||||
* Parses the list of registered drivers looking for a driver applicable for
|
* Parses the list of registered drivers looking for a driver applicable for
|
||||||
* the specified device.
|
* the specified device.
|
||||||
|
@ -1019,8 +1019,8 @@ acpi_bus_find_driver (
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpi_bus_register_driver
|
* acpi_bus_register_driver
|
||||||
* ------------------------
|
* ------------------------
|
||||||
* Registers a driver with the ACPI bus. Searches the namespace for all
|
* Registers a driver with the ACPI bus. Searches the namespace for all
|
||||||
* devices that match the driver's criteria and binds.
|
* devices that match the driver's criteria and binds.
|
||||||
*/
|
*/
|
||||||
|
@ -1038,7 +1038,7 @@ acpi_bus_register_driver (
|
||||||
list_add_tail(&driver->node, &acpi_bus_drivers);
|
list_add_tail(&driver->node, &acpi_bus_drivers);
|
||||||
up(&acpi_bus_drivers_lock);
|
up(&acpi_bus_drivers_lock);
|
||||||
|
|
||||||
acpi_bus_walk(acpi_root, acpi_bus_attach,
|
acpi_bus_walk(acpi_root, acpi_bus_attach,
|
||||||
WALK_DOWN, driver);
|
WALK_DOWN, driver);
|
||||||
|
|
||||||
return_VALUE(driver->references);
|
return_VALUE(driver->references);
|
||||||
|
@ -1046,7 +1046,7 @@ acpi_bus_register_driver (
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* acpi_bus_unregister_driver
|
* acpi_bus_unregister_driver
|
||||||
* --------------------------
|
* --------------------------
|
||||||
* Unregisters a driver with the ACPI bus. Searches the namespace for all
|
* Unregisters a driver with the ACPI bus. Searches the namespace for all
|
||||||
* devices that match the driver's criteria and unbinds.
|
* devices that match the driver's criteria and unbinds.
|
||||||
|
@ -1075,7 +1075,7 @@ acpi_bus_unregister_driver (
|
||||||
Device Enumeration
|
Device Enumeration
|
||||||
-------------------------------------------------------------------------- */
|
-------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
acpi_bus_get_flags (
|
acpi_bus_get_flags (
|
||||||
struct acpi_device *device)
|
struct acpi_device *device)
|
||||||
{
|
{
|
||||||
|
@ -1125,7 +1125,7 @@ acpi_bus_get_flags (
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
acpi_bus_add (
|
acpi_bus_add (
|
||||||
struct acpi_device **child,
|
struct acpi_device **child,
|
||||||
struct acpi_device *parent,
|
struct acpi_device *parent,
|
||||||
|
@ -1180,7 +1180,7 @@ acpi_bus_add (
|
||||||
buffer.Pointer = bus_id;
|
buffer.Pointer = bus_id;
|
||||||
AcpiGetName(handle, ACPI_SINGLE_NAME, &buffer);
|
AcpiGetName(handle, ACPI_SINGLE_NAME, &buffer);
|
||||||
|
|
||||||
|
|
||||||
/* Clean up trailing underscores (if any) */
|
/* Clean up trailing underscores (if any) */
|
||||||
for (i = 3; i > 1; i--) {
|
for (i = 3; i > 1; i--) {
|
||||||
if (bus_id[i] == '_')
|
if (bus_id[i] == '_')
|
||||||
|
@ -1194,7 +1194,7 @@ acpi_bus_add (
|
||||||
/* HACK: Skip HPET */
|
/* HACK: Skip HPET */
|
||||||
if (strstr(device->pnp.bus_id, "HPET"))
|
if (strstr(device->pnp.bus_id, "HPET"))
|
||||||
{
|
{
|
||||||
DPRINT1("Using HPET hack\n");
|
DPRINT("Using HPET hack\n");
|
||||||
result = -1;
|
result = -1;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
@ -1314,7 +1314,7 @@ acpi_bus_add (
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* \_SB
|
* \_SB
|
||||||
* ----
|
* ----
|
||||||
* Fix for the system root bus device -- the only root-level device.
|
* Fix for the system root bus device -- the only root-level device.
|
||||||
|
@ -1411,7 +1411,7 @@ acpi_bus_add (
|
||||||
/*
|
/*
|
||||||
* Bind _ADR-Based Devices
|
* Bind _ADR-Based Devices
|
||||||
* -----------------------
|
* -----------------------
|
||||||
* If there's a a bus address (_ADR) then we utilize the parent's
|
* If there's a a bus address (_ADR) then we utilize the parent's
|
||||||
* 'bind' function (if exists) to bind the ACPI- and natively-
|
* 'bind' function (if exists) to bind the ACPI- and natively-
|
||||||
* enumerated device representations.
|
* enumerated device representations.
|
||||||
*/
|
*/
|
||||||
|
@ -1451,7 +1451,7 @@ end:
|
||||||
|
|
||||||
static int
|
static int
|
||||||
acpi_bus_remove (
|
acpi_bus_remove (
|
||||||
struct acpi_device *device,
|
struct acpi_device *device,
|
||||||
int type)
|
int type)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -1490,7 +1490,7 @@ acpi_bus_scan (
|
||||||
|
|
||||||
parent = start;
|
parent = start;
|
||||||
phandle = start->handle;
|
phandle = start->handle;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parse through the ACPI namespace, identify all 'devices', and
|
* Parse through the ACPI namespace, identify all 'devices', and
|
||||||
* create a new 'struct acpi_device' for each.
|
* create a new 'struct acpi_device' for each.
|
||||||
|
@ -1591,7 +1591,7 @@ acpi_bus_scan_fixed (
|
||||||
* power button is present.
|
* power button is present.
|
||||||
*/
|
*/
|
||||||
if (AcpiGbl_FADT.Flags & ACPI_FADT_POWER_BUTTON)
|
if (AcpiGbl_FADT.Flags & ACPI_FADT_POWER_BUTTON)
|
||||||
result = acpi_bus_add(&device, acpi_root,
|
result = acpi_bus_add(&device, acpi_root,
|
||||||
NULL, ACPI_BUS_TYPE_POWER_BUTTON);
|
NULL, ACPI_BUS_TYPE_POWER_BUTTON);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1610,7 +1610,7 @@ acpi_bus_scan_fixed (
|
||||||
* the we have a control method button just like above.
|
* the we have a control method button just like above.
|
||||||
*/
|
*/
|
||||||
if (AcpiGbl_FADT.Flags & ACPI_FADT_SLEEP_BUTTON)
|
if (AcpiGbl_FADT.Flags & ACPI_FADT_SLEEP_BUTTON)
|
||||||
result = acpi_bus_add(&device, acpi_root,
|
result = acpi_bus_add(&device, acpi_root,
|
||||||
NULL, ACPI_BUS_TYPE_SLEEP_BUTTON);
|
NULL, ACPI_BUS_TYPE_SLEEP_BUTTON);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1635,7 +1635,7 @@ acpi_bus_init (void)
|
||||||
int result = 0;
|
int result = 0;
|
||||||
ACPI_STATUS status = AE_OK;
|
ACPI_STATUS status = AE_OK;
|
||||||
|
|
||||||
DPRINT1("acpi_bus_init\n");
|
DPRINT("acpi_bus_init\n");
|
||||||
|
|
||||||
KeInitializeDpc(&event_dpc, acpi_bus_generate_event_dpc, NULL);
|
KeInitializeDpc(&event_dpc, acpi_bus_generate_event_dpc, NULL);
|
||||||
|
|
||||||
|
@ -1682,7 +1682,7 @@ acpi_bus_init (void)
|
||||||
/*
|
/*
|
||||||
* Create the root device in the bus's device tree
|
* Create the root device in the bus's device tree
|
||||||
*/
|
*/
|
||||||
result = acpi_bus_add(&acpi_root, NULL, ACPI_ROOT_OBJECT,
|
result = acpi_bus_add(&acpi_root, NULL, ACPI_ROOT_OBJECT,
|
||||||
ACPI_BUS_TYPE_SYSTEM);
|
ACPI_BUS_TYPE_SYSTEM);
|
||||||
if (result)
|
if (result)
|
||||||
goto error2;
|
goto error2;
|
||||||
|
|
|
@ -270,23 +270,23 @@ ACPIDispatchDeviceControl(
|
||||||
*/
|
*/
|
||||||
if (power_button)
|
if (power_button)
|
||||||
{
|
{
|
||||||
DPRINT1("Fixed power button reported to power manager\n");
|
DPRINT("Fixed power button reported to power manager\n");
|
||||||
Caps |= SYS_BUTTON_POWER;
|
Caps |= SYS_BUTTON_POWER;
|
||||||
}
|
}
|
||||||
if (sleep_button)
|
if (sleep_button)
|
||||||
{
|
{
|
||||||
DPRINT1("Fixed sleep button reported to power manager\n");
|
DPRINT("Fixed sleep button reported to power manager\n");
|
||||||
Caps |= SYS_BUTTON_SLEEP;
|
Caps |= SYS_BUTTON_SLEEP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (wcsstr(((PPDO_DEVICE_DATA)commonData)->HardwareIDs, L"PNP0C0C"))
|
else if (wcsstr(((PPDO_DEVICE_DATA)commonData)->HardwareIDs, L"PNP0C0C"))
|
||||||
{
|
{
|
||||||
DPRINT1("Control method power button reported to power manager\n");
|
DPRINT("Control method power button reported to power manager\n");
|
||||||
Caps |= SYS_BUTTON_POWER;
|
Caps |= SYS_BUTTON_POWER;
|
||||||
}
|
}
|
||||||
else if (wcsstr(((PPDO_DEVICE_DATA)commonData)->HardwareIDs, L"PNP0C0E"))
|
else if (wcsstr(((PPDO_DEVICE_DATA)commonData)->HardwareIDs, L"PNP0C0E"))
|
||||||
{
|
{
|
||||||
DPRINT1("Control method sleep reported to power manager\n");
|
DPRINT("Control method sleep reported to power manager\n");
|
||||||
Caps |= SYS_BUTTON_SLEEP;
|
Caps |= SYS_BUTTON_SLEEP;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -15,6 +15,12 @@
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#define DBGPRINT(...) DbgPrint(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define DBGPRINT(...)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*** PRIVATE *****************************************************************/
|
/*** PRIVATE *****************************************************************/
|
||||||
|
|
||||||
static NTSTATUS
|
static NTSTATUS
|
||||||
|
@ -1266,7 +1272,7 @@ PdoStartDevice(
|
||||||
|
|
||||||
if (RawPartialDesc->Type == CmResourceTypeInterrupt)
|
if (RawPartialDesc->Type == CmResourceTypeInterrupt)
|
||||||
{
|
{
|
||||||
DPRINT1("Assigning IRQ %u to PCI device 0x%x on bus 0x%x\n",
|
DPRINT("Assigning IRQ %u to PCI device 0x%x on bus 0x%x\n",
|
||||||
RawPartialDesc->u.Interrupt.Vector,
|
RawPartialDesc->u.Interrupt.Vector,
|
||||||
DeviceExtension->PciDevice->SlotNumber.u.AsULONG,
|
DeviceExtension->PciDevice->SlotNumber.u.AsULONG,
|
||||||
DeviceExtension->PciDevice->BusNumber);
|
DeviceExtension->PciDevice->BusNumber);
|
||||||
|
@ -1284,30 +1290,30 @@ PdoStartDevice(
|
||||||
|
|
||||||
Command = 0;
|
Command = 0;
|
||||||
|
|
||||||
DPRINT1("Enabling command flags for PCI device 0x%x on bus 0x%x: ",
|
DBGPRINT("pci!PdoStartDevice: Enabling command flags for PCI device 0x%x on bus 0x%x: ",
|
||||||
DeviceExtension->PciDevice->SlotNumber.u.AsULONG,
|
DeviceExtension->PciDevice->SlotNumber.u.AsULONG,
|
||||||
DeviceExtension->PciDevice->BusNumber);
|
DeviceExtension->PciDevice->BusNumber);
|
||||||
if (DeviceExtension->PciDevice->EnableBusMaster)
|
if (DeviceExtension->PciDevice->EnableBusMaster)
|
||||||
{
|
{
|
||||||
Command |= PCI_ENABLE_BUS_MASTER;
|
Command |= PCI_ENABLE_BUS_MASTER;
|
||||||
DbgPrint("[Bus master] ");
|
DBGPRINT("[Bus master] ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DeviceExtension->PciDevice->EnableMemorySpace)
|
if (DeviceExtension->PciDevice->EnableMemorySpace)
|
||||||
{
|
{
|
||||||
Command |= PCI_ENABLE_MEMORY_SPACE;
|
Command |= PCI_ENABLE_MEMORY_SPACE;
|
||||||
DbgPrint("[Memory space enable] ");
|
DBGPRINT("[Memory space enable] ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DeviceExtension->PciDevice->EnableIoSpace)
|
if (DeviceExtension->PciDevice->EnableIoSpace)
|
||||||
{
|
{
|
||||||
Command |= PCI_ENABLE_IO_SPACE;
|
Command |= PCI_ENABLE_IO_SPACE;
|
||||||
DbgPrint("[I/O space enable] ");
|
DBGPRINT("[I/O space enable] ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Command != 0)
|
if (Command != 0)
|
||||||
{
|
{
|
||||||
DbgPrint("\n");
|
DBGPRINT("\n");
|
||||||
|
|
||||||
/* OR with the previous value */
|
/* OR with the previous value */
|
||||||
Command |= DeviceExtension->PciDevice->PciConfig.Command;
|
Command |= DeviceExtension->PciDevice->PciConfig.Command;
|
||||||
|
|
|
@ -41,8 +41,7 @@ VfatCloseFile(
|
||||||
|
|
||||||
if (pFcb->Flags & FCB_IS_VOLUME)
|
if (pFcb->Flags & FCB_IS_VOLUME)
|
||||||
{
|
{
|
||||||
DPRINT1("Volume\n");
|
DPRINT("Volume\n");
|
||||||
pFcb->RefCount--;
|
|
||||||
FileObject->FsContext2 = NULL;
|
FileObject->FsContext2 = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -482,7 +482,7 @@ VfatCreateFile(
|
||||||
if (FileObject->FileName.Length == 0 &&
|
if (FileObject->FileName.Length == 0 &&
|
||||||
(FileObject->RelatedFileObject == NULL || FileObject->RelatedFileObject->FsContext2 != NULL))
|
(FileObject->RelatedFileObject == NULL || FileObject->RelatedFileObject->FsContext2 != NULL))
|
||||||
{
|
{
|
||||||
DPRINT1("Volume opening\n");
|
DPRINT("Volume opening\n");
|
||||||
|
|
||||||
if (RequestedDisposition != FILE_OPEN &&
|
if (RequestedDisposition != FILE_OPEN &&
|
||||||
RequestedDisposition != FILE_OPEN_IF)
|
RequestedDisposition != FILE_OPEN_IF)
|
||||||
|
|
|
@ -294,6 +294,7 @@ vfatGrabFCB(
|
||||||
{
|
{
|
||||||
ASSERT(ExIsResourceAcquiredExclusive(&pVCB->DirResource));
|
ASSERT(ExIsResourceAcquiredExclusive(&pVCB->DirResource));
|
||||||
|
|
||||||
|
ASSERT(pFCB != pVCB->VolumeFcb);
|
||||||
++pFCB->RefCount;
|
++pFCB->RefCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,6 +312,7 @@ vfatReleaseFCB(
|
||||||
|
|
||||||
while (pFCB)
|
while (pFCB)
|
||||||
{
|
{
|
||||||
|
ASSERT(pFCB != pVCB->VolumeFcb);
|
||||||
pFCB->RefCount--;
|
pFCB->RefCount--;
|
||||||
if (pFCB->RefCount == 0)
|
if (pFCB->RefCount == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -612,7 +612,7 @@ VfatMount(
|
||||||
FsRtlNotifyInitializeSync(&DeviceExt->NotifySync);
|
FsRtlNotifyInitializeSync(&DeviceExt->NotifySync);
|
||||||
InitializeListHead(&DeviceExt->NotifyList);
|
InitializeListHead(&DeviceExt->NotifyList);
|
||||||
|
|
||||||
DPRINT1("Mount success\n");
|
DPRINT("Mount success\n");
|
||||||
|
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
@ -866,7 +866,7 @@ VfatLockOrUnlockVolume(
|
||||||
PFILE_OBJECT FileObject;
|
PFILE_OBJECT FileObject;
|
||||||
PDEVICE_EXTENSION DeviceExt;
|
PDEVICE_EXTENSION DeviceExt;
|
||||||
|
|
||||||
DPRINT1("VfatLockOrUnlockVolume(%p, %d)\n", IrpContext, Lock);
|
DPRINT("VfatLockOrUnlockVolume(%p, %d)\n", IrpContext, Lock);
|
||||||
|
|
||||||
DeviceExt = IrpContext->DeviceExt;
|
DeviceExt = IrpContext->DeviceExt;
|
||||||
FileObject = IrpContext->FileObject;
|
FileObject = IrpContext->FileObject;
|
||||||
|
@ -909,18 +909,77 @@ VfatDismountVolume(
|
||||||
PVFAT_IRP_CONTEXT IrpContext)
|
PVFAT_IRP_CONTEXT IrpContext)
|
||||||
{
|
{
|
||||||
PDEVICE_EXTENSION DeviceExt;
|
PDEVICE_EXTENSION DeviceExt;
|
||||||
|
PLIST_ENTRY NextEntry;
|
||||||
|
PVFATFCB Fcb;
|
||||||
|
|
||||||
DPRINT1("VfatDismountVolume(%p)\n", IrpContext);
|
DPRINT("VfatDismountVolume(%p)\n", IrpContext);
|
||||||
|
|
||||||
DeviceExt = IrpContext->DeviceExt;
|
DeviceExt = IrpContext->DeviceExt;
|
||||||
|
|
||||||
|
/* We HAVE to be locked. Windows also allows dismount with no lock
|
||||||
|
* but we're here mainly for 1st stage, so KISS
|
||||||
|
*/
|
||||||
if (!(DeviceExt->Flags & VCB_VOLUME_LOCKED))
|
if (!(DeviceExt->Flags & VCB_VOLUME_LOCKED))
|
||||||
{
|
{
|
||||||
return STATUS_ACCESS_DENIED;
|
return STATUS_ACCESS_DENIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
/* Race condition? */
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
if (DeviceExt->Flags & VCB_DISMOUNT_PENDING)
|
||||||
|
{
|
||||||
|
return STATUS_VOLUME_DISMOUNTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Notify we'll dismount. Pass that point there's no reason we fail */
|
||||||
|
FsRtlNotifyVolumeEvent(IrpContext->Stack->FileObject, FSRTL_VOLUME_DISMOUNT);
|
||||||
|
|
||||||
|
ExAcquireResourceExclusiveLite(&DeviceExt->FatResource, TRUE);
|
||||||
|
|
||||||
|
/* Browse all the available FCBs first, and force data writing to disk */
|
||||||
|
for (NextEntry = DeviceExt->FcbListHead.Flink;
|
||||||
|
NextEntry != &DeviceExt->FcbListHead;
|
||||||
|
NextEntry = NextEntry->Flink)
|
||||||
|
{
|
||||||
|
Fcb = CONTAINING_RECORD(NextEntry, VFATFCB, FcbListEntry);
|
||||||
|
|
||||||
|
ExAcquireResourceExclusiveLite(&Fcb->MainResource, TRUE);
|
||||||
|
ExAcquireResourceExclusiveLite(&Fcb->PagingIoResource, TRUE);
|
||||||
|
|
||||||
|
if (Fcb->FileObject)
|
||||||
|
{
|
||||||
|
if (Fcb->Flags & FCB_IS_DIRTY)
|
||||||
|
{
|
||||||
|
VfatUpdateEntry(Fcb);
|
||||||
|
}
|
||||||
|
|
||||||
|
CcPurgeCacheSection(Fcb->FileObject->SectionObjectPointer, NULL, 0, FALSE);
|
||||||
|
CcUninitializeCacheMap(Fcb->FileObject, &Fcb->RFCB.FileSize, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
ExReleaseResourceLite(&Fcb->PagingIoResource);
|
||||||
|
ExReleaseResourceLite(&Fcb->MainResource);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Rebrowse the FCB in order to free them now */
|
||||||
|
while (!IsListEmpty(&DeviceExt->FcbListHead))
|
||||||
|
{
|
||||||
|
NextEntry = RemoveHeadList(&DeviceExt->FcbListHead);
|
||||||
|
Fcb = CONTAINING_RECORD(NextEntry, VFATFCB, FcbListEntry);
|
||||||
|
vfatDestroyFCB(Fcb);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mark we're being dismounted */
|
||||||
|
DeviceExt->Flags |= VCB_DISMOUNT_PENDING;
|
||||||
|
IrpContext->DeviceObject->Vpb->Flags &= ~VPB_MOUNTED;
|
||||||
|
|
||||||
|
ExReleaseResourceLite(&DeviceExt->FatResource);
|
||||||
|
|
||||||
|
/* Release a few resources and quit, we're done */
|
||||||
|
ExDeleteResourceLite(&DeviceExt->DirResource);
|
||||||
|
ExDeleteResourceLite(&DeviceExt->FatResource);
|
||||||
|
ObDereferenceObject(DeviceExt->FATFileObject);
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -608,7 +608,7 @@ GetNtfsFileRecord(PDEVICE_EXTENSION DeviceExt,
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Stack->Parameters.FileSystemControl.OutputBufferLength < sizeof(NTFS_FILE_RECORD_OUTPUT_BUFFER) ||
|
if (Stack->Parameters.FileSystemControl.OutputBufferLength < (FIELD_OFFSET(NTFS_FILE_RECORD_OUTPUT_BUFFER, FileRecordBuffer) + DeviceExt->NtfsInfo.BytesPerFileRecord) ||
|
||||||
Irp->AssociatedIrp.SystemBuffer == NULL)
|
Irp->AssociatedIrp.SystemBuffer == NULL)
|
||||||
{
|
{
|
||||||
DPRINT1("Invalid output! %d %p\n", Stack->Parameters.FileSystemControl.OutputBufferLength, Irp->AssociatedIrp.SystemBuffer);
|
DPRINT1("Invalid output! %d %p\n", Stack->Parameters.FileSystemControl.OutputBufferLength, Irp->AssociatedIrp.SystemBuffer);
|
||||||
|
@ -634,17 +634,10 @@ GetNtfsFileRecord(PDEVICE_EXTENSION DeviceExt,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Stack->Parameters.FileSystemControl.OutputBufferLength < (FIELD_OFFSET(NTFS_FILE_RECORD_OUTPUT_BUFFER, FileRecordBuffer) + FileRecord->BytesInUse))
|
|
||||||
{
|
|
||||||
DPRINT1("Buffer too small: %lu vs %lu\n", Stack->Parameters.FileSystemControl.OutputBufferLength, FileRecord->BytesInUse);
|
|
||||||
ExFreePoolWithTag(FileRecord, TAG_NTFS);
|
|
||||||
return STATUS_BUFFER_TOO_SMALL;
|
|
||||||
}
|
|
||||||
|
|
||||||
OutputBuffer = (PNTFS_FILE_RECORD_OUTPUT_BUFFER)Irp->AssociatedIrp.SystemBuffer;
|
OutputBuffer = (PNTFS_FILE_RECORD_OUTPUT_BUFFER)Irp->AssociatedIrp.SystemBuffer;
|
||||||
OutputBuffer->FileReferenceNumber.QuadPart = MFTRecord;
|
OutputBuffer->FileReferenceNumber.QuadPart = MFTRecord;
|
||||||
OutputBuffer->FileRecordLength = FileRecord->BytesInUse;
|
OutputBuffer->FileRecordLength = DeviceExt->NtfsInfo.BytesPerFileRecord;
|
||||||
RtlCopyMemory(OutputBuffer->FileRecordBuffer, FileRecord, FileRecord->BytesInUse);
|
RtlCopyMemory(OutputBuffer->FileRecordBuffer, FileRecord, DeviceExt->NtfsInfo.BytesPerFileRecord);
|
||||||
|
|
||||||
ExFreePoolWithTag(FileRecord, TAG_NTFS);
|
ExFreePoolWithTag(FileRecord, TAG_NTFS);
|
||||||
|
|
||||||
|
|
|
@ -160,7 +160,7 @@ MiniIsBusy(
|
||||||
{
|
{
|
||||||
Busy = TRUE;
|
Busy = TRUE;
|
||||||
}
|
}
|
||||||
else if (Type == NdisWorkItemResetRequested &&
|
else if (Type == NdisWorkItemResetRequested &&
|
||||||
Adapter->NdisMiniportBlock.ResetStatus == NDIS_STATUS_PENDING)
|
Adapter->NdisMiniportBlock.ResetStatus == NDIS_STATUS_PENDING)
|
||||||
{
|
{
|
||||||
Busy = TRUE;
|
Busy = TRUE;
|
||||||
|
@ -340,7 +340,7 @@ MiniIndicateReceivePacket(
|
||||||
&NdisBufferVA,
|
&NdisBufferVA,
|
||||||
&FirstBufferLength,
|
&FirstBufferLength,
|
||||||
&TotalBufferLength);
|
&TotalBufferLength);
|
||||||
|
|
||||||
HeaderSize = NDIS_GET_PACKET_HEADER_SIZE(PacketArray[i]);
|
HeaderSize = NDIS_GET_PACKET_HEADER_SIZE(PacketArray[i]);
|
||||||
|
|
||||||
LookAheadSize = TotalBufferLength - HeaderSize;
|
LookAheadSize = TotalBufferLength - HeaderSize;
|
||||||
|
@ -352,12 +352,12 @@ MiniIndicateReceivePacket(
|
||||||
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
|
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CopyBufferChainToBuffer(LookAheadBuffer,
|
CopyBufferChainToBuffer(LookAheadBuffer,
|
||||||
NdisBuffer,
|
NdisBuffer,
|
||||||
HeaderSize,
|
HeaderSize,
|
||||||
LookAheadSize);
|
LookAheadSize);
|
||||||
|
|
||||||
NDIS_DbgPrint(MID_TRACE, ("Indicating packet to protocol's legacy Receive handler\n"));
|
NDIS_DbgPrint(MID_TRACE, ("Indicating packet to protocol's legacy Receive handler\n"));
|
||||||
(*AdapterBinding->ProtocolBinding->Chars.ReceiveHandler)(
|
(*AdapterBinding->ProtocolBinding->Chars.ReceiveHandler)(
|
||||||
AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
|
AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
|
||||||
|
@ -367,7 +367,7 @@ MiniIndicateReceivePacket(
|
||||||
LookAheadBuffer,
|
LookAheadBuffer,
|
||||||
LookAheadSize,
|
LookAheadSize,
|
||||||
TotalBufferLength - HeaderSize);
|
TotalBufferLength - HeaderSize);
|
||||||
|
|
||||||
ExFreePool(LookAheadBuffer);
|
ExFreePool(LookAheadBuffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -506,7 +506,7 @@ MiniRequestComplete(
|
||||||
Adapter->NdisMiniportBlock.PendingRequest = NULL;
|
Adapter->NdisMiniportBlock.PendingRequest = NULL;
|
||||||
KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock);
|
KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock);
|
||||||
KeLowerIrql(OldIrql);
|
KeLowerIrql(OldIrql);
|
||||||
|
|
||||||
MiniWorkItemComplete(Adapter, NdisWorkItemRequest);
|
MiniWorkItemComplete(Adapter, NdisWorkItemRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -558,7 +558,7 @@ MiniSendComplete(
|
||||||
Status);
|
Status);
|
||||||
|
|
||||||
KeLowerIrql(OldIrql);
|
KeLowerIrql(OldIrql);
|
||||||
|
|
||||||
MiniWorkItemComplete(Adapter, NdisWorkItemSend);
|
MiniWorkItemComplete(Adapter, NdisWorkItemSend);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -702,7 +702,7 @@ MiniLocateDevice(
|
||||||
KeAcquireSpinLock(&AdapterListLock, &OldIrql);
|
KeAcquireSpinLock(&AdapterListLock, &OldIrql);
|
||||||
{
|
{
|
||||||
CurrentEntry = AdapterListHead.Flink;
|
CurrentEntry = AdapterListHead.Flink;
|
||||||
|
|
||||||
while (CurrentEntry != &AdapterListHead)
|
while (CurrentEntry != &AdapterListHead)
|
||||||
{
|
{
|
||||||
Adapter = CONTAINING_RECORD(CurrentEntry, LOGICAL_ADAPTER, ListEntry);
|
Adapter = CONTAINING_RECORD(CurrentEntry, LOGICAL_ADAPTER, ListEntry);
|
||||||
|
@ -902,7 +902,7 @@ MiniReset(
|
||||||
|
|
||||||
NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_END, NULL, 0);
|
NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_END, NULL, 0);
|
||||||
NdisMIndicateStatusComplete(Adapter);
|
NdisMIndicateStatusComplete(Adapter);
|
||||||
|
|
||||||
MiniWorkItemComplete(Adapter, NdisWorkItemResetRequested);
|
MiniWorkItemComplete(Adapter, NdisWorkItemResetRequested);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2608,11 +2608,11 @@ NdisMRegisterMiniport(
|
||||||
case 0x00:
|
case 0x00:
|
||||||
MinSize = sizeof(NDIS50_MINIPORT_CHARACTERISTICS);
|
MinSize = sizeof(NDIS50_MINIPORT_CHARACTERISTICS);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x01:
|
case 0x01:
|
||||||
MinSize = sizeof(NDIS51_MINIPORT_CHARACTERISTICS);
|
MinSize = sizeof(NDIS51_MINIPORT_CHARACTERISTICS);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("Bad 5.x minor characteristics version.\n"));
|
NDIS_DbgPrint(MIN_TRACE, ("Bad 5.x minor characteristics version.\n"));
|
||||||
return NDIS_STATUS_BAD_VERSION;
|
return NDIS_STATUS_BAD_VERSION;
|
||||||
|
@ -2624,7 +2624,7 @@ NdisMRegisterMiniport(
|
||||||
return NDIS_STATUS_BAD_VERSION;
|
return NDIS_STATUS_BAD_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("Initializing an NDIS %u.%u miniport\n",
|
NDIS_DbgPrint(MID_TRACE, ("Initializing an NDIS %u.%u miniport\n",
|
||||||
MiniportCharacteristics->MajorNdisVersion,
|
MiniportCharacteristics->MajorNdisVersion,
|
||||||
MiniportCharacteristics->MinorNdisVersion));
|
MiniportCharacteristics->MinorNdisVersion));
|
||||||
|
|
||||||
|
@ -2845,7 +2845,7 @@ NdisMSetAttributesEx(
|
||||||
if (AttributeFlags & NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER)
|
if (AttributeFlags & NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER)
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("Intermediate drivers not supported yet.\n"));
|
NDIS_DbgPrint(MIN_TRACE, ("Intermediate drivers not supported yet.\n"));
|
||||||
|
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("Miniport attribute flags: 0x%x\n", AttributeFlags));
|
NDIS_DbgPrint(MID_TRACE, ("Miniport attribute flags: 0x%x\n", AttributeFlags));
|
||||||
|
|
||||||
if (Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.AdapterShutdownHandler)
|
if (Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.AdapterShutdownHandler)
|
||||||
{
|
{
|
||||||
|
@ -3141,7 +3141,7 @@ NdisMRegisterDevice(
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("IoCreateDevice failed (%x)\n", Status));
|
NDIS_DbgPrint(MIN_TRACE, ("IoCreateDevice failed (%x)\n", Status));
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = IoCreateSymbolicLink(SymbolicName, DeviceName);
|
Status = IoCreateSymbolicLink(SymbolicName, DeviceName);
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
|
|
|
@ -424,7 +424,7 @@ proSendPacketToMiniport(PLOGICAL_ADAPTER Adapter, PNDIS_PACKET Packet)
|
||||||
NdisStatus = NDIS_STATUS_PENDING;
|
NdisStatus = NDIS_STATUS_PENDING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NdisStatus != NDIS_STATUS_PENDING) {
|
if (NdisStatus != NDIS_STATUS_PENDING) {
|
||||||
MiniWorkItemComplete(Adapter, NdisWorkItemSend);
|
MiniWorkItemComplete(Adapter, NdisWorkItemSend);
|
||||||
}
|
}
|
||||||
|
@ -451,7 +451,7 @@ proSendPacketToMiniport(PLOGICAL_ADAPTER Adapter, PNDIS_PACKET Packet)
|
||||||
NdisStatus = NDIS_STATUS_PENDING;
|
NdisStatus = NDIS_STATUS_PENDING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NdisStatus != NDIS_STATUS_PENDING) {
|
if (NdisStatus != NDIS_STATUS_PENDING) {
|
||||||
MiniWorkItemComplete(Adapter, NdisWorkItemSend);
|
MiniWorkItemComplete(Adapter, NdisWorkItemSend);
|
||||||
}
|
}
|
||||||
|
@ -602,7 +602,7 @@ ProSendPackets(
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_DESERIALIZE)
|
if(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_DESERIALIZE)
|
||||||
{
|
{
|
||||||
for (i = 0; i < NumberOfPackets; i++)
|
for (i = 0; i < NumberOfPackets; i++)
|
||||||
{
|
{
|
||||||
NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)(
|
NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)(
|
||||||
|
@ -978,14 +978,14 @@ ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PPROTOCOL_BINDING Protoc
|
||||||
|
|
||||||
if (!NT_SUCCESS(NtStatus))
|
if (!NT_SUCCESS(NtStatus))
|
||||||
{
|
{
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("Performing global bind for protocol '%wZ'\n", &ProtocolCharacteristics->Name));
|
NDIS_DbgPrint(MID_TRACE, ("Performing global bind for protocol '%wZ'\n", &ProtocolCharacteristics->Name));
|
||||||
KeyInformation = NULL;
|
KeyInformation = NULL;
|
||||||
|
|
||||||
CurrentEntry = AdapterListHead.Flink;
|
CurrentEntry = AdapterListHead.Flink;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("Performing standard bind for protocol '%wZ'\n", &ProtocolCharacteristics->Name));
|
NDIS_DbgPrint(MID_TRACE, ("Performing standard bind for protocol '%wZ'\n", &ProtocolCharacteristics->Name));
|
||||||
|
|
||||||
DataPtr = (WCHAR*)KeyInformation->Data;
|
DataPtr = (WCHAR*)KeyInformation->Data;
|
||||||
}
|
}
|
||||||
|
@ -1028,7 +1028,7 @@ ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PPROTOCOL_BINDING Protoc
|
||||||
/* It wasn't in the global miniport list, so skip the bind entry */
|
/* It wasn't in the global miniport list, so skip the bind entry */
|
||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure this device isn't already bound to this protocol */
|
/* Make sure this device isn't already bound to this protocol */
|
||||||
if (LocateAdapterBindingByName(Protocol, &DeviceName))
|
if (LocateAdapterBindingByName(Protocol, &DeviceName))
|
||||||
{
|
{
|
||||||
|
@ -1074,10 +1074,10 @@ ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PPROTOCOL_BINDING Protoc
|
||||||
if(BindHandler)
|
if(BindHandler)
|
||||||
{
|
{
|
||||||
BindHandler(Status, BindContext, &DeviceName, &RegistryPath, 0);
|
BindHandler(Status, BindContext, &DeviceName, &RegistryPath, 0);
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("%wZ's BindAdapter handler returned 0x%x for %wZ\n", &ProtocolCharacteristics->Name, *Status, &DeviceName));
|
NDIS_DbgPrint(MID_TRACE, ("%wZ's BindAdapter handler returned 0x%x for %wZ\n", &ProtocolCharacteristics->Name, *Status, &DeviceName));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("No protocol bind handler specified\n"));
|
NDIS_DbgPrint(MID_TRACE, ("No protocol bind handler specified\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
next:
|
next:
|
||||||
|
@ -1190,7 +1190,7 @@ NdisRegisterProtocol(
|
||||||
|
|
||||||
InitializeListHead(&Protocol->AdapterListHead);
|
InitializeListHead(&Protocol->AdapterListHead);
|
||||||
|
|
||||||
/* We must set this before the call to ndisBindMiniportsToProtocol because the protocol's
|
/* We must set this before the call to ndisBindMiniportsToProtocol because the protocol's
|
||||||
* BindAdapter handler might need it */
|
* BindAdapter handler might need it */
|
||||||
|
|
||||||
*NdisProtocolHandle = Protocol;
|
*NdisProtocolHandle = Protocol;
|
||||||
|
|
|
@ -311,7 +311,7 @@ VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
PrintTListInfo(IN PSAC_SYSTEM_INFORMATION SacInfo)
|
PrintTListInfo(IN PSAC_SYSTEM_INFORMATION SacInfo)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Testing: %d %d %I64d\n",
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Testing: %d %d %I64d\n",
|
||||||
SacInfo->BasicInfo.NumberOfPhysicalPages,
|
SacInfo->BasicInfo.NumberOfPhysicalPages,
|
||||||
SacInfo->PerfInfo.AvailablePages,
|
SacInfo->PerfInfo.AvailablePages,
|
||||||
SacInfo->TimeInfo.BootTime);
|
SacInfo->TimeInfo.BootTime);
|
||||||
|
@ -357,7 +357,7 @@ DoRebootCommand(IN BOOLEAN Reboot)
|
||||||
LARGE_INTEGER Timeout, TickCount;
|
LARGE_INTEGER Timeout, TickCount;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
KEVENT Event;
|
KEVENT Event;
|
||||||
SAC_DBG(1, "SAC DoRebootCommand: Entering.\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoRebootCommand: Entering.\n");
|
||||||
|
|
||||||
/* Get the current time now, and setup a timeout in 1 second */
|
/* Get the current time now, and setup a timeout in 1 second */
|
||||||
KeQueryTickCount(&TickCount);
|
KeQueryTickCount(&TickCount);
|
||||||
|
@ -430,42 +430,42 @@ VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoSetTimeCommand(IN PCHAR InputTime)
|
DoSetTimeCommand(IN PCHAR InputTime)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoKillCommand(IN PCHAR KillString)
|
DoKillCommand(IN PCHAR KillString)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoLowerPriorityCommand(IN PCHAR PrioString)
|
DoLowerPriorityCommand(IN PCHAR PrioString)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoRaisePriorityCommand(IN PCHAR PrioString)
|
DoRaisePriorityCommand(IN PCHAR PrioString)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoLimitMemoryCommand(IN PCHAR LimitString)
|
DoLimitMemoryCommand(IN PCHAR LimitString)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoCrashCommand(VOID)
|
DoCrashCommand(VOID)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "SAC DoCrashCommand: Entering.\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoCrashCommand: Entering.\n");
|
||||||
|
|
||||||
/* Crash the machine */
|
/* Crash the machine */
|
||||||
KeBugCheckEx(MANUALLY_INITIATED_CRASH, 0, 0, 0, 0);
|
KeBugCheckEx(MANUALLY_INITIATED_CRASH, 0, 0, 0, 0);
|
||||||
|
@ -476,28 +476,28 @@ VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoMachineInformationCommand(VOID)
|
DoMachineInformationCommand(VOID)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoChannelCommand(IN PCHAR ChannelString)
|
DoChannelCommand(IN PCHAR ChannelString)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoCmdCommand(IN PCHAR InputString)
|
DoCmdCommand(IN PCHAR InputString)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoLockCommand(VOID)
|
DoLockCommand(VOID)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCEINLINE
|
FORCEINLINE
|
||||||
|
@ -556,14 +556,14 @@ VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoGetNetInfo(IN BOOLEAN DoPrint)
|
DoGetNetInfo(IN BOOLEAN DoPrint)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
DoSetIpAddressCommand(IN PCHAR IpString)
|
DoSetIpAddressCommand(IN PCHAR IpString)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "Entering\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Entering\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -589,7 +589,7 @@ DoTlistCommand(VOID)
|
||||||
{
|
{
|
||||||
/* Out of memory, bail out */
|
/* Out of memory, bail out */
|
||||||
SacPutSimpleMessage(11);
|
SacPutSimpleMessage(11);
|
||||||
SAC_DBG(1, "SAC DoTlistCommand: Exiting.\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoTlistCommand: Exiting.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -613,7 +613,7 @@ DoTlistCommand(VOID)
|
||||||
{
|
{
|
||||||
/* Out of memory, bail out */
|
/* Out of memory, bail out */
|
||||||
SacPutSimpleMessage(11);
|
SacPutSimpleMessage(11);
|
||||||
SAC_DBG(1, "SAC DoTlistCommand: Exiting.\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoTlistCommand: Exiting.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -637,5 +637,5 @@ DoTlistCommand(VOID)
|
||||||
PrintTListInfo(GlobalBuffer);
|
PrintTListInfo(GlobalBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
SAC_DBG(1, "SAC DoTlistCommand: Exiting.\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC DoTlistCommand: Exiting.\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -458,7 +458,7 @@ ConMgrProcessInputLine(VOID)
|
||||||
BOOLEAN EnablePaging;
|
BOOLEAN EnablePaging;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
SAC_DBG(4, "SAC Input Test: %s\n", InputBuffer);
|
SAC_DBG(SAC_DBG_INIT, "SAC Input Test: %s\n", InputBuffer);
|
||||||
|
|
||||||
if (!strncmp(InputBuffer, "t", 1))
|
if (!strncmp(InputBuffer, "t", 1))
|
||||||
{
|
{
|
||||||
|
@ -508,7 +508,7 @@ ConMgrProcessInputLine(VOID)
|
||||||
sizeof(EnablePaging),
|
sizeof(EnablePaging),
|
||||||
NULL,
|
NULL,
|
||||||
0);
|
0);
|
||||||
if (!NT_SUCCESS(Status)) SAC_DBG(4, "SAC Display Log failed.\n");
|
if (!NT_SUCCESS(Status)) SAC_DBG(SAC_DBG_INIT, "SAC Display Log failed.\n");
|
||||||
}
|
}
|
||||||
else if (!strncmp(InputBuffer, "cmd", 3))
|
else if (!strncmp(InputBuffer, "cmd", 3))
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
/* GLOBALS ********************************************************************/
|
/* GLOBALS ********************************************************************/
|
||||||
|
|
||||||
ULONG SACDebug = 0xFFFFFFFF;
|
ULONG SACDebug = 0;
|
||||||
BOOLEAN CommandConsoleLaunchingEnabled;
|
BOOLEAN CommandConsoleLaunchingEnabled;
|
||||||
BOOLEAN GlobalDataInitialized;
|
BOOLEAN GlobalDataInitialized;
|
||||||
KMUTEX SACCMDEventInfoMutex;
|
KMUTEX SACCMDEventInfoMutex;
|
||||||
|
@ -100,7 +100,7 @@ NTAPI
|
||||||
FreeGlobalData(VOID)
|
FreeGlobalData(VOID)
|
||||||
{
|
{
|
||||||
UNICODE_STRING SymbolicLink;
|
UNICODE_STRING SymbolicLink;
|
||||||
SAC_DBG(1, "SAC FreeGlobalData: Entering.\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC FreeGlobalData: Entering.\n");
|
||||||
|
|
||||||
/* Only free if we allocated */
|
/* Only free if we allocated */
|
||||||
if (GlobalDataInitialized)
|
if (GlobalDataInitialized)
|
||||||
|
@ -139,7 +139,7 @@ FreeGlobalData(VOID)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* All done */
|
/* All done */
|
||||||
SAC_DBG(1, "SAC FreeGlobalData: Exiting.\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC FreeGlobalData: Exiting.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -313,7 +313,7 @@ InitializeDeviceData(IN PDEVICE_OBJECT DeviceObject)
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* For debugging, write down why we failed */
|
/* For debugging, write down why we failed */
|
||||||
SAC_DBG(1, "Exiting (6) with status FALSE\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "Exiting (6) with status FALSE\n");
|
||||||
DeviceExtension->PriorityFail = TRUE;
|
DeviceExtension->PriorityFail = TRUE;
|
||||||
|
|
||||||
/* Initialize rundown and wait for the thread to do it */
|
/* Initialize rundown and wait for the thread to do it */
|
||||||
|
|
|
@ -434,7 +434,7 @@ GetRegistryValueBuffer(IN PCWSTR KeyName,
|
||||||
*Buffer = SacAllocatePool(ResultLength, GLOBAL_BLOCK_TAG);
|
*Buffer = SacAllocatePool(ResultLength, GLOBAL_BLOCK_TAG);
|
||||||
if (!*Buffer)
|
if (!*Buffer)
|
||||||
{
|
{
|
||||||
SAC_DBG(1, "SAC GetRegistryValueBuffer: failed allocation\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC GetRegistryValueBuffer: failed allocation\n");
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -497,7 +497,7 @@ SetRegistryValue(IN PCWSTR KeyName,
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Print error on failure */
|
/* Print error on failure */
|
||||||
SAC_DBG(1, "SAC SetRegistryValue: failed ZwSetValueKey: %X.\n", Status);
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC SetRegistryValue: failed ZwSetValueKey: %X.\n", Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Close the handle and exit */
|
/* Close the handle and exit */
|
||||||
|
|
|
@ -245,7 +245,7 @@ DeviceStatusChangeThread(
|
||||||
if (PortStatus.Change & USB_PORT_STATUS_CONNECT)
|
if (PortStatus.Change & USB_PORT_STATUS_CONNECT)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Clear Port Connect
|
// Clear Port Connect
|
||||||
//
|
//
|
||||||
Status = ClearPortFeature(RootHubDeviceObject, PortId, C_PORT_CONNECTION);
|
Status = ClearPortFeature(RootHubDeviceObject, PortId, C_PORT_CONNECTION);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
|
@ -794,7 +794,7 @@ IsCompositeDevice(
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DeviceDescriptor->bDeviceClass == 0xEF &&
|
if (DeviceDescriptor->bDeviceClass == 0xEF &&
|
||||||
DeviceDescriptor->bDeviceSubClass == 0x02 &&
|
DeviceDescriptor->bDeviceSubClass == 0x02 &&
|
||||||
DeviceDescriptor->bDeviceProtocol == 0x01)
|
DeviceDescriptor->bDeviceProtocol == 0x01)
|
||||||
{
|
{
|
||||||
|
@ -888,7 +888,7 @@ CreateDeviceIds(
|
||||||
|
|
||||||
if (DeviceDescriptor->bDeviceClass == 0)
|
if (DeviceDescriptor->bDeviceClass == 0)
|
||||||
{
|
{
|
||||||
Index += swprintf(&Buffer[Index],
|
Index += swprintf(&Buffer[Index],
|
||||||
L"USB\\Class_%02x&SubClass_%02x&Prot_%02x",
|
L"USB\\Class_%02x&SubClass_%02x&Prot_%02x",
|
||||||
InterfaceDescriptor->bInterfaceClass, InterfaceDescriptor->bInterfaceSubClass, InterfaceDescriptor->bInterfaceProtocol) + 1;
|
InterfaceDescriptor->bInterfaceClass, InterfaceDescriptor->bInterfaceSubClass, InterfaceDescriptor->bInterfaceProtocol) + 1;
|
||||||
Index += swprintf(&Buffer[Index],
|
Index += swprintf(&Buffer[Index],
|
||||||
|
@ -900,7 +900,7 @@ CreateDeviceIds(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Index += swprintf(&Buffer[Index],
|
Index += swprintf(&Buffer[Index],
|
||||||
L"USB\\Class_%02x&SubClass_%02x&Prot_%02x",
|
L"USB\\Class_%02x&SubClass_%02x&Prot_%02x",
|
||||||
DeviceDescriptor->bDeviceClass, DeviceDescriptor->bDeviceSubClass, DeviceDescriptor->bDeviceProtocol) + 1;
|
DeviceDescriptor->bDeviceClass, DeviceDescriptor->bDeviceSubClass, DeviceDescriptor->bDeviceProtocol) + 1;
|
||||||
Index += swprintf(&Buffer[Index],
|
Index += swprintf(&Buffer[Index],
|
||||||
|
@ -964,7 +964,7 @@ CreateDeviceIds(
|
||||||
// Construct HardwareIds
|
// Construct HardwareIds
|
||||||
//
|
//
|
||||||
Index = 0;
|
Index = 0;
|
||||||
Index += swprintf(&Buffer[Index],
|
Index += swprintf(&Buffer[Index],
|
||||||
L"USB\\Vid_%04x&Pid_%04x&Rev_%04x",
|
L"USB\\Vid_%04x&Pid_%04x&Rev_%04x",
|
||||||
UsbChildExtension->DeviceDesc.idVendor, UsbChildExtension->DeviceDesc.idProduct, UsbChildExtension->DeviceDesc.bcdDevice) + 1;
|
UsbChildExtension->DeviceDesc.idVendor, UsbChildExtension->DeviceDesc.idProduct, UsbChildExtension->DeviceDesc.bcdDevice) + 1;
|
||||||
Index += swprintf(&Buffer[Index],
|
Index += swprintf(&Buffer[Index],
|
||||||
|
@ -1146,7 +1146,7 @@ CreateUsbChildDeviceObject(
|
||||||
RootHubDeviceObject = HubDeviceExtension->RootHubPhysicalDeviceObject;
|
RootHubDeviceObject = HubDeviceExtension->RootHubPhysicalDeviceObject;
|
||||||
HubInterfaceBusContext = HubDeviceExtension->UsbDInterface.BusContext;
|
HubInterfaceBusContext = HubDeviceExtension->UsbDInterface.BusContext;
|
||||||
//
|
//
|
||||||
// Find an empty slot in the child device array
|
// Find an empty slot in the child device array
|
||||||
//
|
//
|
||||||
for (ChildDeviceCount = 0; ChildDeviceCount < USB_MAXCHILDREN; ChildDeviceCount++)
|
for (ChildDeviceCount = 0; ChildDeviceCount < USB_MAXCHILDREN; ChildDeviceCount++)
|
||||||
{
|
{
|
||||||
|
@ -1318,7 +1318,7 @@ CreateUsbChildDeviceObject(
|
||||||
}
|
}
|
||||||
|
|
||||||
// query device details
|
// query device details
|
||||||
Status = HubInterface->QueryDeviceInformation(HubInterfaceBusContext,
|
Status = HubInterface->QueryDeviceInformation(HubInterfaceBusContext,
|
||||||
UsbChildExtension->UsbDeviceHandle,
|
UsbChildExtension->UsbDeviceHandle,
|
||||||
&UsbChildExtension->DeviceInformation,
|
&UsbChildExtension->DeviceInformation,
|
||||||
sizeof(USB_DEVICE_INFORMATION_0),
|
sizeof(USB_DEVICE_INFORMATION_0),
|
||||||
|
@ -1638,13 +1638,13 @@ USBHUB_FdoStartDevice(
|
||||||
sizeof(USB_DEVICE_INFORMATION_0),
|
sizeof(USB_DEVICE_INFORMATION_0),
|
||||||
&Result);
|
&Result);
|
||||||
|
|
||||||
DPRINT1("Status %x, Result 0x%08lx\n", Status, Result);
|
DPRINT("Status %x, Result 0x%08lx\n", Status, Result);
|
||||||
DPRINT1("InformationLevel %x\n", HubDeviceExtension->DeviceInformation.InformationLevel);
|
DPRINT("InformationLevel %x\n", HubDeviceExtension->DeviceInformation.InformationLevel);
|
||||||
DPRINT1("ActualLength %x\n", HubDeviceExtension->DeviceInformation.ActualLength);
|
DPRINT("ActualLength %x\n", HubDeviceExtension->DeviceInformation.ActualLength);
|
||||||
DPRINT1("PortNumber %x\n", HubDeviceExtension->DeviceInformation.PortNumber);
|
DPRINT("PortNumber %x\n", HubDeviceExtension->DeviceInformation.PortNumber);
|
||||||
DPRINT1("DeviceDescriptor %x\n", HubDeviceExtension->DeviceInformation.DeviceDescriptor);
|
DPRINT("DeviceDescriptor %x\n", HubDeviceExtension->DeviceInformation.DeviceDescriptor);
|
||||||
DPRINT1("HubAddress %x\n", HubDeviceExtension->DeviceInformation.HubAddress);
|
DPRINT("HubAddress %x\n", HubDeviceExtension->DeviceInformation.HubAddress);
|
||||||
DPRINT1("NumberofPipes %x\n", HubDeviceExtension->DeviceInformation.NumberOfOpenPipes);
|
DPRINT("NumberofPipes %x\n", HubDeviceExtension->DeviceInformation.NumberOfOpenPipes);
|
||||||
|
|
||||||
// Get Root Hubs Device Descriptor
|
// Get Root Hubs Device Descriptor
|
||||||
UsbBuildGetDescriptorRequest(Urb,
|
UsbBuildGetDescriptorRequest(Urb,
|
||||||
|
@ -1737,7 +1737,7 @@ USBHUB_FdoStartDevice(
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT1("HubDeviceExtension->UsbExtHubInfo.NumberOfPorts %x\n", HubDeviceExtension->UsbExtHubInfo.NumberOfPorts);
|
DPRINT("HubDeviceExtension->UsbExtHubInfo.NumberOfPorts %x\n", HubDeviceExtension->UsbExtHubInfo.NumberOfPorts);
|
||||||
|
|
||||||
// Build hub descriptor request
|
// Build hub descriptor request
|
||||||
UsbBuildVendorRequest(Urb,
|
UsbBuildVendorRequest(Urb,
|
||||||
|
@ -2222,7 +2222,7 @@ USBHUB_FdoHandleDeviceControl(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DPRINT1("UNIMPLEMENTED FdoHandleDeviceControl IoCtl %x InputBufferLength %x OutputBufferLength %x\n", IoStack->Parameters.DeviceIoControl.IoControlCode,
|
DPRINT1("UNIMPLEMENTED FdoHandleDeviceControl IoCtl %x InputBufferLength %x OutputBufferLength %x\n", IoStack->Parameters.DeviceIoControl.IoControlCode,
|
||||||
IoStack->Parameters.DeviceIoControl.InputBufferLength, IoStack->Parameters.DeviceIoControl.OutputBufferLength);
|
IoStack->Parameters.DeviceIoControl.InputBufferLength, IoStack->Parameters.DeviceIoControl.OutputBufferLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -178,7 +178,7 @@ CUSBHardwareDevice::Initialize(
|
||||||
|
|
||||||
//
|
//
|
||||||
// store device objects
|
// store device objects
|
||||||
//
|
//
|
||||||
m_DriverObject = DriverObject;
|
m_DriverObject = DriverObject;
|
||||||
m_FunctionalDeviceObject = FunctionalDeviceObject;
|
m_FunctionalDeviceObject = FunctionalDeviceObject;
|
||||||
m_PhysicalDeviceObject = PhysicalDeviceObject;
|
m_PhysicalDeviceObject = PhysicalDeviceObject;
|
||||||
|
@ -289,7 +289,7 @@ CUSBHardwareDevice::PnpStart(
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get controllers capabilities
|
// Get controllers capabilities
|
||||||
//
|
//
|
||||||
Version = READ_REGISTER_ULONG((PULONG)((ULONG_PTR)ResourceBase + OHCI_REVISION_OFFSET));
|
Version = READ_REGISTER_ULONG((PULONG)((ULONG_PTR)ResourceBase + OHCI_REVISION_OFFSET));
|
||||||
|
|
||||||
|
@ -380,7 +380,7 @@ CUSBHardwareDevice::PnpStart(
|
||||||
//
|
//
|
||||||
// Start the controller
|
// Start the controller
|
||||||
//
|
//
|
||||||
DPRINT1("Starting Controller\n");
|
DPRINT("Starting Controller\n");
|
||||||
Status = StartController();
|
Status = StartController();
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -503,7 +503,7 @@ CUSBHardwareDevice::StartController(void)
|
||||||
//
|
//
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// if the ownership is still not changed, perform reset
|
// if the ownership is still not changed, perform reset
|
||||||
|
@ -521,17 +521,17 @@ CUSBHardwareDevice::StartController(void)
|
||||||
//
|
//
|
||||||
// read contents of control register
|
// read contents of control register
|
||||||
//
|
//
|
||||||
|
|
||||||
Control = (READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_CONTROL_OFFSET)) & OHCI_HC_FUNCTIONAL_STATE_MASK);
|
Control = (READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_CONTROL_OFFSET)) & OHCI_HC_FUNCTIONAL_STATE_MASK);
|
||||||
DPRINT1("Controller State %x\n", Control);
|
DPRINT("Controller State %x\n", Control);
|
||||||
|
|
||||||
switch (Control)
|
switch (Control)
|
||||||
{
|
{
|
||||||
case OHCI_HC_FUNCTIONAL_STATE_RESET:
|
case OHCI_HC_FUNCTIONAL_STATE_RESET:
|
||||||
NewControl |= OHCI_HC_FUNCTIONAL_STATE_RESET;
|
NewControl |= OHCI_HC_FUNCTIONAL_STATE_RESET;
|
||||||
WaitInMs = 50;
|
WaitInMs = 50;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OHCI_HC_FUNCTIONAL_STATE_SUSPEND:
|
case OHCI_HC_FUNCTIONAL_STATE_SUSPEND:
|
||||||
case OHCI_HC_FUNCTIONAL_STATE_RESUME:
|
case OHCI_HC_FUNCTIONAL_STATE_RESUME:
|
||||||
NewControl |= OHCI_HC_FUNCTIONAL_STATE_RESUME;
|
NewControl |= OHCI_HC_FUNCTIONAL_STATE_RESUME;
|
||||||
|
@ -555,13 +555,13 @@ retry:
|
||||||
// delay is 100 ms
|
// delay is 100 ms
|
||||||
//
|
//
|
||||||
Timeout.QuadPart = WaitInMs;
|
Timeout.QuadPart = WaitInMs;
|
||||||
DPRINT1("Waiting %lu milliseconds for controller to transition state\n", Timeout.LowPart);
|
DPRINT("Waiting %lu milliseconds for controller to transition state\n", Timeout.LowPart);
|
||||||
|
|
||||||
//
|
//
|
||||||
// convert to 100 ns units (absolute)
|
// convert to 100 ns units (absolute)
|
||||||
//
|
//
|
||||||
Timeout.QuadPart *= -10000;
|
Timeout.QuadPart *= -10000;
|
||||||
|
|
||||||
//
|
//
|
||||||
// perform the wait
|
// perform the wait
|
||||||
//
|
//
|
||||||
|
@ -617,9 +617,9 @@ retry:
|
||||||
|
|
||||||
FrameInterval = ((FrameInterval & OHCI_FRAME_INTERVAL_TOGGLE) ^ OHCI_FRAME_INTERVAL_TOGGLE);
|
FrameInterval = ((FrameInterval & OHCI_FRAME_INTERVAL_TOGGLE) ^ OHCI_FRAME_INTERVAL_TOGGLE);
|
||||||
|
|
||||||
DPRINT1("FrameInterval %x IntervalValue %x\n", FrameInterval, m_IntervalValue);
|
DPRINT("FrameInterval %x IntervalValue %x\n", FrameInterval, m_IntervalValue);
|
||||||
FrameInterval |= OHCI_FSMPS(m_IntervalValue) | m_IntervalValue;
|
FrameInterval |= OHCI_FSMPS(m_IntervalValue) | m_IntervalValue;
|
||||||
DPRINT1("Computed FrameInterval %x\n", FrameInterval);
|
DPRINT("Computed FrameInterval %x\n", FrameInterval);
|
||||||
|
|
||||||
//
|
//
|
||||||
// write frame interval
|
// write frame interval
|
||||||
|
@ -627,17 +627,17 @@ retry:
|
||||||
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_FRAME_INTERVAL_OFFSET), FrameInterval);
|
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_FRAME_INTERVAL_OFFSET), FrameInterval);
|
||||||
|
|
||||||
FrameInterval = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_FRAME_INTERVAL_OFFSET));
|
FrameInterval = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_FRAME_INTERVAL_OFFSET));
|
||||||
DPRINT1("Read FrameInterval %x\n", FrameInterval);
|
DPRINT("Read FrameInterval %x\n", FrameInterval);
|
||||||
|
|
||||||
//
|
//
|
||||||
// 90 % periodic
|
// 90 % periodic
|
||||||
//
|
//
|
||||||
Periodic = OHCI_PERIODIC(m_IntervalValue);
|
Periodic = OHCI_PERIODIC(m_IntervalValue);
|
||||||
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_PERIODIC_START_OFFSET), Periodic);
|
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_PERIODIC_START_OFFSET), Periodic);
|
||||||
DPRINT1("Computed Periodic Start %x\n", Periodic);
|
DPRINT("Computed Periodic Start %x\n", Periodic);
|
||||||
|
|
||||||
Periodic = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_PERIODIC_START_OFFSET));
|
Periodic = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_PERIODIC_START_OFFSET));
|
||||||
DPRINT1("Read Periodic Start %x\n", Periodic);
|
DPRINT("Read Periodic Start %x\n", Periodic);
|
||||||
|
|
||||||
// Linux does this hack for some bad controllers
|
// Linux does this hack for some bad controllers
|
||||||
if (!(FrameInterval & 0x3FFF0000) ||
|
if (!(FrameInterval & 0x3FFF0000) ||
|
||||||
|
@ -680,7 +680,7 @@ retry:
|
||||||
m_NumberOfPorts = OHCI_RH_GET_PORT_COUNT(Descriptor);
|
m_NumberOfPorts = OHCI_RH_GET_PORT_COUNT(Descriptor);
|
||||||
} while (m_NumberOfPorts == 0);
|
} while (m_NumberOfPorts == 0);
|
||||||
|
|
||||||
DPRINT1("NumberOfPorts %lu\n", m_NumberOfPorts);
|
DPRINT("NumberOfPorts %lu\n", m_NumberOfPorts);
|
||||||
ASSERT(m_NumberOfPorts < OHCI_MAX_PORT_COUNT);
|
ASSERT(m_NumberOfPorts < OHCI_MAX_PORT_COUNT);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -701,7 +701,7 @@ retry:
|
||||||
//
|
//
|
||||||
// write the configuration back
|
// write the configuration back
|
||||||
//
|
//
|
||||||
DPRINT1("Descriptor A: %x\n", Descriptor);
|
DPRINT("Descriptor A: %x\n", Descriptor);
|
||||||
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_RH_DESCRIPTOR_A_OFFSET), Descriptor);
|
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_RH_DESCRIPTOR_A_OFFSET), Descriptor);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -720,7 +720,7 @@ retry:
|
||||||
//
|
//
|
||||||
// write the configuration back
|
// write the configuration back
|
||||||
//
|
//
|
||||||
DPRINT1("Descriptor B: %x\n", Descriptor);
|
DPRINT("Descriptor B: %x\n", Descriptor);
|
||||||
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_RH_DESCRIPTOR_B_OFFSET), Descriptor);
|
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_RH_DESCRIPTOR_B_OFFSET), Descriptor);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -730,7 +730,7 @@ retry:
|
||||||
KeStallExecutionProcessor(10);
|
KeStallExecutionProcessor(10);
|
||||||
Control = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_HCCA_OFFSET));
|
Control = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_HCCA_OFFSET));
|
||||||
ASSERT((m_HCCAPhysicalAddress.LowPart & Control) == m_HCCAPhysicalAddress.LowPart);
|
ASSERT((m_HCCAPhysicalAddress.LowPart & Control) == m_HCCAPhysicalAddress.LowPart);
|
||||||
DPRINT1("HCCA: %x Alignment mask: %x\n", m_HCCAPhysicalAddress.LowPart, Control);
|
DPRINT("HCCA: %x Alignment mask: %x\n", m_HCCAPhysicalAddress.LowPart, Control);
|
||||||
|
|
||||||
//
|
//
|
||||||
// write address of HCCA
|
// write address of HCCA
|
||||||
|
@ -770,12 +770,12 @@ retry:
|
||||||
//
|
//
|
||||||
ASSERT((Control & OHCI_HC_FUNCTIONAL_STATE_MASK) == OHCI_HC_FUNCTIONAL_STATE_OPERATIONAL);
|
ASSERT((Control & OHCI_HC_FUNCTIONAL_STATE_MASK) == OHCI_HC_FUNCTIONAL_STATE_OPERATIONAL);
|
||||||
ASSERT((Control & OHCI_ENABLE_LIST) == OHCI_ENABLE_LIST);
|
ASSERT((Control & OHCI_ENABLE_LIST) == OHCI_ENABLE_LIST);
|
||||||
DPRINT1("Control %x\n", Control);
|
DPRINT("Control %x\n", Control);
|
||||||
|
|
||||||
//
|
//
|
||||||
// done
|
// done
|
||||||
//
|
//
|
||||||
DPRINT1("OHCI controller is operational\n");
|
DPRINT("OHCI controller is operational\n");
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1152,7 +1152,7 @@ CUSBHardwareDevice::ClearPortStatus(
|
||||||
//
|
//
|
||||||
// re-enable root hub change
|
// re-enable root hub change
|
||||||
//
|
//
|
||||||
DPRINT1("Enabling status change\n");
|
DPRINT("Enabling status change\n");
|
||||||
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_INTERRUPT_ENABLE_OFFSET), OHCI_ROOT_HUB_STATUS_CHANGE);
|
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_INTERRUPT_ENABLE_OFFSET), OHCI_ROOT_HUB_STATUS_CHANGE);
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
@ -1206,7 +1206,7 @@ CUSBHardwareDevice::SetPortFeature(
|
||||||
// delay is multiplied by 2 ms
|
// delay is multiplied by 2 ms
|
||||||
//
|
//
|
||||||
Timeout.QuadPart *= 2;
|
Timeout.QuadPart *= 2;
|
||||||
DPRINT1("Waiting %lu milliseconds for port power up\n", Timeout.LowPart);
|
DPRINT("Waiting %lu milliseconds for port power up\n", Timeout.LowPart);
|
||||||
|
|
||||||
//
|
//
|
||||||
// convert to 100 ns units (absolute)
|
// convert to 100 ns units (absolute)
|
||||||
|
@ -1322,9 +1322,9 @@ InterruptServiceRoutine(
|
||||||
// the interrupt was not caused by DoneHead update
|
// the interrupt was not caused by DoneHead update
|
||||||
// check if something important happened
|
// check if something important happened
|
||||||
//
|
//
|
||||||
DPRINT("InterruptStatus %x InterruptEnable %x\n", READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_STATUS_OFFSET)),
|
DPRINT("InterruptStatus %x InterruptEnable %x\n", READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_STATUS_OFFSET)),
|
||||||
READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_ENABLE_OFFSET)));
|
READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_ENABLE_OFFSET)));
|
||||||
Status = READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_STATUS_OFFSET)) & READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_ENABLE_OFFSET)) & (~OHCI_WRITEBACK_DONE_HEAD);
|
Status = READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_STATUS_OFFSET)) & READ_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_INTERRUPT_ENABLE_OFFSET)) & (~OHCI_WRITEBACK_DONE_HEAD);
|
||||||
if (Status == 0)
|
if (Status == 0)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
@ -1387,7 +1387,7 @@ InterruptServiceRoutine(
|
||||||
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_CONTROL_OFFSET), OHCI_HC_FUNCTIONAL_STATE_RESET);
|
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)This->m_Base + OHCI_CONTROL_OFFSET), OHCI_HC_FUNCTIONAL_STATE_RESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Status & OHCI_ROOT_HUB_STATUS_CHANGE)
|
if (Status & OHCI_ROOT_HUB_STATUS_CHANGE)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// disable interrupt as it will fire untill the port has been reset
|
// disable interrupt as it will fire untill the port has been reset
|
||||||
|
|
|
@ -822,7 +822,7 @@ NTAPI
|
||||||
HalpDispatchPower(IN PDEVICE_OBJECT DeviceObject,
|
HalpDispatchPower(IN PDEVICE_OBJECT DeviceObject,
|
||||||
IN PIRP Irp)
|
IN PIRP Irp)
|
||||||
{
|
{
|
||||||
DPRINT1("HAL: PnP Driver Power!\n");
|
DPRINT("HAL: PnP Driver Power!\n");
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -713,14 +713,14 @@ HalpDispatchPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
case IRP_MN_START_DEVICE:
|
case IRP_MN_START_DEVICE:
|
||||||
|
|
||||||
/* We only care about a PCI PDO */
|
/* We only care about a PCI PDO */
|
||||||
DPRINT1("Start device received\n");
|
DPRINT("Start device received\n");
|
||||||
/* Complete the IRP normally */
|
/* Complete the IRP normally */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_REMOVE_DEVICE:
|
case IRP_MN_REMOVE_DEVICE:
|
||||||
|
|
||||||
/* Check if this is a PCI device */
|
/* Check if this is a PCI device */
|
||||||
DPRINT1("Remove device received\n");
|
DPRINT("Remove device received\n");
|
||||||
|
|
||||||
/* We're done */
|
/* We're done */
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
|
@ -729,7 +729,7 @@ HalpDispatchPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
case IRP_MN_SURPRISE_REMOVAL:
|
case IRP_MN_SURPRISE_REMOVAL:
|
||||||
|
|
||||||
/* Inherit whatever status we had */
|
/* Inherit whatever status we had */
|
||||||
DPRINT1("Surprise removal IRP\n");
|
DPRINT("Surprise removal IRP\n");
|
||||||
Status = Irp->IoStatus.Status;
|
Status = Irp->IoStatus.Status;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -790,7 +790,7 @@ HalpDispatchPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
default:
|
default:
|
||||||
|
|
||||||
/* We don't handle anything else, so inherit the old state */
|
/* We don't handle anything else, so inherit the old state */
|
||||||
DPRINT("Illegal IRP: %lx\n", Minor);
|
DPRINT1("Illegal IRP: %lx\n", Minor);
|
||||||
Status = Irp->IoStatus.Status;
|
Status = Irp->IoStatus.Status;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,6 +90,7 @@ extern "C" {
|
||||||
#define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA)
|
#define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA)
|
||||||
#define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA)
|
#define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA)
|
||||||
#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||||
|
#define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM,26,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||||
#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS)
|
#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS)
|
||||||
#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS)
|
#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS)
|
||||||
#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||||
|
@ -556,6 +557,19 @@ typedef struct {
|
||||||
LARGE_INTEGER MftZoneStart;
|
LARGE_INTEGER MftZoneStart;
|
||||||
LARGE_INTEGER MftZoneEnd;
|
LARGE_INTEGER MftZoneEnd;
|
||||||
} NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER;
|
} NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER;
|
||||||
|
typedef struct {
|
||||||
|
ULONG ByteCount;
|
||||||
|
USHORT MajorVersion;
|
||||||
|
USHORT MinorVersion;
|
||||||
|
} NTFS_EXTENDED_VOLUME_DATA, *PNTFS_EXTENDED_VOLUME_DATA;
|
||||||
|
typedef struct {
|
||||||
|
LARGE_INTEGER FileReferenceNumber;
|
||||||
|
} NTFS_FILE_RECORD_INPUT_BUFFER, *PNTFS_FILE_RECORD_INPUT_BUFFER;
|
||||||
|
typedef struct {
|
||||||
|
LARGE_INTEGER FileReferenceNumber;
|
||||||
|
ULONG FileRecordLength;
|
||||||
|
UCHAR FileRecordBuffer[1];
|
||||||
|
} NTFS_FILE_RECORD_OUTPUT_BUFFER, *PNTFS_FILE_RECORD_OUTPUT_BUFFER;
|
||||||
|
|
||||||
#define IsRecognizedPartition(t)\
|
#define IsRecognizedPartition(t)\
|
||||||
(((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\
|
(((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\
|
||||||
|
|
|
@ -83,7 +83,8 @@ BOOL WINAPI StrRetToStrNW(LPWSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
|
||||||
#define RFF_NOLABEL 0x08
|
#define RFF_NOLABEL 0x08
|
||||||
#define RFF_NOSEPARATEMEM 0x20 /* NT only */
|
#define RFF_NOSEPARATEMEM 0x20 /* NT only */
|
||||||
|
|
||||||
#define DE_SAMEFILE 0x71
|
#define DE_SAMEFILE 0x71
|
||||||
|
#define DE_DESTSAMETREE 0x7D
|
||||||
|
|
||||||
/* RunFileFlg notification structure */
|
/* RunFileFlg notification structure */
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
|
@ -22,8 +22,12 @@ HvpWriteLog(
|
||||||
ULONG LastIndex;
|
ULONG LastIndex;
|
||||||
PVOID BlockPtr;
|
PVOID BlockPtr;
|
||||||
BOOLEAN Success;
|
BOOLEAN Success;
|
||||||
|
static ULONG PrintCount = 0;
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
if (PrintCount++ == 0)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
ASSERT(RegistryHive->ReadOnly == FALSE);
|
ASSERT(RegistryHive->ReadOnly == FALSE);
|
||||||
|
|
|
@ -312,7 +312,7 @@ CHubController::QueryStatusChangeEndpoint(
|
||||||
// Get the number of ports and check each one for device connected
|
// Get the number of ports and check each one for device connected
|
||||||
//
|
//
|
||||||
m_Hardware->GetDeviceDetails(NULL, NULL, &PortCount, NULL);
|
m_Hardware->GetDeviceDetails(NULL, NULL, &PortCount, NULL);
|
||||||
DPRINT1("[%s] SCE Request %p TransferBufferLength %lu Flags %x MDL %p\n", m_USBType, Urb->UrbBulkOrInterruptTransfer.TransferBuffer, Urb->UrbBulkOrInterruptTransfer.TransferBufferLength, Urb->UrbBulkOrInterruptTransfer.TransferFlags, Urb->UrbBulkOrInterruptTransfer.TransferBufferMDL);
|
DPRINT("[%s] SCE Request %p TransferBufferLength %lu Flags %x MDL %p\n", m_USBType, Urb->UrbBulkOrInterruptTransfer.TransferBuffer, Urb->UrbBulkOrInterruptTransfer.TransferBufferLength, Urb->UrbBulkOrInterruptTransfer.TransferFlags, Urb->UrbBulkOrInterruptTransfer.TransferBufferMDL);
|
||||||
|
|
||||||
TransferBuffer = (PUCHAR)Urb->UrbBulkOrInterruptTransfer.TransferBuffer;
|
TransferBuffer = (PUCHAR)Urb->UrbBulkOrInterruptTransfer.TransferBuffer;
|
||||||
|
|
||||||
|
@ -323,7 +323,7 @@ CHubController::QueryStatusChangeEndpoint(
|
||||||
{
|
{
|
||||||
m_Hardware->GetPortStatus(PortId, &PortStatus, &PortChange);
|
m_Hardware->GetPortStatus(PortId, &PortStatus, &PortChange);
|
||||||
|
|
||||||
DPRINT1("[%s] Port %d: Status %x, Change %x\n", m_USBType, PortId, PortStatus, PortChange);
|
DPRINT("[%s] Port %d: Status %x, Change %x\n", m_USBType, PortId, PortStatus, PortChange);
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -3935,7 +3935,7 @@ CHubController::CreatePDO(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT1("CHubController::CreatePDO: DeviceName %wZ\n", &DeviceName);
|
DPRINT("CHubController::CreatePDO: DeviceName %wZ\n", &DeviceName);
|
||||||
|
|
||||||
//
|
//
|
||||||
// fixup device stack voodoo part #1
|
// fixup device stack voodoo part #1
|
||||||
|
|
|
@ -30,7 +30,7 @@ USBLIB_AddDevice(
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PHCDCONTROLLER HcdController;
|
PHCDCONTROLLER HcdController;
|
||||||
|
|
||||||
DPRINT1("USBLIB_AddDevice\n");
|
DPRINT("USBLIB_AddDevice\n");
|
||||||
|
|
||||||
/* first create the controller object */
|
/* first create the controller object */
|
||||||
Status = CreateHCDController(&HcdController);
|
Status = CreateHCDController(&HcdController);
|
||||||
|
@ -67,7 +67,7 @@ extern
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
USBLIB_Dispatch(
|
USBLIB_Dispatch(
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp)
|
PIRP Irp)
|
||||||
{
|
{
|
||||||
PCOMMON_DEVICE_EXTENSION DeviceExtension;
|
PCOMMON_DEVICE_EXTENSION DeviceExtension;
|
||||||
|
@ -137,4 +137,4 @@ USBLIB_Dispatch(
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -987,16 +987,10 @@ clean_up:
|
||||||
ext2_free_block_bitmap(&FileSys);
|
ext2_free_block_bitmap(&FileSys);
|
||||||
ext2_free_inode_bitmap(&FileSys);
|
ext2_free_inode_bitmap(&FileSys);
|
||||||
|
|
||||||
if (!bRet)
|
if(bLocked)
|
||||||
{
|
{
|
||||||
Ext2DisMountVolume(&FileSys);
|
Ext2DisMountVolume(&FileSys);
|
||||||
}
|
Ext2UnLockVolume(&FileSys);
|
||||||
else
|
|
||||||
{
|
|
||||||
if(bLocked)
|
|
||||||
{
|
|
||||||
Ext2UnLockVolume(&FileSys);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ext2CloseDevice(&FileSys);
|
Ext2CloseDevice(&FileSys);
|
||||||
|
|
|
@ -36,7 +36,7 @@ LsaDeregisterLogonProcess(HANDLE LsaHandle)
|
||||||
LSA_API_MSG ApiMessage;
|
LSA_API_MSG ApiMessage;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
DPRINT1("LsaDeregisterLogonProcess()\n");
|
DPRINT("LsaDeregisterLogonProcess()\n");
|
||||||
|
|
||||||
ApiMessage.ApiNumber = LSASS_REQUEST_DEREGISTER_LOGON_PROCESS;
|
ApiMessage.ApiNumber = LSASS_REQUEST_DEREGISTER_LOGON_PROCESS;
|
||||||
ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.DeregisterLogonProcess);
|
ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.DeregisterLogonProcess);
|
||||||
|
@ -60,7 +60,7 @@ LsaDeregisterLogonProcess(HANDLE LsaHandle)
|
||||||
|
|
||||||
NtClose(LsaHandle);
|
NtClose(LsaHandle);
|
||||||
|
|
||||||
DPRINT1("LsaDeregisterLogonProcess() done (Status 0x%08lx)\n", Status);
|
DPRINT("LsaDeregisterLogonProcess() done (Status 0x%08lx)\n", Status);
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ LsaConnectUntrusted(PHANDLE LsaHandle)
|
||||||
ULONG ConnectInfoLength = sizeof(ConnectInfo);
|
ULONG ConnectInfoLength = sizeof(ConnectInfo);
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
DPRINT1("LsaConnectUntrusted(%p)\n", LsaHandle);
|
DPRINT("LsaConnectUntrusted(%p)\n", LsaHandle);
|
||||||
|
|
||||||
RtlInitUnicodeString(&PortName,
|
RtlInitUnicodeString(&PortName,
|
||||||
L"\\LsaAuthenticationPort");
|
L"\\LsaAuthenticationPort");
|
||||||
|
@ -311,7 +311,7 @@ LsaRegisterLogonProcess(PLSA_STRING LsaLogonProcessName,
|
||||||
ULONG ConnectInfoLength = sizeof(ConnectInfo);
|
ULONG ConnectInfoLength = sizeof(ConnectInfo);
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
DPRINT1("LsaRegisterLogonProcess()\n");
|
DPRINT("LsaRegisterLogonProcess()\n");
|
||||||
|
|
||||||
/* Check the logon process name length */
|
/* Check the logon process name length */
|
||||||
if (LsaLogonProcessName->Length > LSASS_MAX_LOGON_PROCESS_NAME_LENGTH)
|
if (LsaLogonProcessName->Length > LSASS_MAX_LOGON_PROCESS_NAME_LENGTH)
|
||||||
|
|
|
@ -668,52 +668,52 @@ ExpInitSystemPhase1(VOID)
|
||||||
DPRINT1("Executive: Event Pair initialization failed\n");
|
DPRINT1("Executive: Event Pair initialization failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize mutants */
|
/* Initialize mutants */
|
||||||
if (ExpInitializeMutantImplementation() == FALSE)
|
if (ExpInitializeMutantImplementation() == FALSE)
|
||||||
{
|
{
|
||||||
DPRINT1("Executive: Mutant initialization failed\n");
|
DPRINT1("Executive: Mutant initialization failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize callbacks */
|
/* Initialize callbacks */
|
||||||
if (ExpInitializeCallbacks() == FALSE)
|
if (ExpInitializeCallbacks() == FALSE)
|
||||||
{
|
{
|
||||||
DPRINT1("Executive: Callback initialization failed\n");
|
DPRINT1("Executive: Callback initialization failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize semaphores */
|
/* Initialize semaphores */
|
||||||
if (ExpInitializeSemaphoreImplementation() == FALSE)
|
if (ExpInitializeSemaphoreImplementation() == FALSE)
|
||||||
{
|
{
|
||||||
DPRINT1("Executive: Semaphore initialization failed\n");
|
DPRINT1("Executive: Semaphore initialization failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize timers */
|
/* Initialize timers */
|
||||||
if (ExpInitializeTimerImplementation() == FALSE)
|
if (ExpInitializeTimerImplementation() == FALSE)
|
||||||
{
|
{
|
||||||
DPRINT1("Executive: Timer initialization failed\n");
|
DPRINT1("Executive: Timer initialization failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize profiling */
|
/* Initialize profiling */
|
||||||
if (ExpInitializeProfileImplementation() == FALSE)
|
if (ExpInitializeProfileImplementation() == FALSE)
|
||||||
{
|
{
|
||||||
DPRINT1("Executive: Profile initialization failed\n");
|
DPRINT1("Executive: Profile initialization failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize UUIDs */
|
/* Initialize UUIDs */
|
||||||
ExpInitUuids();
|
ExpInitUuids();
|
||||||
|
|
||||||
/* Initialize keyed events */
|
/* Initialize keyed events */
|
||||||
if (ExpInitializeKeyedEventImplementation() == FALSE)
|
if (ExpInitializeKeyedEventImplementation() == FALSE)
|
||||||
{
|
{
|
||||||
DPRINT1("Executive: Keyed event initialization failed\n");
|
DPRINT1("Executive: Keyed event initialization failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize Win32K */
|
/* Initialize Win32K */
|
||||||
if (ExpWin32kInit() == FALSE)
|
if (ExpWin32kInit() == FALSE)
|
||||||
{
|
{
|
||||||
|
@ -1956,7 +1956,7 @@ Phase1InitializationDiscard(IN PVOID Context)
|
||||||
InbvEnableDisplayString(TRUE);
|
InbvEnableDisplayString(TRUE);
|
||||||
|
|
||||||
/* Launch initial process */
|
/* Launch initial process */
|
||||||
DPRINT1("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
|
DPRINT("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
|
||||||
ProcessInfo = &InitBuffer->ProcessInfo;
|
ProcessInfo = &InitBuffer->ProcessInfo;
|
||||||
ExpLoadInitialProcess(InitBuffer, &ProcessParameters, &Environment);
|
ExpLoadInitialProcess(InitBuffer, &ProcessParameters, &Environment);
|
||||||
|
|
||||||
|
@ -1998,7 +1998,7 @@ Phase1InitializationDiscard(IN PVOID Context)
|
||||||
|
|
||||||
/* Free the boot buffer */
|
/* Free the boot buffer */
|
||||||
ExFreePoolWithTag(InitBuffer, TAG_INIT);
|
ExFreePoolWithTag(InitBuffer, TAG_INIT);
|
||||||
DPRINT1("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
|
DPRINT("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
/* INCLUDES *****************************************************************/
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
#include <ntoskrnl.h>
|
#include <ntoskrnl.h>
|
||||||
|
|
||||||
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
@ -22,7 +24,7 @@ NTAPI
|
||||||
NtShutdownSystem(IN SHUTDOWN_ACTION Action)
|
NtShutdownSystem(IN SHUTDOWN_ACTION Action)
|
||||||
{
|
{
|
||||||
POWER_ACTION PowerAction;
|
POWER_ACTION PowerAction;
|
||||||
|
|
||||||
/* Convert to power action */
|
/* Convert to power action */
|
||||||
if (Action == ShutdownNoReboot)
|
if (Action == ShutdownNoReboot)
|
||||||
{
|
{
|
||||||
|
@ -40,9 +42,9 @@ NtShutdownSystem(IN SHUTDOWN_ACTION Action)
|
||||||
{
|
{
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now call the power manager */
|
/* Now call the power manager */
|
||||||
DPRINT1("Setting state to: %lx\n", PowerAction);
|
DPRINT("Setting state to: %lx\n", PowerAction);
|
||||||
return NtSetSystemPowerState(PowerAction,
|
return NtSetSystemPowerState(PowerAction,
|
||||||
PowerSystemSleeping3,
|
PowerSystemSleeping3,
|
||||||
POWER_ACTION_OVERRIDE_APPS |
|
POWER_ACTION_OVERRIDE_APPS |
|
||||||
|
|
|
@ -383,7 +383,7 @@ IopCreateArcNamesCd(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
||||||
/* Create symbolic link */
|
/* Create symbolic link */
|
||||||
IoAssignArcName(&ArcNameStringW, &DeviceStringW);
|
IoAssignArcName(&ArcNameStringW, &DeviceStringW);
|
||||||
RtlFreeUnicodeString(&ArcNameStringW);
|
RtlFreeUnicodeString(&ArcNameStringW);
|
||||||
DPRINT1("Boot device found\n");
|
DPRINT("Boot device found\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* And quit, whatever happens */
|
/* And quit, whatever happens */
|
||||||
|
|
|
@ -390,7 +390,7 @@ IopInstallCriticalDevice(PDEVICE_NODE DeviceNode)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT1("Installed service '%S' for critical device '%wZ'\n", PartialInfo->Data, &ChildIdNameU);
|
DPRINT("Installed service '%S' for critical device '%wZ'\n", PartialInfo->Data, &ChildIdNameU);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3212,7 +3212,7 @@ IopIsFirmwareMapperDisabled(VOID)
|
||||||
DPRINT1("ZwOpenKey(%wZ) failed with status 0x%08lx\n", &KeyPathU, Status);
|
DPRINT1("ZwOpenKey(%wZ) failed with status 0x%08lx\n", &KeyPathU, Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT1("Firmware mapper is %s\n", KeyValue != 0 ? "disabled" : "enabled");
|
DPRINT("Firmware mapper is %s\n", KeyValue != 0 ? "disabled" : "enabled");
|
||||||
|
|
||||||
return (KeyValue != 0) ? TRUE : FALSE;
|
return (KeyValue != 0) ? TRUE : FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -350,7 +350,7 @@ IoReportDetectedDevice(IN PDRIVER_OBJECT DriverObject,
|
||||||
IopQueueTargetDeviceEvent(&GUID_DEVICE_ARRIVAL,
|
IopQueueTargetDeviceEvent(&GUID_DEVICE_ARRIVAL,
|
||||||
&DeviceNode->InstancePath);
|
&DeviceNode->InstancePath);
|
||||||
|
|
||||||
DPRINT1("Reported device: %S (%wZ)\n", HardwareId, &DeviceNode->InstancePath);
|
DPRINT("Reported device: %S (%wZ)\n", HardwareId, &DeviceNode->InstancePath);
|
||||||
|
|
||||||
/* Return the PDO */
|
/* Return the PDO */
|
||||||
if (DeviceObject) *DeviceObject = Pdo;
|
if (DeviceObject) *DeviceObject = Pdo;
|
||||||
|
|
|
@ -132,11 +132,12 @@ IopFindPortResource(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DPRINT1("Satisfying port requirement with 0x%I64x (length: 0x%x)\n", Start, CmDesc->u.Port.Length);
|
DPRINT("Satisfying port requirement with 0x%I64x (length: 0x%x)\n", Start, CmDesc->u.Port.Length);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DPRINT1("IopFindPortResource failed!\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ MmZeroPageThread(VOID)
|
||||||
/* Get the discardable sections to free them */
|
/* Get the discardable sections to free them */
|
||||||
MiFindInitializationCode(&StartAddress, &EndAddress);
|
MiFindInitializationCode(&StartAddress, &EndAddress);
|
||||||
if (StartAddress) MiFreeInitializationCode(StartAddress, EndAddress);
|
if (StartAddress) MiFreeInitializationCode(StartAddress, EndAddress);
|
||||||
DPRINT1("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
|
DPRINT("Free non-cache pages: %lx\n", MmAvailablePages + MiMemoryConsumers[MC_CACHE].PagesUsed);
|
||||||
|
|
||||||
/* Set our priority to 0 */
|
/* Set our priority to 0 */
|
||||||
Thread->BasePriority = 0;
|
Thread->BasePriority = 0;
|
||||||
|
|
|
@ -191,7 +191,7 @@ PopShutdownSystem(IN POWER_ACTION SystemAction)
|
||||||
/* Note should notify caller of NtPowerInformation(PowerShutdownNotification) */
|
/* Note should notify caller of NtPowerInformation(PowerShutdownNotification) */
|
||||||
|
|
||||||
/* Unload symbols */
|
/* Unload symbols */
|
||||||
DPRINT1("It's the final countdown...%lx\n", SystemAction);
|
DPRINT("It's the final countdown...%lx\n", SystemAction);
|
||||||
DbgUnLoadImageSymbols(NULL, (PVOID)-1, 0);
|
DbgUnLoadImageSymbols(NULL, (PVOID)-1, 0);
|
||||||
|
|
||||||
/* Run the thread on the boot processor */
|
/* Run the thread on the boot processor */
|
||||||
|
@ -264,15 +264,15 @@ PopGracefulShutdown(IN PVOID Context)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* First, the HAL handles any "end of boot" special functionality */
|
/* First, the HAL handles any "end of boot" special functionality */
|
||||||
DPRINT1("HAL shutting down\n");
|
DPRINT("HAL shutting down\n");
|
||||||
HalEndOfBoot();
|
HalEndOfBoot();
|
||||||
|
|
||||||
/* In this step, the I/O manager does first-chance shutdown notification */
|
/* In this step, the I/O manager does first-chance shutdown notification */
|
||||||
DPRINT1("I/O manager shutting down in phase 0\n");
|
DPRINT("I/O manager shutting down in phase 0\n");
|
||||||
IoShutdownSystem(0);
|
IoShutdownSystem(0);
|
||||||
|
|
||||||
/* In this step, all workers are killed and hives are flushed */
|
/* In this step, all workers are killed and hives are flushed */
|
||||||
DPRINT1("Configuration Manager shutting down\n");
|
DPRINT("Configuration Manager shutting down\n");
|
||||||
CmShutdownSystem();
|
CmShutdownSystem();
|
||||||
|
|
||||||
/* Note that modified pages should be written here (MiShutdownSystem) */
|
/* Note that modified pages should be written here (MiShutdownSystem) */
|
||||||
|
@ -283,18 +283,18 @@ PopGracefulShutdown(IN PVOID Context)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* In this step, the I/O manager does last-chance shutdown notification */
|
/* In this step, the I/O manager does last-chance shutdown notification */
|
||||||
DPRINT1("I/O manager shutting down in phase 1\n");
|
DPRINT("I/O manager shutting down in phase 1\n");
|
||||||
IoShutdownSystem(1);
|
IoShutdownSystem(1);
|
||||||
CcWaitForCurrentLazyWriterActivity();
|
CcWaitForCurrentLazyWriterActivity();
|
||||||
|
|
||||||
/* Note that here, we should broadcast the power IRP to devices */
|
/* Note that here, we should broadcast the power IRP to devices */
|
||||||
|
|
||||||
/* In this step, the HAL disables any wake timers */
|
/* In this step, the HAL disables any wake timers */
|
||||||
DPRINT1("Disabling wake timers\n");
|
DPRINT("Disabling wake timers\n");
|
||||||
HalSetWakeEnable(FALSE);
|
HalSetWakeEnable(FALSE);
|
||||||
|
|
||||||
/* And finally the power request is sent */
|
/* And finally the power request is sent */
|
||||||
DPRINT1("Taking the system down\n");
|
DPRINT("Taking the system down\n");
|
||||||
PopShutdownSystem(PopAction.Action);
|
PopShutdownSystem(PopAction.Action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ typedef struct _POP_FLUSH_VOLUME
|
||||||
LONG Count;
|
LONG Count;
|
||||||
KEVENT Wait;
|
KEVENT Wait;
|
||||||
} POP_FLUSH_VOLUME, *PPOP_FLUSH_VOLUME;
|
} POP_FLUSH_VOLUME, *PPOP_FLUSH_VOLUME;
|
||||||
|
|
||||||
ULONG PopFlushPolicy = 0;
|
ULONG PopFlushPolicy = 0;
|
||||||
|
|
||||||
KGUARDED_MUTEX PopVolumeLock;
|
KGUARDED_MUTEX PopVolumeLock;
|
||||||
|
@ -56,7 +56,7 @@ PopGetDope(IN PDEVICE_OBJECT DeviceObject)
|
||||||
|
|
||||||
/* Make sure only one caller can assign dope to a device */
|
/* Make sure only one caller can assign dope to a device */
|
||||||
KeAcquireSpinLock(&PopDopeGlobalLock, &OldIrql);
|
KeAcquireSpinLock(&PopDopeGlobalLock, &OldIrql);
|
||||||
|
|
||||||
/* Make sure the device still has no dope */
|
/* Make sure the device still has no dope */
|
||||||
if (!DeviceExtension->Dope)
|
if (!DeviceExtension->Dope)
|
||||||
{
|
{
|
||||||
|
@ -67,7 +67,7 @@ PopGetDope(IN PDEVICE_OBJECT DeviceObject)
|
||||||
|
|
||||||
/* Allow other dope transactions now */
|
/* Allow other dope transactions now */
|
||||||
KeReleaseSpinLock(&PopDopeGlobalLock, OldIrql);
|
KeReleaseSpinLock(&PopDopeGlobalLock, OldIrql);
|
||||||
|
|
||||||
/* Check if someone other than us already assigned the dope, so free ours */
|
/* Check if someone other than us already assigned the dope, so free ours */
|
||||||
if (Dope) ExFreePoolWithTag(Dope, 'Dope');
|
if (Dope) ExFreePoolWithTag(Dope, 'Dope');
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ PoVolumeDevice(IN PDEVICE_OBJECT DeviceObject)
|
||||||
|
|
||||||
/* Add this volume into the list of power-manager volumes */
|
/* Add this volume into the list of power-manager volumes */
|
||||||
if (!Dope->Volume.Flink) InsertTailList(&PopVolumeDevices, &Dope->Volume);
|
if (!Dope->Volume.Flink) InsertTailList(&PopVolumeDevices, &Dope->Volume);
|
||||||
|
|
||||||
/* Allow flushes to go through */
|
/* Allow flushes to go through */
|
||||||
KeReleaseGuardedMutex(&PopVolumeLock);
|
KeReleaseGuardedMutex(&PopVolumeLock);
|
||||||
}
|
}
|
||||||
|
@ -167,10 +167,10 @@ PopFlushVolumeWorker(IN PVOID Context)
|
||||||
/* Grab the next (ie: current) entry and remove it */
|
/* Grab the next (ie: current) entry and remove it */
|
||||||
NextEntry = FlushContext->List.Flink;
|
NextEntry = FlushContext->List.Flink;
|
||||||
RemoveEntryList(NextEntry);
|
RemoveEntryList(NextEntry);
|
||||||
|
|
||||||
/* Add it back on the volume list */
|
/* Add it back on the volume list */
|
||||||
InsertTailList(&PopVolumeDevices, NextEntry);
|
InsertTailList(&PopVolumeDevices, NextEntry);
|
||||||
|
|
||||||
/* Done touching the volume list */
|
/* Done touching the volume list */
|
||||||
KeReleaseGuardedMutex(&PopVolumeLock);
|
KeReleaseGuardedMutex(&PopVolumeLock);
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ PopFlushVolumeWorker(IN PVOID Context)
|
||||||
if ((NT_SUCCESS(Status)) && (NameInfo->Name.Buffer))
|
if ((NT_SUCCESS(Status)) && (NameInfo->Name.Buffer))
|
||||||
{
|
{
|
||||||
/* Open the volume */
|
/* Open the volume */
|
||||||
DPRINT1("Opening: %wZ\n", &NameInfo->Name);
|
DPRINT("Opening: %wZ\n", &NameInfo->Name);
|
||||||
InitializeObjectAttributes(&ObjectAttributes,
|
InitializeObjectAttributes(&ObjectAttributes,
|
||||||
&NameInfo->Name,
|
&NameInfo->Name,
|
||||||
OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
|
OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
|
||||||
|
@ -205,7 +205,7 @@ PopFlushVolumeWorker(IN PVOID Context)
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Flush it and close it */
|
/* Flush it and close it */
|
||||||
DPRINT1("Sending flush to: %p\n", VolumeHandle);
|
DPRINT("Sending flush to: %p\n", VolumeHandle);
|
||||||
ZwFlushBuffersFile(VolumeHandle, &IoStatusBlock);
|
ZwFlushBuffersFile(VolumeHandle, &IoStatusBlock);
|
||||||
ZwClose(VolumeHandle);
|
ZwClose(VolumeHandle);
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
|
||||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||||
HANDLE RegistryHandle;
|
HANDLE RegistryHandle;
|
||||||
PLIST_ENTRY NextEntry;
|
PLIST_ENTRY NextEntry;
|
||||||
PDEVICE_OBJECT_POWER_EXTENSION Dope;
|
PDEVICE_OBJECT_POWER_EXTENSION Dope;
|
||||||
ULONG VolumeCount = 0;
|
ULONG VolumeCount = 0;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
HANDLE ThreadHandle;
|
HANDLE ThreadHandle;
|
||||||
|
@ -247,7 +247,7 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
|
||||||
if ((FlushPolicy & 1))
|
if ((FlushPolicy & 1))
|
||||||
{
|
{
|
||||||
/* Registry flush requested, so open it */
|
/* Registry flush requested, so open it */
|
||||||
DPRINT1("Opening registry\n");
|
DPRINT("Opening registry\n");
|
||||||
InitializeObjectAttributes(&ObjectAttributes,
|
InitializeObjectAttributes(&ObjectAttributes,
|
||||||
&RegistryName,
|
&RegistryName,
|
||||||
OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
|
OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
|
||||||
|
@ -257,7 +257,7 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Flush the registry */
|
/* Flush the registry */
|
||||||
DPRINT1("Flushing registry\n");
|
DPRINT("Flushing registry\n");
|
||||||
ZwFlushKey(RegistryHandle);
|
ZwFlushKey(RegistryHandle);
|
||||||
ZwClose(RegistryHandle);
|
ZwClose(RegistryHandle);
|
||||||
}
|
}
|
||||||
|
@ -265,14 +265,14 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
|
||||||
|
|
||||||
/* Serialize with other flushes */
|
/* Serialize with other flushes */
|
||||||
KeAcquireGuardedMutex(&PopVolumeLock);
|
KeAcquireGuardedMutex(&PopVolumeLock);
|
||||||
|
|
||||||
/* Scan the volume list */
|
/* Scan the volume list */
|
||||||
NextEntry = PopVolumeDevices.Flink;
|
NextEntry = PopVolumeDevices.Flink;
|
||||||
while (NextEntry != &PopVolumeDevices)
|
while (NextEntry != &PopVolumeDevices)
|
||||||
{
|
{
|
||||||
/* Get the dope from the link */
|
/* Get the dope from the link */
|
||||||
Dope = CONTAINING_RECORD(NextEntry, DEVICE_OBJECT_POWER_EXTENSION, Volume);
|
Dope = CONTAINING_RECORD(NextEntry, DEVICE_OBJECT_POWER_EXTENSION, Volume);
|
||||||
|
|
||||||
/* Grab the next entry now, since we'll be modifying the list */
|
/* Grab the next entry now, since we'll be modifying the list */
|
||||||
NextEntry = NextEntry->Flink;
|
NextEntry = NextEntry->Flink;
|
||||||
|
|
||||||
|
@ -290,7 +290,7 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
|
||||||
/* Remove it from the dope and add it to the flush context list */
|
/* Remove it from the dope and add it to the flush context list */
|
||||||
RemoveEntryList(&Dope->Volume);
|
RemoveEntryList(&Dope->Volume);
|
||||||
InsertTailList(&FlushContext.List, &Dope->Volume);
|
InsertTailList(&FlushContext.List, &Dope->Volume);
|
||||||
|
|
||||||
/* Next */
|
/* Next */
|
||||||
VolumeCount++;
|
VolumeCount++;
|
||||||
}
|
}
|
||||||
|
@ -321,13 +321,13 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
|
||||||
/* We will ourselves become a flusher thread */
|
/* We will ourselves become a flusher thread */
|
||||||
FlushContext.Count = 1;
|
FlushContext.Count = 1;
|
||||||
ThreadCount--;
|
ThreadCount--;
|
||||||
|
|
||||||
/* Look for any extra ones we might need */
|
/* Look for any extra ones we might need */
|
||||||
while (ThreadCount > 0)
|
while (ThreadCount > 0)
|
||||||
{
|
{
|
||||||
/* Create a new one */
|
/* Create a new one */
|
||||||
ThreadCount--;
|
ThreadCount--;
|
||||||
DPRINT1("Creating flush thread\n");
|
DPRINT("Creating flush thread\n");
|
||||||
Status = PsCreateSystemThread(&ThreadHandle,
|
Status = PsCreateSystemThread(&ThreadHandle,
|
||||||
THREAD_ALL_ACCESS,
|
THREAD_ALL_ACCESS,
|
||||||
&ObjectAttributes,
|
&ObjectAttributes,
|
||||||
|
@ -347,13 +347,13 @@ PopFlushVolumes(IN BOOLEAN ShuttingDown)
|
||||||
KeReleaseGuardedMutex(&PopVolumeLock);
|
KeReleaseGuardedMutex(&PopVolumeLock);
|
||||||
|
|
||||||
/* Enter the flush work */
|
/* Enter the flush work */
|
||||||
DPRINT1("Local flush\n");
|
DPRINT("Local flush\n");
|
||||||
PopFlushVolumeWorker(&FlushContext);
|
PopFlushVolumeWorker(&FlushContext);
|
||||||
|
|
||||||
/* Wait for all flushes to be over */
|
/* Wait for all flushes to be over */
|
||||||
DPRINT1("Waiting for flushes\n");
|
DPRINT("Waiting for flushes\n");
|
||||||
KeWaitForSingleObject(&FlushContext.Wait, Executive, KernelMode, FALSE, NULL);
|
KeWaitForSingleObject(&FlushContext.Wait, Executive, KernelMode, FALSE, NULL);
|
||||||
DPRINT1("Flushes have completed\n");
|
DPRINT("Flushes have completed\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
|
@ -46,10 +46,10 @@ PopRequestPowerIrpCompletion(IN PDEVICE_OBJECT DeviceObject,
|
||||||
{
|
{
|
||||||
PIO_STACK_LOCATION Stack;
|
PIO_STACK_LOCATION Stack;
|
||||||
PREQUEST_POWER_ITEM RequestPowerItem;
|
PREQUEST_POWER_ITEM RequestPowerItem;
|
||||||
|
|
||||||
Stack = IoGetNextIrpStackLocation(Irp);
|
Stack = IoGetNextIrpStackLocation(Irp);
|
||||||
RequestPowerItem = (PREQUEST_POWER_ITEM)Context;
|
RequestPowerItem = (PREQUEST_POWER_ITEM)Context;
|
||||||
|
|
||||||
RequestPowerItem->CompletionRoutine(DeviceObject,
|
RequestPowerItem->CompletionRoutine(DeviceObject,
|
||||||
Stack->MinorFunction,
|
Stack->MinorFunction,
|
||||||
RequestPowerItem->PowerState,
|
RequestPowerItem->PowerState,
|
||||||
|
@ -161,12 +161,12 @@ PopQuerySystemPowerStateTraverse(PDEVICE_NODE DeviceNode,
|
||||||
{
|
{
|
||||||
PPOWER_STATE_TRAVERSE_CONTEXT PowerStateContext = Context;
|
PPOWER_STATE_TRAVERSE_CONTEXT PowerStateContext = Context;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
DPRINT("PopQuerySystemPowerStateTraverse(%p, %p)\n", DeviceNode, Context);
|
DPRINT("PopQuerySystemPowerStateTraverse(%p, %p)\n", DeviceNode, Context);
|
||||||
|
|
||||||
if (DeviceNode == IopRootDeviceNode)
|
if (DeviceNode == IopRootDeviceNode)
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
if (DeviceNode->Flags & DNF_LEGACY_DRIVER)
|
if (DeviceNode->Flags & DNF_LEGACY_DRIVER)
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ PopQuerySystemPowerStateTraverse(PDEVICE_NODE DeviceNode,
|
||||||
{
|
{
|
||||||
DPRINT1("Device '%wZ' failed IRP_MN_QUERY_POWER\n", &DeviceNode->InstancePath);
|
DPRINT1("Device '%wZ' failed IRP_MN_QUERY_POWER\n", &DeviceNode->InstancePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
return Status;
|
return Status;
|
||||||
#else
|
#else
|
||||||
|
@ -191,15 +191,15 @@ PopSetSystemPowerStateTraverse(PDEVICE_NODE DeviceNode,
|
||||||
{
|
{
|
||||||
PPOWER_STATE_TRAVERSE_CONTEXT PowerStateContext = Context;
|
PPOWER_STATE_TRAVERSE_CONTEXT PowerStateContext = Context;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
DPRINT("PopSetSystemPowerStateTraverse(%p, %p)\n", DeviceNode, Context);
|
DPRINT("PopSetSystemPowerStateTraverse(%p, %p)\n", DeviceNode, Context);
|
||||||
|
|
||||||
if (DeviceNode == IopRootDeviceNode)
|
if (DeviceNode == IopRootDeviceNode)
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
if (DeviceNode->PhysicalDeviceObject == PowerStateContext->PowerDevice)
|
if (DeviceNode->PhysicalDeviceObject == PowerStateContext->PowerDevice)
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
if (DeviceNode->Flags & DNF_LEGACY_DRIVER)
|
if (DeviceNode->Flags & DNF_LEGACY_DRIVER)
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ PopSetSystemPowerStateTraverse(PDEVICE_NODE DeviceNode,
|
||||||
{
|
{
|
||||||
DPRINT1("Device '%wZ' failed IRP_MN_SET_POWER\n", &DeviceNode->InstancePath);
|
DPRINT1("Device '%wZ' failed IRP_MN_SET_POWER\n", &DeviceNode->InstancePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
return Status;
|
return Status;
|
||||||
#else
|
#else
|
||||||
|
@ -227,7 +227,7 @@ PopSetSystemPowerState(SYSTEM_POWER_STATE PowerState, POWER_ACTION PowerAction)
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
DEVICETREE_TRAVERSE_CONTEXT Context;
|
DEVICETREE_TRAVERSE_CONTEXT Context;
|
||||||
POWER_STATE_TRAVERSE_CONTEXT PowerContext;
|
POWER_STATE_TRAVERSE_CONTEXT PowerContext;
|
||||||
|
|
||||||
Status = IopGetSystemPowerDeviceObject(&DeviceObject);
|
Status = IopGetSystemPowerDeviceObject(&DeviceObject);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
@ -243,34 +243,34 @@ PopSetSystemPowerState(SYSTEM_POWER_STATE PowerState, POWER_ACTION PowerAction)
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set up context */
|
/* Set up context */
|
||||||
PowerContext.PowerAction = PowerAction;
|
PowerContext.PowerAction = PowerAction;
|
||||||
PowerContext.SystemPowerState = PowerState;
|
PowerContext.SystemPowerState = PowerState;
|
||||||
PowerContext.PowerDevice = Fdo;
|
PowerContext.PowerDevice = Fdo;
|
||||||
|
|
||||||
/* Query for system power change */
|
/* Query for system power change */
|
||||||
IopInitDeviceTreeTraverseContext(&Context,
|
IopInitDeviceTreeTraverseContext(&Context,
|
||||||
IopRootDeviceNode,
|
IopRootDeviceNode,
|
||||||
PopQuerySystemPowerStateTraverse,
|
PopQuerySystemPowerStateTraverse,
|
||||||
&PowerContext);
|
&PowerContext);
|
||||||
|
|
||||||
Status = IopTraverseDeviceTree(&Context);
|
Status = IopTraverseDeviceTree(&Context);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("Query system power state failed; changing state anyway\n");
|
DPRINT1("Query system power state failed; changing state anyway\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set system power change */
|
/* Set system power change */
|
||||||
IopInitDeviceTreeTraverseContext(&Context,
|
IopInitDeviceTreeTraverseContext(&Context,
|
||||||
IopRootDeviceNode,
|
IopRootDeviceNode,
|
||||||
PopSetSystemPowerStateTraverse,
|
PopSetSystemPowerStateTraverse,
|
||||||
&PowerContext);
|
&PowerContext);
|
||||||
|
|
||||||
IopTraverseDeviceTree(&Context);
|
IopTraverseDeviceTree(&Context);
|
||||||
|
|
||||||
if (!PopAcpiPresent) return STATUS_NOT_IMPLEMENTED;
|
if (!PopAcpiPresent) return STATUS_NOT_IMPLEMENTED;
|
||||||
|
|
||||||
if (Fdo != NULL)
|
if (Fdo != NULL)
|
||||||
{
|
{
|
||||||
if (PowerAction != PowerActionShutdownReset)
|
if (PowerAction != PowerActionShutdownReset)
|
||||||
|
@ -303,7 +303,7 @@ PoInitSystem(IN ULONG BootPhase)
|
||||||
PopAddRemoveSysCapsCallback,
|
PopAddRemoveSysCapsCallback,
|
||||||
NULL,
|
NULL,
|
||||||
&NotificationEntry);
|
&NotificationEntry);
|
||||||
|
|
||||||
/* Register lid notification */
|
/* Register lid notification */
|
||||||
IoRegisterPlugPlayNotification(EventCategoryDeviceInterfaceChange,
|
IoRegisterPlugPlayNotification(EventCategoryDeviceInterfaceChange,
|
||||||
PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES,
|
PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES,
|
||||||
|
@ -336,11 +336,11 @@ PoInitSystem(IN ULONG BootPhase)
|
||||||
PopAcpiPresent = KeLoaderBlock->Extension->AcpiTable != NULL ? TRUE : FALSE;
|
PopAcpiPresent = KeLoaderBlock->Extension->AcpiTable != NULL ? TRUE : FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Initialize volume support */
|
/* Initialize volume support */
|
||||||
InitializeListHead(&PopVolumeDevices);
|
InitializeListHead(&PopVolumeDevices);
|
||||||
KeInitializeGuardedMutex(&PopVolumeLock);
|
KeInitializeGuardedMutex(&PopVolumeLock);
|
||||||
|
|
||||||
/* Initialize support for dope */
|
/* Initialize support for dope */
|
||||||
KeInitializeSpinLock(&PopDopeGlobalLock);
|
KeInitializeSpinLock(&PopDopeGlobalLock);
|
||||||
|
|
||||||
|
@ -522,19 +522,19 @@ PoRequestPowerIrp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
PIO_STACK_LOCATION Stack;
|
PIO_STACK_LOCATION Stack;
|
||||||
PIRP Irp;
|
PIRP Irp;
|
||||||
PREQUEST_POWER_ITEM RequestPowerItem;
|
PREQUEST_POWER_ITEM RequestPowerItem;
|
||||||
|
|
||||||
if (MinorFunction != IRP_MN_QUERY_POWER
|
if (MinorFunction != IRP_MN_QUERY_POWER
|
||||||
&& MinorFunction != IRP_MN_SET_POWER
|
&& MinorFunction != IRP_MN_SET_POWER
|
||||||
&& MinorFunction != IRP_MN_WAIT_WAKE)
|
&& MinorFunction != IRP_MN_WAIT_WAKE)
|
||||||
return STATUS_INVALID_PARAMETER_2;
|
return STATUS_INVALID_PARAMETER_2;
|
||||||
|
|
||||||
RequestPowerItem = ExAllocatePool(NonPagedPool, sizeof(REQUEST_POWER_ITEM));
|
RequestPowerItem = ExAllocatePool(NonPagedPool, sizeof(REQUEST_POWER_ITEM));
|
||||||
if (!RequestPowerItem)
|
if (!RequestPowerItem)
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
||||||
/* Always call the top of the device stack */
|
/* Always call the top of the device stack */
|
||||||
TopDeviceObject = IoGetAttachedDeviceReference(DeviceObject);
|
TopDeviceObject = IoGetAttachedDeviceReference(DeviceObject);
|
||||||
|
|
||||||
Irp = IoBuildAsynchronousFsdRequest(IRP_MJ_POWER,
|
Irp = IoBuildAsynchronousFsdRequest(IRP_MJ_POWER,
|
||||||
TopDeviceObject,
|
TopDeviceObject,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -547,12 +547,12 @@ PoRequestPowerIrp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
ExFreePool(RequestPowerItem);
|
ExFreePool(RequestPowerItem);
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* POWER IRPs are always initialized with a status code of
|
/* POWER IRPs are always initialized with a status code of
|
||||||
STATUS_NOT_IMPLEMENTED */
|
STATUS_NOT_IMPLEMENTED */
|
||||||
Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
|
Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
|
||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
|
|
||||||
Stack = IoGetNextIrpStackLocation(Irp);
|
Stack = IoGetNextIrpStackLocation(Irp);
|
||||||
Stack->MinorFunction = MinorFunction;
|
Stack->MinorFunction = MinorFunction;
|
||||||
if (MinorFunction == IRP_MN_WAIT_WAKE)
|
if (MinorFunction == IRP_MN_WAIT_WAKE)
|
||||||
|
@ -562,18 +562,18 @@ PoRequestPowerIrp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
Stack->Parameters.Power.Type = DevicePowerState;
|
Stack->Parameters.Power.Type = DevicePowerState;
|
||||||
Stack->Parameters.Power.State = PowerState;
|
Stack->Parameters.Power.State = PowerState;
|
||||||
}
|
}
|
||||||
|
|
||||||
RequestPowerItem->CompletionRoutine = CompletionFunction;
|
RequestPowerItem->CompletionRoutine = CompletionFunction;
|
||||||
RequestPowerItem->PowerState = PowerState;
|
RequestPowerItem->PowerState = PowerState;
|
||||||
RequestPowerItem->Context = Context;
|
RequestPowerItem->Context = Context;
|
||||||
RequestPowerItem->TopDeviceObject = TopDeviceObject;
|
RequestPowerItem->TopDeviceObject = TopDeviceObject;
|
||||||
|
|
||||||
if (pIrp != NULL)
|
if (pIrp != NULL)
|
||||||
*pIrp = Irp;
|
*pIrp = Irp;
|
||||||
|
|
||||||
IoSetCompletionRoutine(Irp, PopRequestPowerIrpCompletion, RequestPowerItem, TRUE, TRUE, TRUE);
|
IoSetCompletionRoutine(Irp, PopRequestPowerIrpCompletion, RequestPowerItem, TRUE, TRUE, TRUE);
|
||||||
PoCallDriver(TopDeviceObject, Irp);
|
PoCallDriver(TopDeviceObject, Irp);
|
||||||
|
|
||||||
/* Always return STATUS_PENDING. The completion routine
|
/* Always return STATUS_PENDING. The completion routine
|
||||||
* will call CompletionFunction and complete the Irp.
|
* will call CompletionFunction and complete the Irp.
|
||||||
*/
|
*/
|
||||||
|
@ -663,7 +663,7 @@ NtPowerInformation(IN POWER_INFORMATION_LEVEL PowerInformationLevel,
|
||||||
PowerInformationLevel,
|
PowerInformationLevel,
|
||||||
InputBuffer, InputBufferLength,
|
InputBuffer, InputBufferLength,
|
||||||
OutputBuffer, OutputBufferLength);
|
OutputBuffer, OutputBufferLength);
|
||||||
|
|
||||||
switch (PowerInformationLevel)
|
switch (PowerInformationLevel)
|
||||||
{
|
{
|
||||||
case SystemBatteryState:
|
case SystemBatteryState:
|
||||||
|
@ -841,7 +841,7 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
|
||||||
if (SystemAction == PowerActionShutdown) PopReadShutdownPolicy();
|
if (SystemAction == PowerActionShutdown) PopReadShutdownPolicy();
|
||||||
|
|
||||||
/* Disable lazy flushing of registry */
|
/* Disable lazy flushing of registry */
|
||||||
DPRINT1("Stopping lazy flush\n");
|
DPRINT("Stopping lazy flush\n");
|
||||||
CmSetLazyFlushState(FALSE);
|
CmSetLazyFlushState(FALSE);
|
||||||
|
|
||||||
/* Setup the power action */
|
/* Setup the power action */
|
||||||
|
@ -849,13 +849,13 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
|
||||||
Action.Flags = Flags;
|
Action.Flags = Flags;
|
||||||
|
|
||||||
/* Notify callbacks */
|
/* Notify callbacks */
|
||||||
DPRINT1("Notifying callbacks\n");
|
DPRINT("Notifying callbacks\n");
|
||||||
ExNotifyCallback(PowerStateCallback, (PVOID)3, NULL);
|
ExNotifyCallback(PowerStateCallback, (PVOID)3, NULL);
|
||||||
|
|
||||||
/* Swap in any worker thread stacks */
|
/* Swap in any worker thread stacks */
|
||||||
DPRINT1("Swapping worker threads\n");
|
DPRINT("Swapping worker threads\n");
|
||||||
ExSwapinWorkerThreads(FALSE);
|
ExSwapinWorkerThreads(FALSE);
|
||||||
|
|
||||||
/* Make our action global */
|
/* Make our action global */
|
||||||
PopAction = Action;
|
PopAction = Action;
|
||||||
|
|
||||||
|
@ -884,7 +884,7 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
|
||||||
|
|
||||||
/* Check if we're still in an invalid status */
|
/* Check if we're still in an invalid status */
|
||||||
if (!NT_SUCCESS(Status)) break;
|
if (!NT_SUCCESS(Status)) break;
|
||||||
|
|
||||||
#ifndef NEWCC
|
#ifndef NEWCC
|
||||||
/* Flush dirty cache pages */
|
/* Flush dirty cache pages */
|
||||||
CcRosFlushDirtyPages(-1, &Dummy, FALSE); //HACK: We really should wait here!
|
CcRosFlushDirtyPages(-1, &Dummy, FALSE); //HACK: We really should wait here!
|
||||||
|
@ -893,14 +893,14 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Flush all volumes and the registry */
|
/* Flush all volumes and the registry */
|
||||||
DPRINT1("Flushing volumes, cache flushed %lu pages\n", Dummy);
|
DPRINT("Flushing volumes, cache flushed %lu pages\n", Dummy);
|
||||||
PopFlushVolumes(PopAction.Shutdown);
|
PopFlushVolumes(PopAction.Shutdown);
|
||||||
|
|
||||||
/* Set IRP for drivers */
|
/* Set IRP for drivers */
|
||||||
PopAction.IrpMinor = IRP_MN_SET_POWER;
|
PopAction.IrpMinor = IRP_MN_SET_POWER;
|
||||||
if (PopAction.Shutdown)
|
if (PopAction.Shutdown)
|
||||||
{
|
{
|
||||||
DPRINT1("Queueing shutdown thread\n");
|
DPRINT("Queueing shutdown thread\n");
|
||||||
/* Check if we are running in the system context */
|
/* Check if we are running in the system context */
|
||||||
if (PsGetCurrentProcess() != PsInitialSystemProcess)
|
if (PsGetCurrentProcess() != PsInitialSystemProcess)
|
||||||
{
|
{
|
||||||
|
@ -910,7 +910,7 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
ExQueueWorkItem(&PopShutdownWorkItem, CriticalWorkQueue);
|
ExQueueWorkItem(&PopShutdownWorkItem, CriticalWorkQueue);
|
||||||
|
|
||||||
/* Spend us -- when we wake up, the system is good to go down */
|
/* Spend us -- when we wake up, the system is good to go down */
|
||||||
KeSuspendThread(KeGetCurrentThread());
|
KeSuspendThread(KeGetCurrentThread());
|
||||||
Status = STATUS_SYSTEM_SHUTDOWN;
|
Status = STATUS_SYSTEM_SHUTDOWN;
|
||||||
|
@ -923,7 +923,7 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
|
||||||
PopGracefulShutdown(NULL);
|
PopGracefulShutdown(NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* You should not have made it this far */
|
/* You should not have made it this far */
|
||||||
ASSERTMSG("System is still up and running?!", FALSE);
|
ASSERTMSG("System is still up and running?!", FALSE);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1134,8 +1134,11 @@ SeValidSecurityDescriptor(IN ULONG Length,
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
NTSTATUS NTAPI
|
_IRQL_requires_max_(PASSIVE_LEVEL)
|
||||||
SeDeassignSecurity(PSECURITY_DESCRIPTOR *SecurityDescriptor)
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
SeDeassignSecurity(
|
||||||
|
_Inout_ PSECURITY_DESCRIPTOR *SecurityDescriptor)
|
||||||
{
|
{
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
|
@ -1149,36 +1152,22 @@ SeDeassignSecurity(PSECURITY_DESCRIPTOR *SecurityDescriptor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
NTSTATUS NTAPI
|
|
||||||
SeAssignSecurityEx(IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL,
|
|
||||||
IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL,
|
|
||||||
OUT PSECURITY_DESCRIPTOR *NewDescriptor,
|
|
||||||
IN GUID *ObjectType OPTIONAL,
|
|
||||||
IN BOOLEAN IsDirectoryObject,
|
|
||||||
IN ULONG AutoInheritFlags,
|
|
||||||
IN PSECURITY_SUBJECT_CONTEXT SubjectContext,
|
|
||||||
IN PGENERIC_MAPPING GenericMapping,
|
|
||||||
IN POOL_TYPE PoolType)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
NTSTATUS NTAPI
|
_IRQL_requires_max_(PASSIVE_LEVEL)
|
||||||
SeAssignSecurity(PSECURITY_DESCRIPTOR _ParentDescriptor OPTIONAL,
|
NTSTATUS
|
||||||
PSECURITY_DESCRIPTOR _ExplicitDescriptor OPTIONAL,
|
NTAPI
|
||||||
PSECURITY_DESCRIPTOR *NewDescriptor,
|
SeAssignSecurityEx(
|
||||||
BOOLEAN IsDirectoryObject,
|
_In_opt_ PSECURITY_DESCRIPTOR _ParentDescriptor,
|
||||||
PSECURITY_SUBJECT_CONTEXT SubjectContext,
|
_In_opt_ PSECURITY_DESCRIPTOR _ExplicitDescriptor,
|
||||||
PGENERIC_MAPPING GenericMapping,
|
_Out_ PSECURITY_DESCRIPTOR *NewDescriptor,
|
||||||
POOL_TYPE PoolType)
|
_In_opt_ GUID *ObjectType,
|
||||||
|
_In_ BOOLEAN IsDirectoryObject,
|
||||||
|
_In_ ULONG AutoInheritFlags,
|
||||||
|
_In_ PSECURITY_SUBJECT_CONTEXT SubjectContext,
|
||||||
|
_In_ PGENERIC_MAPPING GenericMapping,
|
||||||
|
_In_ POOL_TYPE PoolType)
|
||||||
{
|
{
|
||||||
PISECURITY_DESCRIPTOR ParentDescriptor = _ParentDescriptor;
|
PISECURITY_DESCRIPTOR ParentDescriptor = _ParentDescriptor;
|
||||||
PISECURITY_DESCRIPTOR ExplicitDescriptor = _ExplicitDescriptor;
|
PISECURITY_DESCRIPTOR ExplicitDescriptor = _ExplicitDescriptor;
|
||||||
|
@ -1196,6 +1185,11 @@ SeAssignSecurity(PSECURITY_DESCRIPTOR _ParentDescriptor OPTIONAL,
|
||||||
PACL Dacl = NULL;
|
PACL Dacl = NULL;
|
||||||
PACL Sacl = NULL;
|
PACL Sacl = NULL;
|
||||||
|
|
||||||
|
DBG_UNREFERENCED_PARAMETER(ObjectType);
|
||||||
|
DBG_UNREFERENCED_PARAMETER(AutoInheritFlags);
|
||||||
|
DBG_UNREFERENCED_PARAMETER(GenericMapping);
|
||||||
|
UNREFERENCED_PARAMETER(PoolType);
|
||||||
|
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
/* Lock subject context */
|
/* Lock subject context */
|
||||||
|
@ -1327,7 +1321,7 @@ SeAssignSecurity(PSECURITY_DESCRIPTOR _ParentDescriptor OPTIONAL,
|
||||||
if (Descriptor == NULL)
|
if (Descriptor == NULL)
|
||||||
{
|
{
|
||||||
DPRINT1("ExAlloctePool() failed\n");
|
DPRINT1("ExAlloctePool() failed\n");
|
||||||
/* FIXME: Unlock subject context */
|
SeUnlockSubjectContext(SubjectContext);
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1375,10 +1369,38 @@ SeAssignSecurity(PSECURITY_DESCRIPTOR _ParentDescriptor OPTIONAL,
|
||||||
|
|
||||||
*NewDescriptor = Descriptor;
|
*NewDescriptor = Descriptor;
|
||||||
|
|
||||||
DPRINT("Descrptor %p\n", Descriptor);
|
DPRINT("Descriptor %p\n", Descriptor);
|
||||||
ASSERT(RtlLengthSecurityDescriptor(Descriptor));
|
ASSERT(RtlLengthSecurityDescriptor(Descriptor));
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
_IRQL_requires_max_(PASSIVE_LEVEL)
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
SeAssignSecurity(
|
||||||
|
_In_opt_ PSECURITY_DESCRIPTOR ParentDescriptor,
|
||||||
|
_In_opt_ PSECURITY_DESCRIPTOR ExplicitDescriptor,
|
||||||
|
_Out_ PSECURITY_DESCRIPTOR *NewDescriptor,
|
||||||
|
_In_ BOOLEAN IsDirectoryObject,
|
||||||
|
_In_ PSECURITY_SUBJECT_CONTEXT SubjectContext,
|
||||||
|
_In_ PGENERIC_MAPPING GenericMapping,
|
||||||
|
_In_ POOL_TYPE PoolType)
|
||||||
|
{
|
||||||
|
PAGED_CODE();
|
||||||
|
|
||||||
|
return SeAssignSecurityEx(ParentDescriptor,
|
||||||
|
ExplicitDescriptor,
|
||||||
|
NewDescriptor,
|
||||||
|
NULL,
|
||||||
|
IsDirectoryObject,
|
||||||
|
0,
|
||||||
|
SubjectContext,
|
||||||
|
GenericMapping,
|
||||||
|
PoolType);
|
||||||
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -71,7 +71,7 @@ CSR_API(BaseSrvCreateProcess)
|
||||||
HANDLE ProcessHandle, ThreadHandle;
|
HANDLE ProcessHandle, ThreadHandle;
|
||||||
PCSR_THREAD CsrThread;
|
PCSR_THREAD CsrThread;
|
||||||
PCSR_PROCESS Process;
|
PCSR_PROCESS Process;
|
||||||
ULONG Flags = 0, VdmPower = 0, DebugFlags = 0;
|
ULONG Flags = 0, DebugFlags = 0, VdmPower = 0;
|
||||||
|
|
||||||
/* Get the current client thread */
|
/* Get the current client thread */
|
||||||
CsrThread = CsrGetClientThread();
|
CsrThread = CsrGetClientThread();
|
||||||
|
@ -83,6 +83,13 @@ CSR_API(BaseSrvCreateProcess)
|
||||||
Flags = (ULONG_PTR)CreateProcessRequest->ProcessHandle & 3;
|
Flags = (ULONG_PTR)CreateProcessRequest->ProcessHandle & 3;
|
||||||
CreateProcessRequest->ProcessHandle = (HANDLE)((ULONG_PTR)CreateProcessRequest->ProcessHandle & ~3);
|
CreateProcessRequest->ProcessHandle = (HANDLE)((ULONG_PTR)CreateProcessRequest->ProcessHandle & ~3);
|
||||||
|
|
||||||
|
/* Some things should be done if this is a VDM process */
|
||||||
|
if (CreateProcessRequest->VdmBinaryType)
|
||||||
|
{
|
||||||
|
/* We need to set the VDM power later on */
|
||||||
|
VdmPower = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Duplicate the process handle */
|
/* Duplicate the process handle */
|
||||||
Status = NtDuplicateObject(Process->ProcessHandle,
|
Status = NtDuplicateObject(Process->ProcessHandle,
|
||||||
CreateProcessRequest->ProcessHandle,
|
CreateProcessRequest->ProcessHandle,
|
||||||
|
@ -112,10 +119,9 @@ CSR_API(BaseSrvCreateProcess)
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See if this is a VDM process */
|
/* If this is a VDM process, request VDM power */
|
||||||
if (VdmPower)
|
if (VdmPower)
|
||||||
{
|
{
|
||||||
/* Request VDM powers */
|
|
||||||
Status = NtSetInformationProcess(ProcessHandle,
|
Status = NtSetInformationProcess(ProcessHandle,
|
||||||
ProcessWx86Information,
|
ProcessWx86Information,
|
||||||
&VdmPower,
|
&VdmPower,
|
||||||
|
|
|
@ -576,7 +576,7 @@ CSR_API(BaseSrvCheckVDM)
|
||||||
BOOLEAN NewConsoleRecord = FALSE;
|
BOOLEAN NewConsoleRecord = FALSE;
|
||||||
|
|
||||||
/* Don't do anything if the VDM has been disabled in the registry */
|
/* Don't do anything if the VDM has been disabled in the registry */
|
||||||
if (!BaseSrvIsVdmAllowed()) return STATUS_ACCESS_DENIED;
|
if (!BaseSrvIsVdmAllowed()) return STATUS_VDM_DISALLOWED;
|
||||||
|
|
||||||
/* Validate the message buffers */
|
/* Validate the message buffers */
|
||||||
if (!CsrValidateMessageBuffer(ApiMessage,
|
if (!CsrValidateMessageBuffer(ApiMessage,
|
||||||
|
|
|
@ -576,7 +576,7 @@ CsrParseServerCommandLine(IN ULONG ArgumentCount,
|
||||||
ParameterValue = NULL;
|
ParameterValue = NULL;
|
||||||
ParameterValue = strchr(ParameterName, '=');
|
ParameterValue = strchr(ParameterName, '=');
|
||||||
if (ParameterValue) *ParameterValue++ = ANSI_NULL;
|
if (ParameterValue) *ParameterValue++ = ANSI_NULL;
|
||||||
DPRINT1("Name=%s, Value=%s\n", ParameterName, ParameterValue);
|
DPRINT("Name=%s, Value=%s\n", ParameterName, ParameterValue);
|
||||||
|
|
||||||
/* Check for Object Directory */
|
/* Check for Object Directory */
|
||||||
if (_stricmp(ParameterName, "ObjectDirectory") == 0)
|
if (_stricmp(ParameterName, "ObjectDirectory") == 0)
|
||||||
|
|
|
@ -633,8 +633,8 @@ IntCreateRegistryPath(
|
||||||
RtlAppendUnicodeToString(DeviceRegistryPath, Insert2);
|
RtlAppendUnicodeToString(DeviceRegistryPath, Insert2);
|
||||||
}
|
}
|
||||||
|
|
||||||
DbgPrint("Formatted registry key '%wZ' -> '%wZ'\n",
|
DPRINT("Formatted registry key '%wZ' -> '%wZ'\n",
|
||||||
DriverRegistryPath, DeviceRegistryPath);
|
DriverRegistryPath, DeviceRegistryPath);
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3365,7 +3365,7 @@ GreExtTextOutW(
|
||||||
BrushOrigin.x = 0;
|
BrushOrigin.x = 0;
|
||||||
BrushOrigin.y = 0;
|
BrushOrigin.y = 0;
|
||||||
|
|
||||||
psurf = dc->dclevel.pSurface ;
|
psurf = dc->dclevel.pSurface;
|
||||||
|
|
||||||
if(!psurf)
|
if(!psurf)
|
||||||
psurf = psurfDefaultBitmap;
|
psurf = psurfDefaultBitmap;
|
||||||
|
@ -3921,7 +3921,7 @@ NtGdiGetCharABCWidthsW(
|
||||||
IN HDC hDC,
|
IN HDC hDC,
|
||||||
IN UINT FirstChar,
|
IN UINT FirstChar,
|
||||||
IN ULONG Count,
|
IN ULONG Count,
|
||||||
IN OPTIONAL PWCHAR pwch,
|
IN OPTIONAL PWCHAR UnSafepwch,
|
||||||
IN FLONG fl,
|
IN FLONG fl,
|
||||||
OUT PVOID Buffer)
|
OUT PVOID Buffer)
|
||||||
{
|
{
|
||||||
|
@ -3937,14 +3937,29 @@ NtGdiGetCharABCWidthsW(
|
||||||
HFONT hFont = 0;
|
HFONT hFont = 0;
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
PMATRIX pmxWorldToDevice;
|
PMATRIX pmxWorldToDevice;
|
||||||
|
PWCHAR Safepwch = NULL;
|
||||||
|
|
||||||
if (pwch)
|
if (!Buffer)
|
||||||
{
|
{
|
||||||
|
EngSetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (UnSafepwch)
|
||||||
|
{
|
||||||
|
UINT pwchSize = Count * sizeof(WCHAR);
|
||||||
|
Safepwch = ExAllocatePoolWithTag(PagedPool, pwchSize, GDITAG_TEXT);
|
||||||
|
|
||||||
|
if(!Safepwch)
|
||||||
|
{
|
||||||
|
EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
ProbeForRead(pwch,
|
ProbeForRead(UnSafepwch, pwchSize, 1);
|
||||||
sizeof(PWSTR),
|
RtlCopyMemory(Safepwch, UnSafepwch, pwchSize);
|
||||||
1);
|
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
@ -3952,15 +3967,13 @@ NtGdiGetCharABCWidthsW(
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
EngSetLastError(Status);
|
if(Safepwch)
|
||||||
return FALSE;
|
ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
|
||||||
}
|
|
||||||
|
|
||||||
if (!Buffer)
|
EngSetLastError(Status);
|
||||||
{
|
|
||||||
EngSetLastError(ERROR_INVALID_PARAMETER);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3969,6 +3982,10 @@ NtGdiGetCharABCWidthsW(
|
||||||
if (!fl) SafeBuffF = (LPABCFLOAT) SafeBuff;
|
if (!fl) SafeBuffF = (LPABCFLOAT) SafeBuff;
|
||||||
if (SafeBuff == NULL)
|
if (SafeBuff == NULL)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if(Safepwch)
|
||||||
|
ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
|
||||||
|
|
||||||
EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -3977,6 +3994,10 @@ NtGdiGetCharABCWidthsW(
|
||||||
if (dc == NULL)
|
if (dc == NULL)
|
||||||
{
|
{
|
||||||
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
||||||
|
|
||||||
|
if(Safepwch)
|
||||||
|
ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
|
||||||
|
|
||||||
EngSetLastError(ERROR_INVALID_HANDLE);
|
EngSetLastError(ERROR_INVALID_HANDLE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -3991,6 +4012,10 @@ NtGdiGetCharABCWidthsW(
|
||||||
if (TextObj == NULL)
|
if (TextObj == NULL)
|
||||||
{
|
{
|
||||||
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
||||||
|
|
||||||
|
if(Safepwch)
|
||||||
|
ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
|
||||||
|
|
||||||
EngSetLastError(ERROR_INVALID_HANDLE);
|
EngSetLastError(ERROR_INVALID_HANDLE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -4014,6 +4039,10 @@ NtGdiGetCharABCWidthsW(
|
||||||
{
|
{
|
||||||
DPRINT1("WARNING: Could not find desired charmap!\n");
|
DPRINT1("WARNING: Could not find desired charmap!\n");
|
||||||
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
||||||
|
|
||||||
|
if(Safepwch)
|
||||||
|
ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
|
||||||
|
|
||||||
EngSetLastError(ERROR_INVALID_HANDLE);
|
EngSetLastError(ERROR_INVALID_HANDLE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -4035,12 +4064,12 @@ NtGdiGetCharABCWidthsW(
|
||||||
{
|
{
|
||||||
int adv, lsb, bbx, left, right;
|
int adv, lsb, bbx, left, right;
|
||||||
|
|
||||||
if (pwch)
|
if (Safepwch)
|
||||||
{
|
{
|
||||||
if (fl & GCABCW_INDICES)
|
if (fl & GCABCW_INDICES)
|
||||||
glyph_index = pwch[i - FirstChar];
|
glyph_index = Safepwch[i - FirstChar];
|
||||||
else
|
else
|
||||||
glyph_index = FT_Get_Char_Index(face, pwch[i - FirstChar]);
|
glyph_index = FT_Get_Char_Index(face, Safepwch[i - FirstChar]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -4079,13 +4108,18 @@ NtGdiGetCharABCWidthsW(
|
||||||
IntUnLockFreeType;
|
IntUnLockFreeType;
|
||||||
TEXTOBJ_UnlockText(TextObj);
|
TEXTOBJ_UnlockText(TextObj);
|
||||||
Status = MmCopyToCaller(Buffer, SafeBuff, BufferSize);
|
Status = MmCopyToCaller(Buffer, SafeBuff, BufferSize);
|
||||||
|
|
||||||
|
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
||||||
|
|
||||||
|
if(Safepwch)
|
||||||
|
ExFreePoolWithTag(Safepwch , GDITAG_TEXT);
|
||||||
|
|
||||||
if (! NT_SUCCESS(Status))
|
if (! NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
SetLastNtError(Status);
|
SetLastNtError(Status);
|
||||||
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
|
||||||
DPRINT("NtGdiGetCharABCWidths Worked!\n");
|
DPRINT("NtGdiGetCharABCWidths Worked!\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -4099,7 +4133,7 @@ NtGdiGetCharWidthW(
|
||||||
IN HDC hDC,
|
IN HDC hDC,
|
||||||
IN UINT FirstChar,
|
IN UINT FirstChar,
|
||||||
IN UINT Count,
|
IN UINT Count,
|
||||||
IN OPTIONAL PWCHAR pwc,
|
IN OPTIONAL PWCHAR UnSafepwc,
|
||||||
IN FLONG fl,
|
IN FLONG fl,
|
||||||
OUT PVOID Buffer)
|
OUT PVOID Buffer)
|
||||||
{
|
{
|
||||||
|
@ -4115,14 +4149,22 @@ NtGdiGetCharWidthW(
|
||||||
UINT i, glyph_index, BufferSize;
|
UINT i, glyph_index, BufferSize;
|
||||||
HFONT hFont = 0;
|
HFONT hFont = 0;
|
||||||
PMATRIX pmxWorldToDevice;
|
PMATRIX pmxWorldToDevice;
|
||||||
|
PWCHAR Safepwc = NULL;
|
||||||
|
|
||||||
if (pwc)
|
if (UnSafepwc)
|
||||||
{
|
{
|
||||||
|
UINT pwcSize = Count * sizeof(WCHAR);
|
||||||
|
Safepwc = ExAllocatePoolWithTag(PagedPool, pwcSize, GDITAG_TEXT);
|
||||||
|
|
||||||
|
if(!Safepwc)
|
||||||
|
{
|
||||||
|
EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
ProbeForRead(pwc,
|
ProbeForRead(UnSafepwc, pwcSize, 1);
|
||||||
sizeof(PWSTR),
|
RtlCopyMemory(Safepwc, UnSafepwc, pwcSize);
|
||||||
1);
|
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
@ -4130,6 +4172,7 @@ NtGdiGetCharWidthW(
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
EngSetLastError(Status);
|
EngSetLastError(Status);
|
||||||
|
@ -4141,6 +4184,9 @@ NtGdiGetCharWidthW(
|
||||||
if (!fl) SafeBuffF = (PFLOAT) SafeBuff;
|
if (!fl) SafeBuffF = (PFLOAT) SafeBuff;
|
||||||
if (SafeBuff == NULL)
|
if (SafeBuff == NULL)
|
||||||
{
|
{
|
||||||
|
if(Safepwc)
|
||||||
|
ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
|
||||||
|
|
||||||
EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -4148,6 +4194,9 @@ NtGdiGetCharWidthW(
|
||||||
dc = DC_LockDc(hDC);
|
dc = DC_LockDc(hDC);
|
||||||
if (dc == NULL)
|
if (dc == NULL)
|
||||||
{
|
{
|
||||||
|
if(Safepwc)
|
||||||
|
ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
|
||||||
|
|
||||||
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
||||||
EngSetLastError(ERROR_INVALID_HANDLE);
|
EngSetLastError(ERROR_INVALID_HANDLE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -4161,6 +4210,9 @@ NtGdiGetCharWidthW(
|
||||||
|
|
||||||
if (TextObj == NULL)
|
if (TextObj == NULL)
|
||||||
{
|
{
|
||||||
|
if(Safepwc)
|
||||||
|
ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
|
||||||
|
|
||||||
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
||||||
EngSetLastError(ERROR_INVALID_HANDLE);
|
EngSetLastError(ERROR_INVALID_HANDLE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -4184,7 +4236,11 @@ NtGdiGetCharWidthW(
|
||||||
if (!found)
|
if (!found)
|
||||||
{
|
{
|
||||||
DPRINT1("WARNING: Could not find desired charmap!\n");
|
DPRINT1("WARNING: Could not find desired charmap!\n");
|
||||||
ExFreePool(SafeBuff);
|
|
||||||
|
if(Safepwc)
|
||||||
|
ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
|
||||||
|
|
||||||
|
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
||||||
EngSetLastError(ERROR_INVALID_HANDLE);
|
EngSetLastError(ERROR_INVALID_HANDLE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -4204,12 +4260,12 @@ NtGdiGetCharWidthW(
|
||||||
|
|
||||||
for (i = FirstChar; i < FirstChar+Count; i++)
|
for (i = FirstChar; i < FirstChar+Count; i++)
|
||||||
{
|
{
|
||||||
if (pwc)
|
if (Safepwc)
|
||||||
{
|
{
|
||||||
if (fl & GCW_INDICES)
|
if (fl & GCW_INDICES)
|
||||||
glyph_index = pwc[i - FirstChar];
|
glyph_index = Safepwc[i - FirstChar];
|
||||||
else
|
else
|
||||||
glyph_index = FT_Get_Char_Index(face, pwc[i - FirstChar]);
|
glyph_index = FT_Get_Char_Index(face, Safepwc[i - FirstChar]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -4227,6 +4283,10 @@ NtGdiGetCharWidthW(
|
||||||
IntUnLockFreeType;
|
IntUnLockFreeType;
|
||||||
TEXTOBJ_UnlockText(TextObj);
|
TEXTOBJ_UnlockText(TextObj);
|
||||||
MmCopyToCaller(Buffer, SafeBuff, BufferSize);
|
MmCopyToCaller(Buffer, SafeBuff, BufferSize);
|
||||||
|
|
||||||
|
if(Safepwc)
|
||||||
|
ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
|
||||||
|
|
||||||
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
ExFreePoolWithTag(SafeBuff, GDITAG_TEXT);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -4347,7 +4407,8 @@ NtGdiGetGlyphIndicesW(
|
||||||
FT_Face face;
|
FT_Face face;
|
||||||
WCHAR DefChar = 0xffff;
|
WCHAR DefChar = 0xffff;
|
||||||
PWSTR Buffer = NULL;
|
PWSTR Buffer = NULL;
|
||||||
ULONG Size;
|
ULONG Size, pwcSize;
|
||||||
|
PWSTR Safepwc = NULL;
|
||||||
|
|
||||||
if ((!UnSafepwc) && (!UnSafepgi)) return cwc;
|
if ((!UnSafepwc) && (!UnSafepgi)) return cwc;
|
||||||
|
|
||||||
|
@ -4392,11 +4453,19 @@ NtGdiGetGlyphIndicesW(
|
||||||
ExFreePoolWithTag(potm, GDITAG_TEXT);
|
ExFreePoolWithTag(potm, GDITAG_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pwcSize = cwc * sizeof(WCHAR);
|
||||||
|
Safepwc = ExAllocatePoolWithTag(PagedPool, pwcSize, GDITAG_TEXT);
|
||||||
|
|
||||||
|
if (!Safepwc)
|
||||||
|
{
|
||||||
|
EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
|
return GDI_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
ProbeForRead(UnSafepwc,
|
ProbeForRead(UnSafepwc, pwcSize, 1);
|
||||||
sizeof(PWSTR),
|
RtlCopyMemory(Safepwc, UnSafepwc, pwcSize);
|
||||||
1);
|
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
@ -4417,7 +4486,7 @@ NtGdiGetGlyphIndicesW(
|
||||||
|
|
||||||
for (i = 0; i < cwc; i++)
|
for (i = 0; i < cwc; i++)
|
||||||
{
|
{
|
||||||
Buffer[i] = FT_Get_Char_Index(face, UnSafepwc[i]); // FIXME: Unsafe!
|
Buffer[i] = FT_Get_Char_Index(face, Safepwc[i]);
|
||||||
if (Buffer[i] == 0)
|
if (Buffer[i] == 0)
|
||||||
{
|
{
|
||||||
Buffer[i] = DefChar;
|
Buffer[i] = DefChar;
|
||||||
|
@ -4428,12 +4497,8 @@ NtGdiGetGlyphIndicesW(
|
||||||
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
ProbeForWrite(UnSafepgi,
|
ProbeForWrite(UnSafepgi, cwc * sizeof(WORD), 1);
|
||||||
sizeof(WORD),
|
RtlCopyMemory(UnSafepgi, Buffer, cwc * sizeof(WORD));
|
||||||
1);
|
|
||||||
RtlCopyMemory(UnSafepgi,
|
|
||||||
Buffer,
|
|
||||||
cwc*sizeof(WORD));
|
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
@ -4443,6 +4508,7 @@ NtGdiGetGlyphIndicesW(
|
||||||
|
|
||||||
ErrorRet:
|
ErrorRet:
|
||||||
ExFreePoolWithTag(Buffer, GDITAG_TEXT);
|
ExFreePoolWithTag(Buffer, GDITAG_TEXT);
|
||||||
|
ExFreePoolWithTag(Safepwc, GDITAG_TEXT);
|
||||||
if (NT_SUCCESS(Status)) return cwc;
|
if (NT_SUCCESS(Status)) return cwc;
|
||||||
EngSetLastError(Status);
|
EngSetLastError(Status);
|
||||||
return GDI_ERROR;
|
return GDI_ERROR;
|
||||||
|
|
|
@ -473,7 +473,7 @@ IntGetDesktopObjectHandle(PDESKTOP DesktopObject)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ERR("Got handle: %p\n", Ret);
|
TRACE("Got handle: %p\n", Ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ret;
|
return Ret;
|
||||||
|
|
|
@ -75,8 +75,8 @@ InitDisplayDriver(
|
||||||
DEVMODEW dmDefault;
|
DEVMODEW dmDefault;
|
||||||
DWORD dwVga;
|
DWORD dwVga;
|
||||||
|
|
||||||
ERR("InitDisplayDriver(%S, %S);\n",
|
TRACE("InitDisplayDriver(%S, %S);\n",
|
||||||
pwszDeviceName, pwszRegKey);
|
pwszDeviceName, pwszRegKey);
|
||||||
|
|
||||||
/* Open the driver's registry key */
|
/* Open the driver's registry key */
|
||||||
Status = RegOpenKey(pwszRegKey, &hkey);
|
Status = RegOpenKey(pwszRegKey, &hkey);
|
||||||
|
|
|
@ -632,7 +632,7 @@ co_IntMouseActivateWindow(PWND Wnd)
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
ERR("Mouse Active\n");
|
TRACE("Mouse Active\n");
|
||||||
co_IntSetForegroundAndFocusWindow(Wnd, TRUE);
|
co_IntSetForegroundAndFocusWindow(Wnd, TRUE);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -820,7 +820,7 @@ UserSetActiveWindow(PWND Wnd)
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
Yes your eye are not deceiving you~!
|
Yes your eye are not deceiving you~!
|
||||||
|
|
||||||
First part of wines Win.c test_SetActiveWindow:
|
First part of wines Win.c test_SetActiveWindow:
|
||||||
|
|
||||||
flush_events( TRUE );
|
flush_events( TRUE );
|
||||||
|
|
|
@ -52,7 +52,7 @@ StartDebugHotKeys(VOID)
|
||||||
}
|
}
|
||||||
UserRegisterHotKey(PWND_BOTTOM, IDHK_SHIFTF12, MOD_SHIFT, vk);
|
UserRegisterHotKey(PWND_BOTTOM, IDHK_SHIFTF12, MOD_SHIFT, vk);
|
||||||
UserRegisterHotKey(PWND_BOTTOM, IDHK_F12, 0, vk);
|
UserRegisterHotKey(PWND_BOTTOM, IDHK_F12, 0, vk);
|
||||||
ERR("Start up the debugger hotkeys!! Should see this once!\n");
|
TRACE("Start up the debugger hotkeys!! If you see this you eneabled debugprints. Congrats!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -248,8 +248,8 @@ co_UserProcessHotKeys(WORD wVk, BOOL bIsDown)
|
||||||
if (pHotKey->pWnd == PWND_BOTTOM)
|
if (pHotKey->pWnd == PWND_BOTTOM)
|
||||||
{
|
{
|
||||||
if (gpqForeground != NULL)
|
if (gpqForeground != NULL)
|
||||||
{
|
{
|
||||||
pWnd = gpqForeground->spwndFocus;
|
pWnd = gpqForeground->spwndFocus;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -354,7 +354,7 @@ DefWndSetHotKey(PWND pWnd, WPARAM wParam)
|
||||||
pHotKey = pHotKey->pNext;
|
pHotKey = pHotKey->pNext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pHotKey = gphkFirst;
|
pHotKey = gphkFirst;
|
||||||
pLink = &gphkFirst;
|
pLink = &gphkFirst;
|
||||||
while (pHotKey)
|
while (pHotKey)
|
||||||
|
|
|
@ -197,7 +197,7 @@ UserInitKeyboard(HANDLE hKeyboardDevice)
|
||||||
{
|
{
|
||||||
ERR("NtDeviceIoControlFile() failed, ignored\n");
|
ERR("NtDeviceIoControlFile() failed, ignored\n");
|
||||||
}
|
}
|
||||||
ERR("Keyboard type %d, subtype %d and number of func keys %d\n",
|
TRACE("Keyboard type %d, subtype %d and number of func keys %d\n",
|
||||||
gKeyboardInfo.KeyboardIdentifier.Type,
|
gKeyboardInfo.KeyboardIdentifier.Type,
|
||||||
gKeyboardInfo.KeyboardIdentifier.Subtype,
|
gKeyboardInfo.KeyboardIdentifier.Subtype,
|
||||||
gKeyboardInfo.NumberOfFunctionKeys);
|
gKeyboardInfo.NumberOfFunctionKeys);
|
||||||
|
@ -820,7 +820,7 @@ ProcessKeyEvent(WORD wVk, WORD wScanCode, DWORD dwFlags, BOOL bInjected, DWORD d
|
||||||
TRACE("HotKey Processed\n");
|
TRACE("HotKey Processed\n");
|
||||||
bPostMsg = FALSE;
|
bPostMsg = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wFixedVk = IntFixVk(wSimpleVk, bExt); /* LSHIFT + EXT = RSHIFT */
|
wFixedVk = IntFixVk(wSimpleVk, bExt); /* LSHIFT + EXT = RSHIFT */
|
||||||
if (wSimpleVk == VK_SHIFT) /* shift can't be extended */
|
if (wSimpleVk == VK_SHIFT) /* shift can't be extended */
|
||||||
bExt = FALSE;
|
bExt = FALSE;
|
||||||
|
|
|
@ -2068,7 +2068,7 @@ MsqCleanupMessageQueue(PTHREADINFO pti)
|
||||||
IntGetSysCursorInfo()->CurrentCursorObject = NULL;
|
IntGetSysCursorInfo()->CurrentCursorObject = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ERR("DereferenceObject pCursor\n");
|
TRACE("DereferenceObject pCursor\n");
|
||||||
UserDereferenceObject(pCursor);
|
UserDereferenceObject(pCursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2200,7 +2200,7 @@ MsqSetStateWindow(PTHREADINFO pti, ULONG Type, HWND hWnd)
|
||||||
{
|
{
|
||||||
HWND Prev;
|
HWND Prev;
|
||||||
PUSER_MESSAGE_QUEUE MessageQueue;
|
PUSER_MESSAGE_QUEUE MessageQueue;
|
||||||
|
|
||||||
MessageQueue = pti->MessageQueue;
|
MessageQueue = pti->MessageQueue;
|
||||||
|
|
||||||
switch(Type)
|
switch(Type)
|
||||||
|
|
|
@ -164,8 +164,8 @@ NtUserInitialize(
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
ERR("Enter NtUserInitialize(%lx, %p, %p)\n",
|
TRACE("Enter NtUserInitialize(%lx, %p, %p)\n",
|
||||||
dwWinVersion, hPowerRequestEvent, hMediaRequestEvent);
|
dwWinVersion, hPowerRequestEvent, hMediaRequestEvent);
|
||||||
|
|
||||||
/* Check the Windows version */
|
/* Check the Windows version */
|
||||||
if (dwWinVersion != 0)
|
if (dwWinVersion != 0)
|
||||||
|
|
|
@ -250,7 +250,7 @@ ClientThreadSetup(VOID)
|
||||||
// CsrConnectToUser, we'll pretend we "did something" here. Then the rest will
|
// CsrConnectToUser, we'll pretend we "did something" here. Then the rest will
|
||||||
// continue as normal.
|
// continue as normal.
|
||||||
//
|
//
|
||||||
UNIMPLEMENTED;
|
//UNIMPLEMENTED;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ BOOL
|
||||||
Init(VOID)
|
Init(VOID)
|
||||||
{
|
{
|
||||||
USERCONNECT UserCon;
|
USERCONNECT UserCon;
|
||||||
|
|
||||||
/* Set PEB data */
|
/* Set PEB data */
|
||||||
NtCurrentPeb()->KernelCallbackTable = apfnDispatch;
|
NtCurrentPeb()->KernelCallbackTable = apfnDispatch;
|
||||||
NtCurrentPeb()->PostProcessInitRoutine = NULL;
|
NtCurrentPeb()->PostProcessInitRoutine = NULL;
|
||||||
|
@ -379,7 +379,7 @@ GetConnected(VOID)
|
||||||
g_ulSharedDelta = UserCon.siClient.ulSharedDelta;
|
g_ulSharedDelta = UserCon.siClient.ulSharedDelta;
|
||||||
gpsi = SharedPtrToUser(UserCon.siClient.psi);
|
gpsi = SharedPtrToUser(UserCon.siClient.psi);
|
||||||
gHandleTable = SharedPtrToUser(UserCon.siClient.aheList);
|
gHandleTable = SharedPtrToUser(UserCon.siClient.aheList);
|
||||||
gHandleEntries = SharedPtrToUser(gHandleTable->handles);
|
gHandleEntries = SharedPtrToUser(gHandleTable->handles);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -387,9 +387,9 @@ NTSTATUS
|
||||||
WINAPI
|
WINAPI
|
||||||
User32CallClientThreadSetupFromKernel(PVOID Arguments, ULONG ArgumentLength)
|
User32CallClientThreadSetupFromKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||||
{
|
{
|
||||||
ERR("ClientThreadSetup\n");
|
TRACE("ClientThreadSetup\n");
|
||||||
ClientThreadSetup();
|
ClientThreadSetup();
|
||||||
return ZwCallbackReturn(NULL, 0, STATUS_SUCCESS);
|
return ZwCallbackReturn(NULL, 0, STATUS_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
@ -403,7 +403,7 @@ User32CallGetCharsetInfo(PVOID Arguments, ULONG ArgumentLength)
|
||||||
|
|
||||||
Ret = TranslateCharsetInfo((DWORD *)pgci->Locale, &pgci->Cs, TCI_SRCLOCALE);
|
Ret = TranslateCharsetInfo((DWORD *)pgci->Locale, &pgci->Cs, TCI_SRCLOCALE);
|
||||||
|
|
||||||
return ZwCallbackReturn(Arguments, ArgumentLength, Ret ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);
|
return ZwCallbackReturn(Arguments, ArgumentLength, Ret ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
|
|
@ -202,7 +202,7 @@ User32CreateWindowEx(DWORD dwExStyle,
|
||||||
return (HWND)0;
|
return (HWND)0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Copy it to a LARGE_STRING */
|
/* Copy it to a LARGE_STRING */
|
||||||
lstrClassName.Buffer = ClassName.Buffer;
|
lstrClassName.Buffer = ClassName.Buffer;
|
||||||
lstrClassName.Length = ClassName.Length;
|
lstrClassName.Length = ClassName.Length;
|
||||||
|
@ -219,7 +219,7 @@ User32CreateWindowEx(DWORD dwExStyle,
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PSTR AnsiBuffer = WindowName.Buffer;
|
PSTR AnsiBuffer = WindowName.Buffer;
|
||||||
ULONG AnsiLength = WindowName.Length;
|
ULONG AnsiLength = WindowName.Length;
|
||||||
|
|
||||||
WindowName.Length = 0;
|
WindowName.Length = 0;
|
||||||
WindowName.MaximumLength = AnsiLength * sizeof(WCHAR);
|
WindowName.MaximumLength = AnsiLength * sizeof(WCHAR);
|
||||||
WindowName.Buffer = RtlAllocateHeap(RtlGetProcessHeap(),
|
WindowName.Buffer = RtlAllocateHeap(RtlGetProcessHeap(),
|
||||||
|
@ -311,7 +311,7 @@ cleanup:
|
||||||
{
|
{
|
||||||
RtlFreeUnicodeString(&ClassName);
|
RtlFreeUnicodeString(&ClassName);
|
||||||
}
|
}
|
||||||
|
|
||||||
RtlFreeLargeString(&WindowName);
|
RtlFreeLargeString(&WindowName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,7 +343,7 @@ CreateWindowExA(DWORD dwExStyle,
|
||||||
|
|
||||||
if (!RegisterDefaultClasses)
|
if (!RegisterDefaultClasses)
|
||||||
{
|
{
|
||||||
ERR("CreateWindowExA RegisterSystemControls\n");
|
TRACE("CreateWindowExA RegisterSystemControls\n");
|
||||||
RegisterSystemControls();
|
RegisterSystemControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -488,7 +488,7 @@ CreateWindowExW(DWORD dwExStyle,
|
||||||
WARN("WS_EX_MDICHILD, but parent %p is not MDIClient\n", hWndParent);
|
WARN("WS_EX_MDICHILD, but parent %p is not MDIClient\n", hWndParent);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* lpParams of WM_[NC]CREATE is different for MDI children.
|
/* lpParams of WM_[NC]CREATE is different for MDI children.
|
||||||
* MDICREATESTRUCT members have the originally passed values.
|
* MDICREATESTRUCT members have the originally passed values.
|
||||||
*/
|
*/
|
||||||
|
@ -680,7 +680,7 @@ User32EnumWindows(HDESK hDesktop,
|
||||||
if (!dwCount)
|
if (!dwCount)
|
||||||
{
|
{
|
||||||
if (!dwThreadId)
|
if (!dwThreadId)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else
|
else
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -692,7 +692,7 @@ User32EnumWindows(HDESK hDesktop,
|
||||||
/* FIXME I'm only getting NULLs from Thread Enumeration, and it's
|
/* FIXME I'm only getting NULLs from Thread Enumeration, and it's
|
||||||
* probably because I'm not doing it right in NtUserBuildHwndList.
|
* probably because I'm not doing it right in NtUserBuildHwndList.
|
||||||
* Once that's fixed, we shouldn't have to check for a NULL HWND
|
* Once that's fixed, we shouldn't have to check for a NULL HWND
|
||||||
* here
|
* here
|
||||||
* This is now fixed in revision 50205. (jt)
|
* This is now fixed in revision 50205. (jt)
|
||||||
*/
|
*/
|
||||||
if (!pHwnd[i]) /* don't enumerate a NULL HWND */
|
if (!pHwnd[i]) /* don't enumerate a NULL HWND */
|
||||||
|
@ -907,7 +907,7 @@ GetAncestor(HWND hwnd, UINT gaFlags)
|
||||||
{
|
{
|
||||||
HWND Ret = NULL;
|
HWND Ret = NULL;
|
||||||
PWND Ancestor, Wnd;
|
PWND Ancestor, Wnd;
|
||||||
|
|
||||||
Wnd = ValidateHwnd(hwnd);
|
Wnd = ValidateHwnd(hwnd);
|
||||||
if (!Wnd)
|
if (!Wnd)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -960,7 +960,7 @@ GetClientRect(HWND hWnd, LPRECT lpRect)
|
||||||
lpRect->bottom = GetSystemMetrics(SM_CYMINIMIZED);
|
lpRect->bottom = GetSystemMetrics(SM_CYMINIMIZED);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if ( hWnd != GetDesktopWindow()) // Wnd->fnid != FNID_DESKTOP )
|
if ( hWnd != GetDesktopWindow()) // Wnd->fnid != FNID_DESKTOP )
|
||||||
{
|
{
|
||||||
/* lpRect->left = lpRect->top = 0;
|
/* lpRect->left = lpRect->top = 0;
|
||||||
lpRect->right = Wnd->rcClient.right - Wnd->rcClient.left;
|
lpRect->right = Wnd->rcClient.right - Wnd->rcClient.left;
|
||||||
|
@ -977,7 +977,7 @@ GetClientRect(HWND hWnd, LPRECT lpRect)
|
||||||
/* Do this until Init bug is fixed. This sets 640x480, see InitMetrics.
|
/* Do this until Init bug is fixed. This sets 640x480, see InitMetrics.
|
||||||
lpRect->right = GetSystemMetrics(SM_CXSCREEN);
|
lpRect->right = GetSystemMetrics(SM_CXSCREEN);
|
||||||
lpRect->bottom = GetSystemMetrics(SM_CYSCREEN);
|
lpRect->bottom = GetSystemMetrics(SM_CYSCREEN);
|
||||||
*/ }
|
*/ }
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1103,7 +1103,7 @@ GetWindow(HWND hWnd,
|
||||||
if (Wnd->spwndPrev != NULL)
|
if (Wnd->spwndPrev != NULL)
|
||||||
FoundWnd = DesktopPtrToUser(Wnd->spwndPrev);
|
FoundWnd = DesktopPtrToUser(Wnd->spwndPrev);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GW_CHILD:
|
case GW_CHILD:
|
||||||
if (Wnd->spwndChild != NULL)
|
if (Wnd->spwndChild != NULL)
|
||||||
FoundWnd = DesktopPtrToUser(Wnd->spwndChild);
|
FoundWnd = DesktopPtrToUser(Wnd->spwndChild);
|
||||||
|
@ -1370,7 +1370,7 @@ GetWindowThreadProcessId(HWND hWnd,
|
||||||
if (!pWnd) return Ret;
|
if (!pWnd) return Ret;
|
||||||
|
|
||||||
ti = pWnd->head.pti;
|
ti = pWnd->head.pti;
|
||||||
|
|
||||||
if (ti)
|
if (ti)
|
||||||
{
|
{
|
||||||
if (ti == GetW32ThreadInfo())
|
if (ti == GetW32ThreadInfo())
|
||||||
|
|
|
@ -261,7 +261,7 @@ CreateSysMenu(HWND hWnd)
|
||||||
if (hMenu != NULL)
|
if (hMenu != NULL)
|
||||||
{
|
{
|
||||||
mii.cbSize = sizeof(mii);
|
mii.cbSize = sizeof(mii);
|
||||||
mii.fMask = MIIM_STRING;
|
mii.fMask = MIIM_STRING;
|
||||||
mii.dwTypeData = szMenuStringBack;
|
mii.dwTypeData = szMenuStringBack;
|
||||||
mii.cch = sizeof(szMenuStringBack)/sizeof(WCHAR);
|
mii.cch = sizeof(szMenuStringBack)/sizeof(WCHAR);
|
||||||
|
|
||||||
|
@ -711,7 +711,7 @@ OnActivate(PGUI_CONSOLE_DATA GuiData, WPARAM wParam)
|
||||||
{
|
{
|
||||||
WORD ActivationState = LOWORD(wParam);
|
WORD ActivationState = LOWORD(wParam);
|
||||||
|
|
||||||
DPRINT1("WM_ACTIVATE - ActivationState = %d\n");
|
DPRINT("WM_ACTIVATE - ActivationState = %d\n");
|
||||||
|
|
||||||
if ( ActivationState == WA_ACTIVE ||
|
if ( ActivationState == WA_ACTIVE ||
|
||||||
ActivationState == WA_CLICKACTIVE )
|
ActivationState == WA_CLICKACTIVE )
|
||||||
|
|
Loading…
Reference in a new issue