Client-Side Rohrimplementierung
Die Clientanwendung muss die folgenden Verfahren implementieren, die der Client-Stub während der Datenübertragung aufruft:
- Eine Pullprozedur (für eine Eingabepipeline)
- Eine Pushprozedur (für ein Ausgaberohr)
- Eine Alloc-Prozedur zum Zuordnen eines Puffers für die Übertragungsdaten
Alle diese Prozeduren müssen die argumente verwenden, die von der VON MIDL generierten Headerdatei angegeben werden. Darüber hinaus muss die Clientanwendung über eine Statusvariable verfügen, um zu ermitteln, wo Daten gefunden oder platziert werden sollen.
Das Alloc-Verfahren kann auch so einfach oder so komplex wie nötig sein. Beispielsweise kann ein Zeiger jedes Mal, wenn der Stub die Funktion aufruft, einen Zeiger auf denselben Puffer zurückgeben oder jedes Mal eine andere Menge Arbeitsspeicher zuweisen. Wenn sich Ihre Daten bereits in der richtigen Form befinden (z. B. ein Array von Pipeelementen), können Sie die Alloc-Prozedur mit der Pullprozedur koordinieren, um einen Puffer zuzuweisen, der die Daten bereits enthält. In diesem Fall kann es sich bei Ihrem Pull-Verfahren um eine leere Routine handeln.
Die Pufferzuweisung muss in Byte angegeben sein. Die Push- und Pull-Prozeduren dagegen bearbeiten Elemente, deren Größe in Bytes abhängig davon ist, wie sie definiert wurden.
In diesem Abschnitt wird die Clientimplementierung von Eingabe- und Ausgaberohren in den folgenden Abschnitten erläutert: