|
не работает ping x64
|
|||
---|---|---|---|
#18+
Привет всем, ниже описанный код прекрасно работает в x32, но в x64 при ping ('test') в локальной сети в процедуре function PingIp(Address: RawByteString): Boolean; в строке error := GetLastError(); значение error=87 и соответственно дальше не отрабатывает Подскажите плиз, что не так? Код: 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. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 18:34 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
SergeyKNP, из-за смены битности поплыли размеры указателей и структур. внимательно см msdn, там есть нужные примечания еще тут почитай https://stackoverflow.com/questions/51087679/winapi-icmpsendecho-on-64-bit-platform ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 18:59 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Siemargl из-за смены битности поплыли размеры указателей и структур. внимательно см msdn, там есть нужные примечания еще тут почитай https://stackoverflow.com/questions/51087679/winapi-icmpsendecho-on-64-bit-platform читал...но нельзя ли поправить сам код который я привёл? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 19:10 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Пробежал глазами. Первое, что бросилось в глаза - packed. Его нужно убрать ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 19:22 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
было IcmpSendEcho(hIP, DestAddress.S_addr, @pingBuffer, sizeof(pingBuffer), Nil, pIpe, sizeof(icmp_echo_reply) + sizeof(pingBuffer), 10); поправил на ...добавил +8 IcmpSendEcho(hIP, DestAddress.S_addr, @pingBuffer, sizeof(pingBuffer), Nil, pIpe, sizeof(icmp_echo_reply) + sizeof(pingBuffer)+8, 10); теперь работает ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 19:42 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
_Vasilisk_ Пробежал глазами. Первое, что бросилось в глаза - packed. Его нужно убрать Разработчиков API, работающих с хрен-знает-как выравненными структурами нужно убивать на месте а не поощрять. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 19:47 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис, может предложишь свой вариант КОНКРЕТНОГО кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 19:51 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
_Vasilisk_ Пробежал глазами. Первое, что бросилось в глаза - packed. Его нужно убрать SergeyKNP, не мучайся, проcто используй Indy ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 20:08 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
SergeyKNP Siemargl из-за смены битности поплыли размеры указателей и структур. внимательно см msdn, там есть нужные примечания еще тут почитай https://stackoverflow.com/questions/51087679/winapi-icmpsendecho-on-64-bit-platform читал...но нельзя ли поправить сам код который я привёл? Можно. Правь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 20:54 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
SergeyKNP Подскажите плиз, что не так? Убери packed ; ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 21:11 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
"Siemargl, Можно. Правь." особо одарённые, такие как ты, пусть не возбуждаются и идут лесом. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 23:35 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
asutp2 ты предлагаешь отдать на откуп компилятору и директиве выравнивания расположение полей в рекорде?)))) Код: pascal 1.
и оно же, о чудо!, совпадает с дефолтным значением. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 01:53 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис работающих с хрен-знает-как выравненными структурами Код: pascal 1.
но packed - это полный бред ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 01:58 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
_Vasilisk_ asutp2 ты предлагаешь отдать на откуп компилятору и директиве выравнивания расположение полей в рекорде?)))) Код: pascal 1.
и оно же, о чудо!, совпадает с дефолтным значением. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 02:30 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Это легко проверяется чтением их объявления в заголовках SDK. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 03:07 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Это легко проверяется чтением их объявления в заголовках SDK. Вот пример структуры, которая в Win64 требует именно $ALIGN 4 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 04:13 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
_Vasilisk_ Соколинский Борис работающих с хрен-знает-как выравненными структурами Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Давай навскидку: что будет выведено? _Vasilisk_ но packed - это полный бред ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 10:28 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Когда требуется конкретное выравнивание задавайте его руками. О чём копья ломать... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 11:51 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
На самом деле выравнивание структур существенно только когда их размер меньше разрядности регистров, чтобы операции присваивания за один такт выполнялись. Кратность адреса в плане быстродействия дает прирост в копейки. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 12:02 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис Давай навскидку: что будет выведено? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 13:41 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Kazantsev Alexey Код: pascal 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 13:42 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
_Vasilisk_ Соколинский Борис Давай навскидку: что будет выведено? Код: plaintext 1. 2.
Т.е. "default 8" на поверку оказывается совсем не default и логика выравнивания весьма неоднозначная. И когда предлагается поверить, что неизвестно какой компилятор библиотеки использует такую же, нормальный ответ будет - "не надо выпендрежей, используйте packed record и #pragma pack(1) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 13:53 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис Бред - это использовать в межмодульных коммуникациях структуры переменного размера. Код: 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.
p.s. Почитал по своей же ссылке, пишут, что для 64 бит надо использовать вот такую структуру: https://docs.microsoft.com/en-us/windows/win32/api/ipexport/ns-ipexport-icmp_echo_reply32 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 13:55 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Выравнивание размера структуры и выравнивание её полей это как бы две разные вещи. Попробуйте sizeof от массива TByteRecord для пущей занимательности. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 13:59 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
_Vasilisk_ Это официальный синтаксис? Первый раз такое вижу Ну, как сказать... В доке такого нет, но в исходниках встречается со времён XE2. Даже FPC в режиме совместимости с дельфями это поддерживает. Начиная с Сиэтла (10.0) появился ещё и атрибут [Align(N)]. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 14:04 |
|
|
start [/forum/topic.php?fid=58&msg=40128850&tid=2036683]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 271ms |
total: | 420ms |
0 / 0 |