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 はペアの様だ ・ω・
Comments