Windows Vista および Windows Server 2008 の 64 bit 環境で SystemParametersInfo 関数を使用する 32 bit 用のアプリケーションを実行した場合正しく動作しない場合がある

現象
Microsoft Windows Vista および Windows Server 2008 の 64 bit 環境で、32 bit 用のアプリケーションを実行する際、SystemParametersInfo 関数の第一引数に、以下のパラメーターを指定していた場合、SystemParametersInfo 関数の戻り値として 0 以外の値が返り成功しますが、指定した値が取得できない、もしくは指定した内容に反映されない現象が発生します。
  • SPI_GETAUDIODESCRIPTION
  • SPI_SETAUDIODESCRIPTION
  • SPI_GETSCREENSAVESECURE
  • SPI_SETSCREENSAVESECURE
  • SPI_GETMESSAGEDURATION
  • SPI_SETMESSAGEDURATION
なお、この現象は Windows 7 の 64 bit 環境では発生しません。
原因
この現象は、Windows Vista および Windows Server 2008 の Wow64 (Windows 32bit emulation on Windows 64bit) が、以下のパラメーターを指定した SystemParametersInfo 関数の実行をサポートしていない事が原因で発生します。
  • SPI_GETAUDIODESCRIPTION
  • SPI_SETAUDIODESCRIPTION
  • SPI_GETSCREENSAVESECURE
  • SPI_SETSCREENSAVESECURE
  • SPI_GETMESSAGEDURATION
  • SPI_SETMESSAGEDURATION
回避策
Windows Vista および Windows Server 2008 の 64 bit 環境で、以下のパラメーターを SystemParametersInfo 関数から使用する場合は、64bit 用にコンパイルされたアプリケーションから実行してください。
  • SPI_GETAUDIODESCRIPTION
  • SPI_SETAUDIODESCRIPTION
  • SPI_GETSCREENSAVESECURE
  • SPI_SETSCREENSAVESECURE
  • SPI_GETMESSAGEDURATION
  • SPI_SETMESSAGEDURATION
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細

問題の再現手順

  1. SystemParametersInfo 関数の第一引数に、以下のいずれかのパラメーターを指定する 32 bit のアプリケーションを作成します。
    • SPI_GETAUDIODESCRIPTION
    • SPI_SETAUDIODESCRIPTION
    • SPI_GETSCREENSAVESECURE
    • SPI_SETSCREENSAVESECURE
    • SPI_GETMESSAGEDURATION
    • SPI_SETMESSAGEDURATION
  2. 手順 1 で作成した 32 bit のアプリケーションを Windows Vista 64 bit 環境で実行します。

結果

SystemParametersInfo 関数の戻り値として 0 以外の値が返り成功しますが、指定した値が取得できない、もしくは指定した内容に反映されません。
Proprietà

ID articolo: 2344263 - Ultima revisione: 10/04/2016 14:31:00 - Revisione: 4.0

Windows Vista Enterprise 64-bit edition, Windows Vista Home Basic 64-bit edition, Windows Vista Home Premium 64-bit edition, Windows Vista Ultimate 64-bit edition, Windows Vista Business 64-bit edition, Windows Server 2008 Standard without Hyper-V, Windows Server 2008 Datacenter without Hyper-V, Windows Server 2008 Enterprise without Hyper-V, Windows Server 2008 for Itanium-Based Systems, Windows Server 2008 Datacenter, Windows Server 2008 Enterprise, Windows Server 2008 Standard

  • kbharmony kbexpertiseadvanced kbtshoot kbbug kbnofix KB2344263
Feedback