On Thu, 30 Apr 2026 00:50:20 GMT, David Holmes <[email protected]> wrote:
>> On Linux, various `stat()` calls allow probing information about files >> without opening them, but until recently, there wasn't an equivalent API >> available on Windows. Now that `GetFileInformationByName()` exists, >> we can use it instead of `GetFileInformationByHandle()`, which required >> first opening the file to create a file handle, then reading the file >> attributes, and finally closing the file handle. >> >> Since `GetFileInformationByName()` is available on only newer versions >> of Windows, this patch uses conditional compilation and `LoadLibrary()` >> + `GetProcAddress()` to dynamically set the pointer to the API function. >> If the dynamic loading fails, we fall back to the old API. To avoid >> problems with race conditions, we use Windows' `INIT_ONCE` and >> `InitOnceExecuteOnce()` to initialize the function pointer exactly once. >> >> The rest of the patch is similar to the addition of any new JNI function >> call. WindowsConstants.java adds the relevant flags and error codes, >> WindowsFileAttributes.java adds the Java entry point, >> WindowsNativeDispatcher.java links the Java function with the C >> function, and WindowsNativeDispatcher.c calls the Win32 API function. >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > test/jdk/java/io/File/GetFileInformationByName.java line 2: > >> 1: /* >> 2: * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. > > Use Microsoft copyright not Oracle. Thanks Also this test is in the wrong place, and overlaps significantly with the existing tests in java/nio/file. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/30994#discussion_r3165757159
