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

          push    00000000h
          push    00000000h
          lea    eax,[ebp-14h]
          mov    dword ptr [ebp-24h],25A207B9h
          push    eax
          push    00000004h
          push    [L0077251C]
          lea    eax,[ebp-24h]
          mov    dword ptr [ebp-20h],4660DDF3h
          push    00000010h
          push    eax
          push    C8000006h
          push    esi
          mov    dword ptr [ebp-1Ch],E576E98Eh
          mov    dword ptr [ebp-18h],3E06748Ch
          mov    [ebp-14h],edi
          call    [WS2_32.dll!WSAIoctl]

Windows XP で動作して、 2000だと動作しない部分のコードです

これを C++ で書き直すと

#define WSAID_CONNECTEX {0x25a207b9,0xddf3,0x4660,{0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e}}

WSAIoctl(socket, SIO_GET_EXTENSION_FUNCTION_POINTER, WSAID_CONNECTEX , sizeof(GUID) /*0x10*/,  &lpfnConnectEx, sizeof(lpfnConnectEx) /*4*/ , &dwBytes, NULL, NULL);

となります。
WSAID_CONNECTEX は Windows 2000には存在しない機能なので、エラーになってたわけですね ・ω・

同様に WSAID_DISCONNECTEX / WSAID_TRANSMITPACKETS も存在しないわけですが ・ω・;

#define WSAID_DISCONNECTEX {0x7fda2e11,0x8630,0x436f,{0xa0,0x31,0xf5,0x36,0xa6,0xee,0xc1,0x57}}
#define WSAID_TRANSMITPACKETS {0xd9689da0,0x1f90,0x11d3,{0x99,0x71,0x00,0xc0,0x4f,0x68,0xc8,0x76}}

さて、この問題解決できるのでしょうか ・ω・

おすすめ

コメントを残す

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