Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Windows Sockets-switch draagt gegevens asynchroon over op een SAN-socket. Wanneer de switch de WSPSend-, WSPRecv-, WSPRdmaWrite- of WSPRdmaRead-gegevensoverdrachtfunctie aanroept, geeft deze een aanwijzer op naar een overlappende structuur (WSAOVERLAPPED) en NULL voor een voltooiingsroutine. Zelfs als de switch de WSPEventSelect-functie van de SAN-serviceprovider aanroept om aan te geven dat de socket zich in de niet-blokkeringsmodus bevindt, hoeft de SAN-serviceprovider geen semantiek te implementeren voor deze functies voor gegevensoverdracht.
Zoals beschreven in de Windows Sockets-API en SPI-documentatie in de Microsoft Windows SDK-documentatie, behandelen zowel blokkerende als niet-blokkerende sockets overlappende bewerkingen hetzelfde. Dat wil gezegd, de SAN-serviceprovider start de specifieke gegevensoverdrachtsbewerking en retourneert onmiddellijk het besturingselement naar de switch. Deze functies voor gegevensoverdracht retourneren foutcode WSA_IO_PENDING om aan te geven dat een asynchrone bewerking is gestart en dat deze bewerking later wordt voltooid. Nadat de bewerking is voltooid, geeft de SAN-serviceprovider aan dat deze is voltooid als voor de switch een voltooiingsmelding is vereist, zoals beschreven in de volgende alinea's.
Omdat de switch altijd NULL opgeeft voor een voltooiingsroutine voor overlappende bewerkingen voor gegevensoverdracht, is een SAN-serviceprovider niet vereist om voltooiing te ondersteunen door het gebruik van asynchrone procedureaanroepen (APC's).
Indien mogelijk probeert de switch de WSPGetOverlappedResult-functie van de SAN-serviceprovider aan te roepen om te peilen naar voltooiing van aanvragen voor gegevensoverdracht. Op deze manier kan de switch de overhead voorkomen die is gekoppeld aan actieve overlappende voltooiingsmechanismen. Om aan te geven aan een SAN-serviceprovider dat voor de switch geen voltooiingsmelding nodig is voor een bepaalde overlappende gegevensoverdrachtbewerking, stelt de switch de lage order bit van het hEvent-lid in de WSAOVERLAPPED-structuur in op één. De SAN-serviceprovider mag de switch niet op de hoogte stellen van de voltooiing van aanvragen die op deze manier zijn ingediend.
Als voor de switch melding is vereist van de voltooiing van een overlappende gegevensoverdrachtbewerking, wordt de bit met lage volgorde van het hEvent-lid in de WSAOVERLAPPED-structuur ingesteld op nul. De SAN-serviceprovider moet bewerkingen voor gegevensoverdracht voltooien die op deze manier worden geïnitieerd door de functie WPUCompleteOverlappedRequest aan te roepen om de voltooiing van het signaal te signaleren. In deze aanroep geeft de SAN-serviceprovider een aanwijzer door naar de WSAOVERLAPPED-structuur die overeenkomt met een voltooide gegevensoverdrachtbewerking. In deze WPUCompleteOverlappedRequest-aanroep geeft de SAN-serviceprovider ook de socketdescriptor door die is verkregen van de switch in een aanroep naar de functie WPUCreateSocketHandle . De switch ontvangt voltooiingsmeldingen, koppelt deze aan de I/O-aanvragen van een toepassing, en voltooit deze I/O-aanvragen zoals gepast voor de toepassing.