Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

FileWait(ar) ;

FileWait::FileWait (CArchive& ar)
{
 CFile* file = ar.GetFile() ;
 UINT flag = ar.IsStoring() ? CFile::modeWrite : CFile::modeRead ;
 CString filePath = file->GetFilePath() ;
 Init(filePath,flag) ;
 }
 ar.IsStoring の時,書込んでいる事をレジストリにマーク(Open_WriteMode)する.

FileWait::IsOpenedWrite により,この状態を判断できる.
実際これを利用しているのは MakeCMF.cpp と,PlnCtrl.exe .
BOOL MakeCacheMF::CanMakeMF (void)
{
 …
 BOOL canMake = TRUE ;
 if (!CheckInstall()) { canMake = FALSE ; }
 else if (FileWait::IsOpenedWrite()) { canMake = FALSE ; }
 else {  …  }
 if (!canMake) {
  CString stmsg = _T(“生成を中断しています.”) ;
  …
  }
 return canMake ;
 }

BOOL SleepOtherSaving (void) {
 …
 return FileWait::IsOpenedWrite() ;
 }

LRESULT CPlnctrlDlg::FindHandler(WPARAM param1, LPARAM param2) {
 …
 if (::SleepOtherSaving()) { return 0 ; }
 …
 }

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


「最近使ったもの」が表示されなくなった

以下に存在するファイルの削除で対応.
%AppData%\Microsoft\Windows\Recent\CustomDestinations
%AppData%\Microsoft\Windows\Recent\AutomaticDestinations

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


スリープする様になった?

設定を変更したつもりはないのに,…
それと,いじってしまったのかはっきりしないが,「休止状態」がなくなった.
スリープと休止状態: よく寄せられる質問

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


VHD の圧縮でエラー 67

VHD の圧縮でエラーになる様になった.
[Window Title]
Windows Virtual PC
[Content]
予期しないエラー (67) が発生しました。
[OK]

VPCTemporary_x.vht はそれなりのサイズ.
これを別のフォルダにコピーして,VHD にリネーム,仮想マシンとして追加すると,それなりに動作している.
どうも最後のリネームの段階で失敗しているみたい.

原因は,「WD SmartWare」が影響しているみたい.
バックアップ機能を一時的に止めることで回避.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


DP340XPP 仮想環境

DP340XPP を移行した Virtual PC 内の環境
「Luna が有効にならない」は特に困るわけではない.Disk2VHD を使用した時はちゃんと表示できてたのにな~.
1.ブート時のChkDsk
2.Outlook Express
3.プロテクトデバイスを使用する AP
4.不要なファイルを整理,削除
5.ディスク クリーンアップ
6.デフラグ 1 回目
7.デフラグ 2 回目  ここでブルースクリーン

イベントビューアで Disk のエラーが多数あり
8.ChkDsk
9.デフラグ
10.PreCompact.exe
11.VHD の圧縮

DP340XPP-0.vhd 64.3 GB → 56.4 GB
DP340XPP-1.vhd 24.6 GB → 22.8 GB

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


DP340XPP 続き

「統合コンポーネントのインストール」が出来ない状態からの続き.
途中で,ロールバックしている様な動きだったので,…
デバイスマネージャで,うまく認識していないデバイスを削除(3 つあった).

今度は,インストールOK.
画面の解像度や色数が低い(VGA 程度).
再起動で,通常の設定が可能になった.
ただ,ホストとのマウスの行き来が出来ない.

一度,「プログラムの追加と削除」から「統合コンポーネント」をアンインストール.
再度,「統合コンポーネント」をインストール.

マウスの動作やフルスクリーンなど思った動作にはなった.

残りは,Virtual PC 環境内.
テーマの「Windows XP」にならない.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


DP340XPP その後

不安定になっていた,DP340XPP を VHD にするために,HD を整理.
但し,不定期にリブートがかかる(どうもブルースクリーンになっている)ことがあるので,大きくて他の環境に存在してもいいファイルを他環境に移動.
本来はディスクのクリーンアップやデフラグなどを行った方が良かったのかもしれないが,環境が不安定なためスキップ.

Disk2VHD

開始したのが 05/02 21:00 頃.C ドライブだけで,05/03 3:00 頃となったためそのまま放置.
05/03 8:30 頃見ると,リブートがかかっている.
VHD のタイムスタンプが 5:08 ,リブートがかかった時間は 5:30 頃と思われセーフ(イベントビューアで確認).

仮想マシンを作成して,2 つの VHD を割り当て.
仮想マシンとして起動.
ライセンス認証.

ここまでは良かったが,「統合コンポーネントのインストール」が出来ない.
続きは今度,…

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


WDBACW0020HBK 追加

WD My Book Essential 2TB を T54W7U64 に追加

接続すると,ドライブとしては認識するが,ドライバのエラーが 1 つ
WD SES Device だったと思う.

マニュアルをよーく読むと,HD のルートにある WD SmartWare.exe を起動して,インストール.
7 ページ 7. b または,8 ページ 9. b

ファームを更新して再起動.
SmartWare ソフトウェアを更新して再起動.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


MS11-025 の影響?

2011/06/16 追記
2011/06/15 に MS11-025 が更新されたので,以下は古い情報になります.


 
どちらかというと,以下の影響
Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージ (KB2467175)
Microsoft Visual C++ 2008 Service Pack 1 再頒布可能パッケージ (KB2467174)
MS11-025

Win 7 で,AFX_IDS_~ の表示が英語になってしまう.
 Open , Save As , 印刷プレビューのボタン
 All Files (*.*)
 Failed to create empty document.
 C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\l.jpn
MS11-025 「開く」ダイアログへの影響
MS11-025 印刷プレビューのボタン

AppCore.cpp の _AfxLoadLangDLL と思うが,うまく確かめられない.
ここが呼ばれる前のコードを切り出して lcid は 1041 で,JPN が求まっている所までは確認.

デバッグ版では,MFC90JPN.dll がロードされている(デバッガやリソースモニターで確認).
C:\Windows\WinSxS\x86_microsoft.vc90.mfcloc_1fc8b3b9a1e18e3b_9.0.30729.5570_none_4977a39175471b31\MFC90JPN.DLL

リリース版に,デバッグ情報を付加して動作を見ると
SXS: Invalid parameter(s) passed to FindActCtxSection*()
 dwFlags = 0x00000001
 ReturnedData = 0018F58C
  ->cbSize = 0

FindActCtxSection を検索すると,
Visual C++ MFC and ATL FindActCtxSection
そこからのリンクは Martin’s Blog 自動翻訳


_AfxLoadLangDLL のコードを比べると,
Microsoft Visual Studio 2005 Service Pack 1 (KB2465367) 適用前
static HINSTANCE _AfxLoadLangDLL(LPCTSTR pszFormat, LPCTSTR pszPath, LCID lcid)
{
 …
 int ret;
 ATL_CRT_ERRORCHECK_SPRINTF(ret = _sntprintf_s(szLangDLL,_countof(szLangDLL),
     _countof(szLangDLL)-1,pszFormat,pszPath,szLangCode));
 if(ret == -1 || ret >= _countof(szLangDLL)) {
  ASSERT(FALSE);
  return NULL;
  }
 hInstance = ::LoadLibrary(szLangDLL);
 return hInstance;
 }

適用後
static HINSTANCE _AfxLoadLangDLL(LPCTSTR pszFormat, LPCTSTR pszPath, LCID lcid)
{
 …
 int ret;
 ATL_CRT_ERRORCHECK_SPRINTF(ret = _sntprintf_s(szLangDLL,_countof(szLangDLL),
     _countof(szLangDLL)-1,pszFormat,pszPath,szLangCode));
 if(ret == -1 || ret >= _countof(szLangDLL)) {
  ASSERT(FALSE);
  return NULL;
  }
 TCHAR *pszFilename = ::PathFindFileName(szLangDLL);
 ACTCTX_SECTION_KEYED_DATA data;
 if (FindActCtxSectionString( FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX, NULL,
    ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION,pszFilename, &data) ) {
  // Load using the dll name only…
  hInstance = ::LoadLibraryEx(pszFilename, NULL, LOAD_LIBRARY_AS_DATAFILE);
  }
 else {    // Load using the full path…
  hInstance = ::LoadLibraryEx(szLangDLL, NULL, 0);
  }

 return hInstance;
 }

FindActCtxSectionString によって,Win 2K では動作しなくなるらしい.


2011/05/10 追記
Ted’s Blog Fixing problems with FindActCtxSectionString in MFC security updates
 static.exe での Win2K 対応と,ACTCTX_SECTION_KEYED_DATA の初期化など
 
比べてもあまり意味はないが,VC 2010 では
static HINSTANCE _AfxLoadLangDLL(LPCTSTR pszFormat, LPCTSTR pszPath, LCID lcid)
{
  TCHAR szLangDLL[_MAX_PATH+14];
  TCHAR szLangCode[4];
  HINSTANCE hInstance;
  if (lcid == LOCALE_SYSTEM_DEFAULT) {
    Checked::tcscpy_s(szLangCode, _countof(szLangCode), _T(“LOC”));
    }
  else {
    int nResult;
    nResult = ::GetLocaleInfo(lcid, LOCALE_SABBREVLANGNAME, szLangCode, 4);
    if (nResult == 0)
      return NULL;
    ASSERT( nResult == 4 );
    }
  int ret;
  ATL_CRT_ERRORCHECK_SPRINTF(ret = _sntprintf_s(szLangDLL,_countof(szLangDLL),
               _countof(szLangDLL)-1,pszFormat,pszPath,szLangCode));
  if(ret == -1 || ret >= _countof(szLangDLL)) {
    ASSERT(FALSE);
    return NULL;
    }
  hInstance = ::LoadLibraryEx(szLangDLL, NULL, 0);
  return hInstance;
  }  

pszPath は “C:\Windows\system32\” になっている.
 

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。



    top

    %d人のブロガーが「いいね」をつけました。