Windows 2000で Steam が起動しなくなった理由を調査 その2

Windows 2000で Steam が起動しなくなった理由を調査 その1

Windows 2000の WSAIoctl 関数における SIO_GET_EXTENSION_FUNCTION_POINTER を調べてみました

Windows 2000で対応してるのはおそらく次の3つ

WSAID_TRANSMITFILE Guid("b5367df0-cbac-11cf-95ca-00805f48a192")
WSAID_ACCEPT_EX Guid("b5367df1-cbac-11cf-95ca-00805f48a192")
WSAID_GETACCEPTEXSOCKADDRS Guid("b5367df2-cbac-11cf-95ca-00805f48a192")

msafd.dll に実装されている.

一方XPで使えるのは上記の3つに加えて、

WSAID_TRANSMITPACKETS Guid("d9689da0-1f90-11d3-997100c04f68c876")
WSAID_CONNECTEX Guid("25a207b9-ddf3-4660-8ee976e58c74063e")
WSAID_DISCONNECTEX Guid("7fda2e11-8630-436f-a031f536a6eec157")
WSAID_WSARECVMSG Guid("f689d7c8-6f1f-436b-8a53-e54fe351c322")

こっちは mswsock.dll に実装されている

試しに、 Windows XP の mswsock.dll を 2000 にコピーして

        WSAIoctl(soc, SIO_GET_EXTENSION_FUNCTION_POINTER, &guidTransmitPackets, sizeof(GUID), &lpfnTransmitPackets, sizeof(LPVOID), &dwBytes, NULL, NULL);
        printf("TransmitPackets: %08x: %d\n", lpfnTransmitPackets, GetLastError());

を動作させてみた所、読み出せていないことが分かった

msafd.dll とmswsock.dll はペアの様だ ・ω・

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です