|
|
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
Весь день сегодня убил на совершенно необъяснимую штуку. Давайте разбираться. Все знают, что в сервисных приложениях необходимо переопределять функцию GetServiceController, которая возвращает калбек. Я знаю, что в Windows есть возможность выделять исполняемую память, заполнять нужными значениями и вызывать как функции. У нас есть универсальный класс сервера, я стал его модифицировать, проверять врапперы - всё отлично. Но в режиме службы при остановке возникает Exception, идентифицировать который не удалось. Сейчас я сделал простенький проект, который иллюстрирует ситуацию. Там генерируемый код просто делает прыжок в имеющийся калбек. Есть ли возможность избежать эксепшна? Может конечно идея изначально обречённая на провал, но хочется хотя бы понимать, почему сервис работает именно так. Листинг публикую здесь, проект прилагаю в аттаче. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 17:25 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUВсе знают, что в сервисных приложениях необходимо переопределять функцию GetServiceController Уже смешно. Ты не поверишь, но нет, такую функцию переопределять не надо. Если в какой-то левой библиотеке оно и сделано так, то это проблемы исключительно этой библиотеки. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 17:58 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ты гонишь? Это абстрактная функция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 18:05 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUТы гонишь? Нет, я читаю MSDN. В отличии от. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 18:07 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Так это класс Delphi. Читать ты конечно можешь что угодно. Но если не переопределить функцию - будет Exception. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 18:25 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Это не класс делфи. Это обычная статическая локальная функция-коллбэк Код: plaintext 1. 2. 3. параметры которой описаны в доке про RegisterServiceCtrlHandler. А GetServiceController - это да, абстрактный метод TService, который должен возвращать указатель на нее. Ты можешь, конечно, изобрести велосипед и забабахать код этой функции динамически, но тогда разбирайся сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 18:33 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUТак это класс Delphi. Воот. И именно поэтому твоё пафосное "все знают, что" и далее по тексту - совершенно невтемное. Те, кто пишут сервисы без применения классов Дельфи, совершенно справедливо кладут на такое знание болт. SOFT FOR YOUЧитать ты конечно можешь что угодно. Ага, и именно сейчас у меня открыт "Intel Architecture Software Developer’s Manual", содержимое которого недвусмысленно намекает, что ты ещё и машинный код сформировал криво. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 18:35 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
YuRock, Dimitry Sibiryakov, Мне абсолютно всё равно, что вы читаете, используете вы стандартный класс или юзаете API. Это не важно. Меня интересует, почему вдруг executable память стала некорректно работать. И как это исправить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 19:28 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 19:42 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
rashid.abzalov, он так не хочет осознанно, потому он этот код в 1-м сообщении темы, которое ты не читал, и закомментил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 19:51 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovSOFT FOR YOUЧитать ты конечно можешь что угодно. Ага, и именно сейчас у меня открыт "Intel Architecture Software Developer’s Manual", содержимое которого недвусмысленно намекает, что ты ещё и машинный код сформировал криво. SOFT FOR YOUМне абсолютно всё равно, что вы читаете, используете вы стандартный класс или юзаете API. Это не важно. Эва... Ню-ню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 20:30 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ты хочешь сказать, у меня обычный джамп некорректный? )) Ну-ну ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 22:02 |
|
||
|
Сервис и HEAP_CREATE_ENABLE_EXECUTE
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUТы хочешь сказать, у меня обычный джамп некорректный? )) Ты не поверишь, но именно это написано в том мануале, который я читаю. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 22:21 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39614425&tid=2041153]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
193ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 280ms |
| total: | 598ms |

| 0 / 0 |
