[PATCH 2/2] kernel32: Implement a few more classes in GetFileInformationByHandleEx
Martin Storsjö
martin at martin.st
Tue May 12 12:11:24 CDT 2015
On Tue, 12 May 2015, Andrew Eikum wrote:
> On Tue, May 12, 2015 at 05:17:44PM +0300, Martin Storsjö wrote:
>>> @@ -919,8 +919,24 @@ BOOL WINAPI GetFileInformationByHandleEx( HANDLE handle, FILE_INFO_BY_HANDLE_CLA
>>> SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
>>> return FALSE;
>>>
>>> + case FileBasicInfo:
>>> + case FileStandardInfo:
>>> case FileNameInfo:
>>> - status = NtQueryInformationFile( handle, &io, info, size, FileNameInformation );
>>> + switch (class) {
>>> + case FileBasicInfo:
>>> + nt_class = FileBasicInformation;
>>> + break;
>>> + case FileStandardInfo:
>>> + nt_class = FileStandardInformation;
>>> + break;
>>> + case FileNameInfo:
>>> + nt_class = FileNameInformation;
>>> + break;
>>> + default:
>>> + assert(0);
>>> + break;
>
> The default case seems unnecessary, since it's impossible.
At least my gcc (4.7) doesn't realize it, and complains about all the
unhandled cases in the switch.
> But, this whole double-switch thing strikes me as ugly. Another option
> would be to call NtQueryInformationFile with the correct argument in
> each case, then break and do the 'if(status!=SUCCESS)' stuff outside
> of the switch statement. That would eliminate the code duplication
> with the NtQueryDirectoryFile error checking, too.
That sounds like a good idea.
>> Is there anything concrete that needs to be fixed in this (and the
>> other kernel32 patch in the same thread) to be acceptable?
>>
>
> Tests would help for both patches.
Yep, although I don't off-hand have any good idea of a meaningful test for
GetSystemTimePreciseAsFileTime.
// Martin
More information about the wine-devel
mailing list