Я пытаюсь использовать System.Runtime.InteropServices.ComTypes.IStream из C #, но у меня возникли некоторые проблемы. Согласно MSDN, определение C # выглядит так:
void Read(
byte[] pv,
int cb,
IntPtr pcbRead
)
В принципе, я могу читать данные из потока, но указанное выше значение "pcbRead" всегда равно "0" (хотя байтовый массив содержит мои данные). При чтении кажется, что аргумент pcbRead довольно сложно правильно настроить (хотя я довольно плохо знаком с C #).
Во всяком случае, мой код в основном выглядит так:
myPtr = (IntPtr)0;
int buffSize = 8192;
byte[] buffer = new byte[buffSize];
while (true)
{
strm.Read(buffer, buffSize, myPtr);
fs.Write(buffer, 0, myPtr.ToInt32());
if (myPtr.ToInt32() < buffSize) break;
}
Опять же, проблема в том, что «myPtr» по-прежнему содержит «0» после чтения, хотя «буфер», кажется, содержит действительные данные.