|
|
|
Проблема при использовании DLL-враппера для Crypt32.dll
|
|||
|---|---|---|---|
|
#18+
Приветствую, коллеги. Есть программа, функционал которой расширяется плагинами, одно из таких расширений должно поддерживать шифрование с помощью CryptProtectData/CryptUnprotectData из Data Protection API (Crypt32.dll). Сперва написали тестовый модуль и статически прописали загрузку Crypt32.dll - всё работает отлично, написали обёртку - и тут случился облом. Операционка возвращает "System Error. Code: 127. The specified procedure could not be found" после не успешного вызова CryptProtectData() - по идее CryptUnprotectData() делает то же самое, просто до него дело не доходит. Сделал динамическую загрузку Crypt32.dll - результат тот же, если функции Crypt32.dll вызываются непосредственно из EXE - всё замечательно работает, если вызываем через обёртку из DLL - опять проблема. Иногда вместо ошибки 127 возвращается "System Error. Code: 87. The parameter is incorrect", но эта ошибка зачастую лечится перезапуском Делфи и ребилдом проекта. Если вдруг имеет какое значение, то проект собирался на Делфи 10.2. Буду рад любой подсказке, ибо сам весь в смущении и непонятности :) Выглядит вся эта кухня вот так: DPCrypt.pas Код: 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. 165. TestApp.dpr Код: 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. DPAPI.dpr Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 13:56 |
|
||
|
Проблема при использовании DLL-враппера для Crypt32.dll
|
|||
|---|---|---|---|
|
#18+
vdixБуду рад любой подсказке Наибольшая вероятность у неинициализированных переменных. Второе на очереди - порча памяти. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 14:14 |
|
||
|
Проблема при использовании DLL-враппера для Crypt32.dll
|
|||
|---|---|---|---|
|
#18+
Да вроде как всё инициализируется, память выделяется и освобождается корректно и делается это под каждый запрос в отдельности, у самого враппера никаких переменных нет, только локальные переменные функций, которые тут же и освобождаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 14:22 |
|
||
|
Проблема при использовании DLL-враппера для Crypt32.dll
|
|||
|---|---|---|---|
|
#18+
DrMemory я бы попробовал напустить. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 14:43 |
|
||
|
Проблема при использовании DLL-враппера для Crypt32.dll
|
|||
|---|---|---|---|
|
#18+
vdix, не поленился - скомпилил (D2009). У меня всё работает. В любых вариант. Да и в глаз с ходу ничего стремного не бросается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 14:48 |
|
||
|
Проблема при использовании DLL-враппера для Crypt32.dll
|
|||
|---|---|---|---|
|
#18+
vdix"System Error. Code: 127. The specified procedure could not be found" автор Код: pascal 1. может, не та dll подгружается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 15:00 |
|
||
|
Проблема при использовании DLL-враппера для Crypt32.dll
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov DrMemory я бы попробовал напустить. Dr. Memory крашится под моей Win10 x64 если передать параметр -ignore_kernel, а без него ругается, что неизвестное ядро и нужно бы с этим параметром запускать. goldmi45 vdix"System Error. Code: 127. The specified procedure could not be found" автор Код: pascal 1. может, не та dll подгружается... Да другой у меня в системе нет. И грузится она с одного пути. Просто в одном случае напрямую, во втором - из обёртки. Barmaley57 vdix, не поленился - скомпилил (D2009). У меня всё работает. В любых вариант. Да и в глаз с ходу ничего стремного не бросается. А вот это странно. Благодарю! Хотя D2009 уже юникодная, тут не подкопаешься. Больше того, я только что собрал этот же проект на ХЕ2 и он тоже работает! Видимо, проблема в самой Delphi 10.2. Не исключено, что она исправлена в последней версии, но у меня её пока что нет... Что же, спасибо всем за участие! Не сказать, что проблема решена, но как минимум один выход из создавшейся ситуации есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 15:24 |
|
||
|
Проблема при использовании DLL-враппера для Crypt32.dll
|
|||
|---|---|---|---|
|
#18+
vdixDr. Memory крашится под моей Win10 x64 если передать параметр -ignore_kernel, а без него ругается, что неизвестное ядро и нужно бы с этим параметром запускать. А, да, есть у него дурная привычка крашиться на оконных приложениях. Консольные вроде бы должны работать. Ну, тогда всегда остаётся старая добрая отладка записью в лог всего, чего ни попадя. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 15:35 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2038825]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
6ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 496ms |

| 0 / 0 |
