[resend PATCH 1/2] ntdll: Implement NtQuerySystemInformationEx(SystemCpuSetInformation).

Paul Gofman pgofman at codeweavers.com
Mon Mar 29 14:40:27 CDT 2021


On 3/29/21 22:33, Alexandre Julliard wrote:
> Paul Gofman <pgofman at codeweavers.com> writes:
>
>> @@ -2651,6 +2743,10 @@ NTSTATUS WINAPI NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS class,
>>          break;
>>      }
>>  
>> +    case SystemCpuSetInformation:
>> +        return is_win64 ? NtQuerySystemInformationEx(class, NULL, 0, info, size, ret_size)
>> +                : STATUS_INVALID_INFO_CLASS;
>> +
>>      case SystemRecommendedSharedDataAlignment:
>>      {
>>          len = sizeof(DWORD);
>> @@ -2773,6 +2869,31 @@ NTSTATUS WINAPI NtQuerySystemInformationEx( SYSTEM_INFORMATION_CLASS class,
>>          break;
>>      }
>>  
>> +    case SystemCpuSetInformation:
>> +    {
>> +        unsigned int cpu_count = NtCurrentTeb()->Peb->NumberOfProcessors;
>> +        PROCESS_BASIC_INFORMATION pbi;
>> +        HANDLE process;
>> +
>> +        if (!query || query_len < sizeof(HANDLE) || (is_win64 && query_len != sizeof(HANDLE)))
>> +            return STATUS_INVALID_PARAMETER;
> I suspect these 64-bit differences are side-effects of the WoW
> translation rather than fundamental limitations. We may not be able to
> find a 32-bit Windows version to verify this, but there doesn't seem to
> be a reason to deliberately break these calls on 32-bit Wine.
>
As for the first difference (NtQuerySystemInformation), it is just a
matter of return error value, it doesn't work on neither 64 nor 32 bit
as seems to always require NtQuerySystemInformationEx() to pass the
process handle through its parameters. NtQuerySystemInformationEx()
should work on 32 bit Wine as well.

As for the second condition in NtQuerySystemInformationEx(), as far as
my testing goes on Windows 32bit (wow64) it allows bigger query len than
sizeof(HANDLE) and still succeeds while on win64 requires the exact
match, so it still works on 32 bit Wine.

Or did I misunderstand the concern?




More information about the wine-devel mailing list