|
|
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
Добрый день. Долгое время пользовался самописной 32-хбитной программой, которая вытаскивает параметры файлов с помощью функции NtQueryInformationFile. Решил переписать программу и в процессе модификации собрать ее как 64-хбитную. Обнаружилось, что в 64-хбитном режиме функция не работает - возвращает код 0x80000002. С 32-хбитным режимом никаких проблем - все прекрасно живет. Перерыл полгугла - нигде не описано каких-то различий между вызовами функции под x86 и x64. Все параметры и их типы теоретически должны быть идентичны. Что я упускаю? Никто не сталкивался с подобной ситуацией? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2020, 19:20 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
http://docwiki.embarcadero.com/Libraries/Rio/en/System.IOUtils.TFile Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2020, 19:43 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
X-Cite, если бы мне хватало только трех дат, я именно так бы и поступил. NtQueryInformationFile возвращает 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2020, 19:46 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
Note If the call to this function occurs in user mode, you should use the name "NtQueryInformationFile" instead of "ZwQueryInformationFile". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2020, 23:06 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
Michael Longneck, и что? А я что в коде использовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2020, 23:20 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
0x80000002 = EXCEPTION_DATATYPE_MISALIGNMENT У вас структуры неправильно объявлены. https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_io_status_block ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2020, 23:27 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
GunSmoker, а как объяснить, что в 32-хбитном варианте никаких проблем со структурами не возникает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2020, 23:32 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
S_Gur GunSmoker, а как объяснить, что в 32-хбитном варианте никаких проблем со структурами не возникает? Каким-то чудом, судя по всему. Для начала: Код: pascal 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. В x64, если что, ULONG_PTR - это не DWord. Для продолжения : Код: pascal 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 01:11 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
alekcvp, судя по этой - http://delphiexpert.ru/tfiletime.html - статье, TFileTime - это и есть LARGE_INTEGER. Насколько я понимаю, FILE_BASIC_INFORMATION я описал вполне корректно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 06:06 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
В результате изысканий в указанном знающими товарищами направлении, наткнулся на следующую статейку: https://coderoad.ru/3707252/Как-преобразовать-объединение-C-внутри-структуры-в-Delphi В результате оформилась вполне себе рабочая структура: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. FILE_BASIC_INFORMATION оставлен без изменений - там все правильно Функция заработала, всем спасибо. Тема закрыта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 06:36 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
S_Gur В результате оформилась вполне себе рабочая структура: Для потомков оставлю правильные структуры alekcvp Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. alekcvp Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: pascal 1. 2. 3. 4. 5. 6. 7. Обратите внимание на отсутствие packed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 14:19 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
S_Gur GunSmoker, а как объяснить, что в 32-хбитном варианте никаких проблем со структурами не возникает? Как известно, 90% кода в интернете - говно . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2020, 16:04 |
|
||
|
ntdll NtQueryInformationFile x64
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Обратите внимание на отсутствие packed Кстати, а typedef struct в х86 по-умолчанию какое выравнивание имеет? S_Gur alekcvp, судя по этой - http://delphiexpert.ru/tfiletime.html - статье, TFileTime - это и есть LARGE_INTEGER. Насколько я понимаю, FILE_BASIC_INFORMATION я описал вполне корректно Где в исходной структуре вы увидели поле Reserve ?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2020, 00:56 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39972906&tid=2038192]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 363ms |

| 0 / 0 |
