Dans un projet .NET 3.0, je dois effectuer des appels via P/Invoke (en particulier pour les fonctions PrintTicket Provider comme PTConvertPrintTicketToDevMode()).System.Runtime.InteropServices.ComTypes.IStream à System.IO.Stream
Le cadre a une définition managée de l'interface COM IStream: System.Runtime.InteropServices.ComTypes.IStream
J'ai besoin ce que System.IO.Stream pour que je puisse facilement utiliser des classes .NET (comme XmlDocument) avec la sortie de ces importations les fonctions. Mais je ne peux pas voir une façon moins pénible de convertir ce retour et System.IO.Stream autre que de lire et d'écrire des données d'un bloc d'octets à la fois. Cela semble trop clair pour une tâche qui semble très commune. Ou est-ce que j'y vais dans le mauvais sens?
Je PTConvertPrintTicketToDevMode() importé comme:
[DllImport("prntvpt.dll")]
public static extern int
PTConvertPrintTicketToDevMode(IntPtr hProvider,
IStream pPrintTicket,
EDefaultDevmodeType baseDevmodeType,
EPrintTicketScope scope,
IntPtr pcbDevmode,
out IntPtr ppDevmode,
[MarshalAs(UnmanagedType.BStr)]out String pbstrErrorMessage);
merci. C'était une façon que je regardais. Je ne pouvais juste pas croire, ils ont fait l'IStream w/o l'emballage. – moogs