アプリケーション/プロセスは、既にアンロードされた ws2_32.dll を参照し、異常終了する場合があります。

現象
Windows 7  環境で動作するアプリケーション/プロセスが、既にアンロードされた ws2_32.dll を参照し、異常終了する場合があります。
原因
アプリケーション/プロセスにおいて、ロードする DLL モジュールの初期化処理 (DllMain 関数) の延長上で、API WSAStartup を呼び出す実装が含まれる場合、本現象が発生する可能性があります。

DllMain 関数からAPI WSAStartup を呼び出す制限事項の詳細につきましては、以下技術情報をご参照ください。

WSAStartup function
http://msdn.microsoft.com/en-us/library/windows/desktop/ms742213(v=vs.85).aspx

The WSAStartup function typically leads to protocol-specific helper DLLs being loaded. As a result, the WSAStartup function should not be called from the DllMain function in a application DLL. This can potentially cause deadlocks. For more information, please see the DLL Main Function.
解決方法
恒久的な解決策としては、DllMain 関数の処理中にAPI WSAStartup を呼び出す DLL モジュールの製造元にお問い合わせください。
回避策
カスタマー エクスペリエンス向上プログラム (Customer Experience Improvement Program, 以降 “CEIP” と表記) の無効化を行うことで、本現象を回避できます。CEIP を無効化するには、以下のレジストリ値を設定します。

レジストリキー:HKLM\Software\Microsoft\SQMClient\Windows\CEIPEnable
値:0(無効)
http://msdn.microsoft.com/en-us/library/dd405474(VS.85).aspx

留意事項1.
グループポリシーにて無条件で CEIP 機能を有効にしている環境での回避方法について、補足情報3をご参照ください。

留意事項2.
グループポリシー オブジェクトを利用して CEIP 機能を有効にしているドメイン環境での回避方法について、以下弊社技術情報の手順 6 に記述したレジストリキー CEIPEnable の設定を1から0に変更してください。

Windows フィードバック転送の展開
       - グループ ポリシー オブジェクトを作成して、CEIP を展開するには
https://technet.microsoft.com/ja-jp/library/jj129704.aspx

状況
本事象は、DLL モジュールのDllMain 関数の実装による問題ですが、CEIP 機能が動作することにより問題が顕在化します。
詳細
補足情報1:本現象が発生する条件(DllMain の実装問題が顕在化する条件) について

本現象が発生する条件は、以下 2 つの CEIP に関わるレジストリキーの値が共に 1 に設定される場合です。

HKLM\Software\Microsoft\SQMClient\Windows\CEIPEnable
HKLM\SOFTWARE\Microsoft\SQMClient\Windows\CEIPSampledIn

レジストリキー CEIPEnable は、CEIP 機能が有効するかどうかを制御するためのレジストリキーです。
CEIPEnable の値が 1 に設定された場合、CEIP 機能は有効となります。
EIPEnable の値が 0 に設定された場合、CEIP 機能は無効となります。

レジストリキー CEIPSampledIn は、CEIP 機能を有効に設定した場合に、対象マシンから収集されたCEIP 情報をマイクロソフトへ送付するかどうかを制御するためのレジストリキーです。
CEIPSampledIn の値が 1 に設定された場合、収集されたCEIP に関わる情報をマイクロソフトへ送付します。
CEIPSampledIn の値が 0 に設定された場合、CEIP に関わる情報をマイクロソフトへ送付しません。


補足資料2:レジストリキー  CEIPSampledIn の設定及びその必要性について

wsqmcons.exe と呼ばれるアプリケーションは、Windows 7  インストール時にタスク スケジューラに登録され、19  時間間隔で実行されます。
本アプリケーションの実行時に、レジストリキー CEIPSampledIn が追加/変更される可能性があります。

       タスク スケジューラ ライブラリ -> Microsoft -> Windows -> Customer Experience Improvement Program -> Consolidator

レジストリキー CEIPSampledIn の値は、基本的に以下の三つのレジストリキーにより決まります。
そのうち、レジストリキー RacSampleNumber は、8  バイトの乱数を基に作成されます。

HKLM\Software\Microsoft\SQMClient\Windows\CEIPSamplingRangeLow (既定値は 1)
HKLM\Software\Microsoft\SQMClient\Windows\CEIPSamplingRangeHigh (既定値は 10,000,000)
HKLM\Software\Microsoft\Reliability Analysis\RAC\RacSampleNumber (最大値は 0xFFFFFFFF = 4,294,967,295 までの乱数)

上記 3 つのレジストリキーに対して、以下の条件を満たす場合には、CEIPSampledIn の値が 1 に設定されます。
条件を満たさない場合には、CEIPSampledIn の値が 0 に設定されます。

       CEIPSamplingRangeLow の値 <= RacSampleNumber の値 <= CEIPSamplingRangeHigh の値

上記のような実装を行う理由としては、CEIP 機能を有効に設定するマシンが膨大な数になる可能性があるためです。
そのため、CEIP 情報のマイクロソフトへの送付を、サンプリングするように実装されます。

すなわち、上記の条件を満たした場合(RacSampleNumber の値は 1 ~ 10,000,000 の範囲内である場合)のみ、該当マシンは CEIP のサンプリングの対象となり、CEIPSampledIn が 1 に設定され、CEIP 情報をマイクロソフトへ送付します。

RacSampleNumber の値が 1 ~ 10,000,000 の範囲外の場合には、該当マシンは CEIP のサンプリングの対象外となり、CEIPSampledIn が 0 に設定され、CEIP 情報をマイクロソフトへ送付しません。

補足情報3:グループポリシーを使用した際の CEIP の無効化について

場所:ローカル コンピューター ポリシーの「コンピューターの構成」-> 「管理用テンプレート」-> 「システム」-> 「インターネット通信の管理」-> 「インターネット通信の設定」
ポリシー名:「Windows カスタマー エクスペリエンス向上プログラムをオフにする」

上記グループポリシーを無効に設定した場合、すべてのユーザが無条件で Windows カスタマーエクスペリエンス向上プログラムに参加する設定に変更され、 CEIP の機能が有効となります。

そのため、このグループポリシーが無効に設定した環境において、レジストリキー CEIPEnable にて CEIP 機能の無効化を行う場合、該当グループポリシーを有効または未構成に設定変更する必要があります。
関連情報
カスタマ エクスペリエンス向上プログラム(CEIP)の詳細及びマイクロソフトへ送付されるCEIPレポートに含まれる情報の詳細につきましては、以下技術情報をご参照ください。

Microsoft カスタマ エクスペリエンス向上プログラム
http://www.microsoft.com/products/ceip/JA-JP/default.mspx

Microsoft® カスタマ エクスペリエンス向上プログラムのプライバシーに関する声明
http://www.microsoft.com/products/ceip/JA-JP/privacypolicy.mspx
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2979267 - 最終更新日: 09/30/2016 09:09:00 - リビジョン: 5.0

Windows 7 Ultimate, Windows 7 Enterprise, Windows 7 Professional, Windows 7 Home Premium

  • KB2979267
フィードバック