現象

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 以外の値が返り成功しますが、指定した値が取得できない、もしくは指定した内容に反映されません。

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

翻訳品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?

フィードバックをお送りいただきありがとうございます!

×