Delen via


Gebruik van Winsock Kernel-functies versus Event Callback-functies

Voor bepaalde socketbewerkingen kan een Winsock Kernel-toepassing (WSK) een van de WSK-functies van de socket aanroepen om de bewerking uit te voeren of een event callback-functie inschakelen op de socket die het WSK-subsysteem aanroept wanneer de gebeurtenis die aan de bewerking is gekoppeld, optreedt. Wanneer u bijvoorbeeld gegevens ontvangt op een verbindingsgeoriënteerde socket, kan een WSK-toepassing aanroepen uitvoeren naar de WskReceive--functie, of een WskReceiveEvent callbackfunctie voor gebeurtenissen op de socket implementeren en inschakelen. De vereisten van een WSK-toepassing bepalen welke methode de toepassing moet gebruiken. In de WSK-documentatie worden voorbeelden gegeven voor het gebruik van beide methoden.

In de volgende lijsten vindt u een overzicht van enkele belangrijke punten voor elke methode.

Winsock-kernelfuncties gebruiken

  • De WSK-toepassing stuurt de socketbewerkingen aan, wat betekent dat de WSK-toepassing bepaalt wanneer de socketbewerkingen plaatsvinden. Dit vereenvoudigt mogelijk de synchronisatie die is vereist voor de WSK-toepassing.

  • De WSK-toepassing biedt IRP's voor de socketfuncties. Deze IRPs worden in de wachtrij geplaatst door het WSK-subsysteem totdat de socketbewerking is voltooid. Zie IRPs gebruiken met Winsock Kernel Functionsvoor meer informatie over het gebruik van IRPs met WSK-functies.

  • De WSK-toepassing kan socketbewerkingen blokkeren door te wachten tot de IRP voor elke bewerking is voltooid door het WSK-subsysteem.

  • De WSK-toepassing moet mogelijk meerdere socketbewerkingen in de wachtrij houden om ervoor te zorgen dat gegevensoverdracht met hoge prestaties op verbindingsgeoriënteerde sockets wordt gegarandeerd, om te voorkomen dat binnenkomende datagrammen worden verwijderd op datagramsockets of om te voorkomen dat binnenkomende verbindingen worden verwijderd op luistersockets.

  • De WSK-toepassing biedt de gegevensbuffers voor de gegevensoverdrachtbewerkingen. Dit vermindert het aantal keren dat de gegevens moeten worden gekopieerd. Als een WSK-toepassing echter meerdere bewerkingen voor gegevensoverdracht in de wachtrij houdt, moet de toepassing gegevensbuffers leveren aan het WSK-subsysteem voor elke bewerking voor gegevensoverdracht in de wachtrij. De WSK-toepassing vereist dus mogelijk extra geheugenbronnen.

Event Callback-functies gebruiken

  • Het WSK-subsysteem stuurt de socketbewerkingen aan, wat betekent dat het WSK-subsysteem de WSK-toepassing op de hoogte brengt van de gebeurtenissen van de socket door de callback-functies van de socket aan te roepen. Voor de WSK-toepassing is mogelijk complexere synchronisatie vereist om de asynchrone aard van de callback-functies van de gebeurtenis af te handelen.

  • De WSK-toepassing gebruikt geen IRP's voor de socketbewerkingen.

  • De WSK-toepassing hoeft geen socketbewerkingen in de wachtrij te zetten. Het WSK-subsysteem roept de callback-functies van de WSK-toepassing aan zodra de gebeurtenissen van de socket plaatsvinden. Als de WSK-toepassing de frequentie kan bijhouden waarmee de callback-functies van een socket worden aangeroepen, kan het gebruik van callback-functies de hoogste prestaties bieden en de minste kans op verlies van datagrammen of binnenkomende verbindingen.

  • Het WSK-subsysteem levert de gegevensbuffers voor gegevensoverdrachtbewerkingen. De WSK-toepassing moet deze gegevensbuffers onmiddellijk vrijgeven aan het WSK-subsysteem of binnen een redelijke tijd, zodat het WSK-subsysteem geen geheugenbronnen meer heeft. Daarom moet de WSK-toepassing mogelijk de gegevens kopiëren uit de gegevensbuffers die eigendom zijn van het WSK-subsysteem in hun eigen gegevensbuffers.

Opmerking De bovenstaande lijsten zijn niet noodzakelijkerwijs volledig. Er zijn mogelijk andere punten waarmee u rekening moet houden bij het kiezen van welke methode de beste keuze is voor een bepaalde WSK-toepassing.