Comment la fonction WSAStartup initie-t-elle l'utilisation de la DLL Winsock?

Comment WSAStartup fonction déclenche l'utilisation de la DLL Winsock?

Selon la documentation

La WSAStartup fonction, doit être le
premier Windows Sockets fonction appelée
par une application ou la DLL. Il permet à un
l'application ou la DLL pour spécifier le
la version de Windows Sockets nécessaire
et de récupérer des détails spécifiques
Implémentation Windows Sockets. L'
l'application ou la DLL ne peut émettre de
outre les fonctions de Windows Sockets
après le succès de l'appel de WSAStartup.

Cette fonction initialise WSADATA structure de données, mais dans le support de la programmation, nous ne passez pas WSDATA pour toute fonction alors, comment fonctionne le programme est livré à savoir sur les Sockets Windows version et d'autres détails?

Par exemple, dans ce code

#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32")

void Run(int argc, char* argv[])
{
    char* host = argc < 2 ? "" : argv[1];
    struct hostent* entry = gethostbyname(host);

    if(entry)
    {
        struct in_addr* addr = (struct in_addr*) entry->h_addr;
        printf("IP Address: %s\n", inet_ntoa(*addr));
    }
    else
        printf("ERROR: Resolution failure.\n");
}

int main(int argc, char* argv[])
{
    WSADATA wsaData;

    if(WSAStartup(0x202, &wsaData) == 0)
    {
        Run(argc, argv);
        WSACleanup();
    }
    else
        printf("ERROR: Initialization failure.\n");
}

Dans cet exemple, je suis de l'initialisation WSADATA structure de données à l'aide de WSAStartup() fonction et, peu après, je ne suis pas de passage wsaData n'importe où.

Alors, comment est-ce que mon programme est livré à savoir sur wsaData détails?

Grâce.

source d'informationauteur Searock