Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
Народ, срочно нужно разобраться.. HEELP! Как в функцию в unmanaged dll передать указатель на массив БИНАРНЫХ данных неизвестного заранее размера? Всякие [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=MAX_PATH )] не прокатывают, видимо.. Та библа есть на делфи, я его не знаю - сделал параметры PByteArray вместо PChar - так надо. До этого преобразования проблем, ессесно, не было. Просто надо не только текст передавать. Как заделать сабж? ----- Иногда решительный шаг вперед - результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 16:55 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
немного непонятно "неизвестного заранее размера" и направление: передать туда/получить обратно ? например, для передачи массива байт в библитеку (туда): Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 17:28 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
Окучиваю SPGP. Там входящий буфер был только текстовым - я переделал на бинарный, естественно, окучив тело функции (надеюсь, что верно) function spgp_encode(BufferIn, BufferOut: PChar; BufferOutLen: LongInt;...): LongInt;stdcall;export; превратилась в function spgp_encode(BufferIn: PByteArray; BufferInLen: LongInt; BufferOut: PByteArray; BufferOutLen: LongInt; ...): LongInt;stdcall;export; Надо вызывать ее из С#. Вопроса два - как правильно сделать [DllImport] и как правильно вызвать. ----- Иногда решительный шаг вперед - результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 17:52 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
т.е. нормально работало [ DllImport( "spgp.dll", EntryPoint="spgpuiencode", CharSet=CharSet.Ansi )] public static extern int spgpUIEncode ( StringBuilder BufferIn, StringBuilder BufferOut, int BufferOutLen, ...); и при вызове передавал заделанные StringBuilder с завершающим нулем (а в библиотеке длина входящего буфера определялась соответственно) теперь же - ХЗ! как ни тыркаюсь - не прокатывает ----- Иногда решительный шаг вперед - результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 17:55 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
посмотрел описание (если правильно нашел) - там речь идет только о строках и никаких двоичных данных - нет. может тебе сделать преобразование (самое легкое, по Base64) данных в строку ??? а при расшифровке - в обратную сторону ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:15 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
там - это где? в PGP - нет! Неужели так проблемно передать указатель на кусок памяти некоего размера наружу из C#??? ----- Иногда решительный шаг вперед - результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:22 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
Смотри мой первый ответ - это как раз и есть передача указателя на последовательность байт в памяти. Как видишь - просто, по самое не могу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:26 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
Можно примерчик импорта и вызова? По-моему, в доке ясно написано, что не получится смаршалить массив неизвестной длины. Делается это как-то через Ж.. а может я не прав. А пока я поменял в исходниках тип буферов на простой Pointer (гадаю на кофейной гуще :). Шаманю.. ----- Иногда решительный шаг вперед - результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:38 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:44 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
Не выходит :( мож по аське ? 32564604 ----- Иногда решительный шаг вперед - результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:49 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
Маршалится-то маршалится видимо.. стабильно выдает ошибку kPGPError_BadParams Смотрю эту функцию: function spgpuiencode( BufferIn : Pointer; BufferInLen : LongInt; BufferOut : Pointer; BufferOutLen : LongInt; Encrypt : LongInt; ........) и буфер дальше используется только в PGPOInputBuffer(Context, BufferIn, BufferInLen), где он описан в апи как VOID* что за фигня.. ----- Иногда решительный шаг вперед - результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:59 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
Ты можешь дать ссылку на описание библиотеки ? Нашел только: http://www.oz.net/~srheller/spgp/funcref/encrypt.html spgpspgpEncode Encrypt and/or sign text using conventional or public-key encryption. spgpUIEncode An alternative version of spgpEncode which uses PGP's user-interface dialogs to gather information about keys and passphrases. PGP 6.x only. Нет там даже упоминания о шифровании двоичных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 19:05 |
|
||
|
Marshaling бинарного массива произвольной длины
|
|||
|---|---|---|---|
|
#18+
Все заработало. Не пойму, где была проблема.. Просто взяло и заработало. А насчет SPGP - я ее подделал, чтоб с бинарными буферами работала. И еще кой чего подделал. spgpAnalyze.. криво работали. В общем, спасибо ;) ----- Иногда решительный шаг вперед - результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 12:48 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=32948891&tid=1437059]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 212ms |
| total: | 360ms |

| 0 / 0 |
