It works! Thanks a lot 440bx for this solution. I had 3 mistakes:
- the record must not be 'packed'
- type 'FILETIME' in the record is wrong, while your 'qword' works
- the type of 'info_id' should be 'dword' and not 'word'.
I had made a lot of tests and had already tried also this settings, but obviously not in 1 combination.
But I do not really understand, why 'qword' instead of 'FILETIME' makes this difference, because both have a size of 8 bytes (I checked it):
- using 4 x 'FILETIME' + 1x 'dword' (without 'packed') results to a record size of 36 (which looks correct because 4 x 8 + 4 = 36)
- but using 4 x 'qword' + 1x 'dword' (without 'packed') results now to a record size of 40 (which works, but why is this record now 4 bytes greater?)
Do you know the reason?
The 2nd point I do not understand is: just for fun I tried now again type 'word' for the 'info_id' parameter and it works too. I thought, that for a 'dword' parameter the compiler would place 4 bytes on the stack while for a 'word' parameter only 2 bytes. So 'word' should not work, but it does. Do you know, why 'word' also works? And how did you know, that this parameter is a 'dword'?