Ich möchte gerne prüfen, ob das Ipv6 Protokoll installiert ist. Das sollte mit der Funktion WSAEnumProtocols aus Winsock2 möglich sein. Leider erhalte ich bei genau diesem Aufruf [LCount := WSAEnumProtocols(nil,LPInfo,LLen);] den Fehler "
Access violation at address 00000000. Read of address 00000000." Warum? Muss noch irgendetwas initialisiert werden? Oder ganz anders?
Delphi-Quellcode:
function IPv6Installiert : Boolean;
var
LLen : LongWord;
LPInfo, LPCurPtr : LPWSAProtocol_Info;
LCount : Integer;
i : Integer;
begin
Result := False;
LLen := 0;
WSAEnumProtocols(nil,nil,LLen);
GetMem(LPInfo,LLen);
try
LCount := WSAEnumProtocols(nil,LPInfo,LLen);
if LCount <> SOCKET_ERROR then
begin
LPCurPtr := LPInfo;
for i := 0 to LCount-1 do
begin
Memo1.Lines.Add(IntToStr(LPCurPtr^.iAddressFamily));
Result := (LPCurPtr^.iAddressFamily=PF_INET6);
if Result then
begin
Break;
end;
Inc(LPCurPtr);
end;
end;
finally
FreeMem(LPInfo);
end;
end;
edit: Falls von Belangen: WSAEnumProtocols kommt aus IdWinsock2 (Indy10).