Client-Side Pipe-Implementierung

Die Clientanwendung muss die folgenden Prozeduren implementieren, die der Clientstub während der Datenübertragung aufruft:

  • Eine Pullprozedur (für eine Eingabepipe)
  • Eine Pushprozedur (für eine Ausgabepipe)
  • Eine Zuordnungsprozedur zum Zuweisen eines Puffers für die Übertragungsdaten

Alle diese Prozeduren müssen die Argumente verwenden, die in der von MIDL generierten Headerdatei angegeben sind. Darüber hinaus muss die Clientanwendung über eine Zustandsvariable verfügen, um zu identifizieren, wo Daten gefunden oder platziert werden sollen.

Das Alloc-Verfahren kann auch so einfach oder so komplex wie nötig sein. Beispielsweise kann er jedes Mal einen Zeiger auf denselben Puffer zurückgeben, wenn der Stub die Funktion aufruft, oder er kann jedes Mal eine andere Menge an Arbeitsspeicher zuweisen. Wenn Ihre Daten bereits in der richtigen Form vorliegen (z. B. ein Array von Pipeelementen), können Sie die Zuordnungsprozedur mit der Pullprozedur koordinieren, um einen Puffer zuzuweisen, der bereits die Daten enthält. In diesem Fall könnte ihre Pullprozedur eine leere Routine sein.

Die Pufferzuordnung muss in Bytes erfolgen. Die Push- und Pullprozeduren bearbeiten dagegen Elemente, deren Größe in Bytes davon abhängt, wie sie definiert wurden.

In diesem Abschnitt wird die Clientimplementierung von Eingabe- und Ausgabepipes in den folgenden Abschnitten erläutert: