On 2026-02-02 08:48, Jakob Bohm via Cygwin wrote:
On 02/02/2026 14:40, Corinna Vinschen via Cygwin wrote:
On Feb  2 13:24, Dan Shelton via Cygwin wrote:
I'm not sure whether the Cygwin code is correct. I did a peek with a
kernel debugger, and I see that FILE_RENAME_INFORMATION.RootDirectory
is always NULL if a file gets renamed to .cyg000000000xxxx. But if I
try that with NTFS or SMB, the NtSetInformationFile() to set
FileRenameInformation always fails.
Your testcase is incorrect, unfortunately.

     fri->FileNameLength = (wcslen(dstfile)+1)*sizeof(wchar_t);
For NT file paths, never count the trailing \0 to the length:

       fri->FileNameLength = wcslen(dstfile) * sizeof (WCHAR);

With that, your testcase works fine for me.

I am not sure what data structure this supposed "Friday" variable points to,

Ikke fredag: Windows abbrev; see Dan's post earlier in thread with inline STC:

    size_t fri_len = sizeof(FILE_RENAME_INFORMATION) +
(wcslen(dstfile)+1)*sizeof(wchar_t);

    fri = calloc(1, fri_len);

but in NT low level APIs, such as the NTXxxx syscalls exported by ntdll.dll,
a common structure is the UNICODE_STRING, which has 3 fields:
    Pointer to string buffer,
    Size of string buffer in bytes (often (length+1) * sizeof(WCHAR)) and
   Size of actual string in bytes (not counting the optional term 0 or other unused buffer space) Both byte counts are 16 bits, so structure can only hold strings up to 32767 WCHARs.
>
There are very similar structures using plain char and these structures can also be marshalled into byte streams by replacing the pointer with a 32 bit byte offset.
Cygwin usually uses the user NT service routines <null>/Ex/W/A functions taking WCHAR or char pointers or buffers and lengths.

--
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retrancher  but when there is no more to cut
                                -- Antoine de Saint-Exupéry

--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to