J'essaie d'utiliser System.Runtime.InteropServices.ComTypes.IStream de C#, mais j'ai des problèmes. Selon MSDN, la définition C# ressemble à ceci:C# et IStream.Read
void Read(
byte[] pv,
int cb,
IntPtr pcbRead
)
Fondamentalement, je peux lire les données du flux, mais la valeur « pcbRead » ci-dessus est toujours « 0 » (même si le tableau d'octets contient mes données) . En faisant un peu de lecture, il semble que l'argument pcbRead soit difficile à configurer correctement (bien que je sois relativement nouveau en C#).
Quoi qu'il en soit, mon code ressemble fondamentalement ceci:
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;
}
Encore une fois, le problème est que « myPtr » contient toujours « 0 » après la lecture, bien que « tampon » semble contenir des données valides.
Merci nobugz - vos suggestions fonctionnent parfaitement. –