ЗДраствуйте
вот кусок кода
1 ый вариант
...
#ifdef DRIVER_EXPORTS
#define DRIVER_API __declspec(dllexport)
#endif
DRIVER_API std::queue<UCHAR> qRecv ;
...
С#
[DllImport("
C:/pockettest/Driver.dll")]
public static extern queue<byte> qRecv; -определение не верное как определить не знаю
2 ой вариант
С++
...
#ifdef DRIVER_EXPORTS
#define DRIVER_API __declspec(dllexport)
#endif
DRIVER_API bool DrvMsgSend(UCHAR buffer[],int DataSize)//возвращает указатель на первый элемент массива и длину самого массива
{
if(!qRecv.empty())
{
QElement = (qRecv.front()); //указатель на первый элемент
qRecv.pop();
MsgSize = sizeof(&QElement);
return 1;
}
return 0;
}
...
С#
[DllImport("
C:/pockettest/Driver.dll")]
public static extern bool DrvMsgSend(byte buffer[],int DataSize);
Вопрос:
Есть очередь в длл написанной на с++ , в С# есть поток который опрашивает эту очередь и по заполнению берет от туда элемент и выполняет дальнейшие действия. В очереди хранятся массивы байт.
Как это реализовать? Если шарп сможет самостоятельно взть элемент из очереди или если нет то как по указателю на массив и его длине получить сам массив- может есть какой нить аналог memcpy из с++?