ADM 4.1.0.RLQ1 VirtulBox …
時々ある ことなので驚きはしないが…
ADM 4.1.0.RLQ1 にアップデートして VirtualBox の仮想マシンがうまく起動しなくなった.
Failed to open/create the internal network ‘HostInterfaceNetworking-eth0’ (VERR_SUPDRV_COMPONENT_NOT_FOUND). Failed to attach the network LUN (VERR_SUPDRV_COMPONENT_NOT_FOUND). One of the kernel modules was not successfully loaded. Make sure that VirtualBox is correctly installed, and if you are using EFI Secure Boot that the modules are signed if necessary in the right way for your host system. Then try to recompile and reload the kernel modules by executing ‘/sbin/vboxconfig’ as root (VERR_SUPDRV_COMPONENT_NOT_FOUND)
設定があるのかもしれないが,検索してもちょっとわからない.
最近の ADM アップデートはあまり安定していない気がする.
それとも,数日仮想マシンを起動していなかったので,どこか弄ってしまったか?
Windows シンボリック リンク
何年か前から VC のビルドでの出力先を C:\Temp 以下に指定している.
c:\Temp\i_Tools\i3DV\Release.060
VC 7 以降では次の様な感じ.
c:\Temp\i_Tools\$(ProjectName)\$(ConfigurationName).070
c:\Temp\i_Tools\$(ProjectName)\$(Configuration).143\$(Platform)\
これで,どの環境でビルドしてもそれなりに動作する様にしている.
共通のソースは NAS でドライブとして割り当て,プロジェクトはローカルや NAS .
また,出来上がった exe は CopyNewF.exe でコピーしている.
Win10 に VC 6 を入れているが,メイン環境に SP6 が当てられない.仮想環境ではうまく入ったマシンもある.
単体テストの範囲ではメイン環境の VC 6 RTM で問題ないが,リリースビルドでうまくない現象がある.
VS 6 RTM bug … ?
これらのことがあり VC 6 でビルドした結果を,メイン PC の C:\Temp\ 以下にまとめられないかと…
また,近いうちに PC が新しく入る予定だが,SSD の容量がそれほど多くないのでそれを含めてのもの.
仮想環境でホスト PC の \\Z170S0\C_Temp を o:\ として割り当てている.
次の様な指定で,仮想環境で o:\ を C:\Temp としてのシンボリック リンクを作成.
mklink /D c:\Temp o:\
これで意図した通りに動作する様にはなったが,デバッグ版では互換性がないみたいでうまくテストできない.
結局ホストの追加のドライブを指定することに.
mklink /D c:\Temp e:\C_Temp.VC6
これで暫く使ってみる.
今までショートカット lnk を使ってきたが,置き換えができそうな所がありテスト的に設定.
D:\Tmp_link>mklink /D .\D2_i_u \\DS220\web\i_Tools\upload\share
.\D2_i_u <<===>> \\DS220\web\i_Tools\upload\share のシンボリック リンクが作成されました
D:\Tmp_link>mklink /D .\D2_T_u \\DS220\web\Test\upload
.\D2_T_u <<===>> \\DS220\web\Test\upload のシンボリック リンクが作成されました
D:\Tmp_link>mklink /D .\D1_i_u \\DS116\web\i_Tools\upload\share
.\D1_i_u <<===>> \\DS116\web\i_Tools\upload\share のシンボリック リンクが作成されました
D:\Tmp_link>mklink /D .\D1_T_u \\DS116\web\Test\upload
.\D1_T_u <<===>> \\DS116\web\Test\upload のシンボリック リンクが作成されました
D:\Tmp_link>dir
ドライブ D のボリューム ラベルは ボリューム です
ボリューム シリアル番号は B630-F57A です
D:\Tmp_link のディレクトリ
2022/09/28 17:31 <DIR> .
2022/09/28 17:31 <DIR> ..
2022/09/28 17:30 <SYMLINKD> D1_i_u [\\DS116\web\i_Tools\upload\share]
2022/09/28 17:31 <SYMLINKD> D1_T_u [\\DS116\web\Test\upload]
2022/09/28 17:30 <SYMLINKD> D2_i_u [\\DS220\web\i_Tools\upload\share]
2022/09/28 17:30 <SYMLINKD> D2_T_u [\\DS220\web\Test\upload]
0 個のファイル 0 バイト
6 個のディレクトリ 435,247,796,224 バイトの空き領域
D:\Tmp_link>
エクスプローラでは次の様に見える.
ジャンクション名をクリックした時の動作が,微妙に異なることがある様に感じる.
リンク先に切替わったり,そのまま展開されたりする.
ある程度意図したことができる様なので,これもこのまま使用してみる.
2022/10/21
新しい Win11 PC の C ドライブを圧迫しないため,次の様にして NAS 上に置くことにした.
mklink /D C:\Temp \\AS5202T\Temp\C_Temp
NAS の再起動などを意識する必要はあるが,速度なども含め,今の所問題はなさそう.
それでちょっとした違いを見つけた.
MFC 14 以降の CCheckListBox で…
何年か前,幾つかのプロジェクトを VC 14 に対応しようとして CCheckListBox の表示がうまくなかった.
CCheckListBox を使っているプロジェクトは限られているので,~MFC 12 にしていた.
今回 いろいろとあり VC 2017 ~ 2022 に対応することに.
MFC が更新されているのかわからないが,以前のものより少し動作は良くなっている?
相変わらず,表示直後にずれているのと,高さが MFC 12 以前に比べ詰まっている.
「MFC CCheckListBox ずれる」で検索すると,OnInitDialog() などで 高さを指定 すれば良いとあった.
{
CRect rect ;
m_CtrlSExtDllNow.GetWindowRect(&rect) ; // 他のコントロールの高さを利用
m_CtrlListSExt.SetItemHeight(0,rect.Height()) ;
}
面倒だったのでエディットボックスの高さを利用している.
これで MFC 12 などで作成したものと同じ様な表示になった.
ADM DataSync Center
久しぶりに ASUSTOR NAS 上で C++ のコードを試そうと思い見ていると…
共通のコードが古い.丁度 1 年前の更新で止まっている.
他の QNAP NAS などは,正しく更新されている.
ある程度区切りの良い状態で「Google ドライブ」に更新して,それぞれの NAS の同期機能でコピーしている.
この様にすることで,自動バックアップと NAS 上の共通コードの更新を行っている.
QNAP NAS HBS 3
今まで ASUSTOR NAS では「DataSync for GoogleDrive」を使用してきた.
が,起動しようとすると「ロード中」となって,表示が変わらなくなりうまく動作しない.
App Central を見ても,なさそう.DataSync Center になったみたい.
「DataSync Center」のインストール.
「DataSync Center 」を起動して「Googleドライブ」に「チェック」.
「同期設定をインポートします」にカーソルを合わせると,
「Googleドライブ から NAS へ」を指定.
同期するパスの指定.ここでは Public なども指定できるので,Home への依存はなくなったみたい.
あとはそのまま受け入れると同期が始まる.
同期には 4 時間程度かかった.
また,Synology NAS と同様で,SmpTxt.zip などはコピーされない.
原因は Release.060/SmpTxt.exe によるもの.
このあと,これらのファイルを更新予定.
error LNK2019 : … _GdiplusStartup
VC 6 で作成したプロジェクトを VC 8 に上げてビルドすると…
------ ビルド開始: プロジェクト: DocTh, 構成: Debug Win32 ------
リンクしています...
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipCreateSolidFill@8 が関数 "public: __thiscall Gdiplus::SolidBrush::SolidBrush(class Gdiplus::Color const &)" (??0SolidBrush@Gdiplus@@QAE@ABVColor@1@@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipDeleteBrush@4 が関数 "public: virtual __thiscall Gdiplus::Brush::~Brush(void)" (??1Brush@Gdiplus@@UAE@XZ) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipCloneBrush@8 が関数 "public: virtual class Gdiplus::Brush * __thiscall Gdiplus::Brush::Clone(void)const " (?Clone@Brush@Gdiplus@@UBEPAV12@XZ) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipFree@4 が関数 "public: static void __cdecl Gdiplus::GdiplusBase::operator delete(void *)" (??3GdiplusBase@Gdiplus@@SAXPAX@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipAlloc@4 が関数 "public: static void * __cdecl Gdiplus::GdiplusBase::operator new(unsigned int)" (??2GdiplusBase@Gdiplus@@SAPAXI@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipCreateLineBrushI@24 が関数 "public: __thiscall Gdiplus::LinearGradientBrush::LinearGradientBrush(class Gdiplus::Point const &,class Gdiplus::Point const &,class Gdiplus::Color const &,class Gdiplus::Color const &)" (??0LinearGradientBrush@Gdiplus@@QAE@ABVPoint@1@0ABVColor@1@1@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipCreateFromHDC@8 が関数 "public: __thiscall Gdiplus::Graphics::Graphics(struct HDC__ *)" (??0Graphics@Gdiplus@@QAE@PAUHDC__@@@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipDeleteGraphics@4 が関数 "public: __thiscall Gdiplus::Graphics::~Graphics(void)" (??1Graphics@Gdiplus@@QAE@XZ) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipSetSmoothingMode@8 が関数 "public: enum Gdiplus::Status __thiscall Gdiplus::Graphics::SetSmoothingMode(enum Gdiplus::SmoothingMode)" (?SetSmoothingMode@Graphics@Gdiplus@@QAE?AW4Status@2@W4SmoothingMode@2@@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipFillRectangle@24 が関数 "public: enum Gdiplus::Status __thiscall Gdiplus::Graphics::FillRectangle(class Gdiplus::Brush const *,float,float,float,float)" (?FillRectangle@Graphics@Gdiplus@@QAE?AW4Status@2@PBVBrush@2@MMMM@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipFillRectangleI@24 が関数 "public: enum Gdiplus::Status __thiscall Gdiplus::Graphics::FillRectangle(class Gdiplus::Brush const *,int,int,int,int)" (?FillRectangle@Graphics@Gdiplus@@QAE?AW4Status@2@PBVBrush@2@HHHH@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipFillPie@32 が関数 "public: enum Gdiplus::Status __thiscall Gdiplus::Graphics::FillPie(class Gdiplus::Brush const *,float,float,float,float,float,float)" (?FillPie@Graphics@Gdiplus@@QAE?AW4Status@2@PBVBrush@2@MMMMMM@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdiplusStartup@12 が関数 "public: static int __cdecl UseGdiPlus::Startup(void)" (?Startup@UseGdiPlus@@SAHXZ) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdiplusShutdown@4 が関数 "public: static int __cdecl UseGdiPlus::Shutdown(void)" (?Shutdown@UseGdiPlus@@SAHXZ) で参照されました。
c:\Temp\iShellE\DocTh\Debug.080/DocTh.exe : fatal error LNK1120: 外部参照 14 が未解決です。
DocTh - エラー 15、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
リンク対象に Gdiplus.lib を追加して対応.
VirusTotal SmpTxt.exe
Synology NAS の Cloud Sync のログに,ダウンロードできないファイルが幾つかあった.
対象のファイルは SmpTxt.zip で,その中の SmpTxt.exe がうまくない様子.
VC 6 でビルドしたものがマルウェアなどとして検出されている.VC 8 でビルドしたものは問題ない.
Vector に登録できているので誤検出だろうと思うが,どうしたものか.
i_ShellExt 未定義ドキュメントのサムネイルを表示可能に
2022/09/22
VC のバージョンをあげて対応することに.また SmpTxt.zip 内の VC 6 版は削除予定.
2022/09/26
SmpTxt_2022_09.zip
WebGL Three.js r144
久しぶりに Three.js を更新しようかと…
いつものデータを r144 に書き換えて…
r131 と比べると,オブジェクトが暗い.
サンプルのデータを見ると mtl が変更されている.
ライブラリの変更履歴 を見ると 136 → 137 で変更されている.
r136 までにして,この辺りが更新された時に見直すこととするか?
CHttpFile Read
何年か前に Web 上の html を 読み取るコード を書いた.
それを 今回書き直し.
これらのコードでは「シフトJIS」で書かれたページ以外ではうまく処理できない?
以前利用した時は IIS のサーバで,html 内の一部のコードを読み取るだけなので,特に問題にはならかなった.
今回も,単純に html が更新されたかどうかだったので,それなりに処理できていた.
今度は,html だけでなく画像などバイナリにも対応したくなった.
CInternetFile::ReadString の部分を
{
CString buf ;
while (pFile->ReadString(buf)) {
tstring tmp = ::To_tstring(LPCSTR(LPCTSTR(buf))) ;
r_buf.push_back(tmp) ;
}
read_dt = ::String_Join_Line(r_buf) ;
}
CInternetFile::Read に変更.
{
FILE* ofp = ::Open_File(dt_file.c_str(),_T("wb")) ;
v_char readBuf ; readBuf.resize(1024) ;
while (true) {
UINT r_size = pFile->Read(&readBuf[0],1024) ;
::fwrite(&readBuf[0],1,r_size,ofp) ;
// if (r_size < 1024)
if (r_size < 1)
{
break ;
}
}
::fclose(ofp) ;
}
QNAP NAS に接続できなくなった
QNAP NAS からのメール.
[Warning][QuFirewall] Notification from your device: TS253D
NAS Name: TS253D
Severity: Warning
Date/Time: 2022/09/06 18:51:01
App Name: QuFirewall
Category: Firewall Events
Message: [QuFirewall] Reached alert message threshold. Threshold value: 300, Time interval: 2022-09-06 18:20:01 ~ 2022-09-06 18:51:01.
©2022 QNAP Systems, Inc.
IPv6 でのアクセス拒否が増えたみたいで,LAN 内など通すもの以外を「拒否」に設定変更.
これがいけなかった.設定を間違えてしまったみたいで,IPv6 側の先頭にすべてを拒否する様に指定してしまった.
実際は下の方に登録したつもりだったが,間違って上の方にも入力してしまった.
すると,QTS を含むすべてのアクセスができなくなってしまった.
スマートフォンの Qmanager もつながらない.Qfinder でも見つからない.SSH 接続も不可.
対応方法を検索すると次の様なものが見つかった.
After install QuFirewall i am not able to access the NAS
QNAP FinderでTurbo NASを検出できません。IPアドレスをブラウザに直接入力してもアクセスできません。
が,異なる方法で試してみた.
電源ボタンを 1.5 秒押して,一度シャットダウン.
しばらくおいて,電源 ON .
30 秒程度すると,Qfinder で見える様になった.
ブラウザで QTS を起動し「QuFirewall」を起動.
間違って登録してしまったガードを一時的に無効にして「適用」.
ここまでを QuFirewall の動作が始まる前に完了しなければならない.
あとは,幾つかの設定を見直し.
実際は,うまくタイミングが合わず,3 回位やり直しています.
うまくできない場合は「AppCenter」で「QuFirewall」を「削除」して,最初から設定し直す必要があります.
[Error][Multimedia Console]
メールをチェックしていると,QNAP NAS からのメール…
[Error][Multimedia Console] デバイスからの通知: TS253D
NAS 名: TS253D
重大度: Error
日付/時刻: 2022/09/05 02:10:53
アプリ名: Multimedia Console
カテゴリー: データベース
メッセージ: [Multimedia Console] データベースの修復に失敗しました。データベースが破損しており、修復できません。[Multimedia Console] > [インデックス] > [再インデックス化] でマルチメディアコンテンツデータベースを再構築してください。
「QuLog Center」にエラーログは残っているが「Multimedia Console」には特にそれらしい表示はない.
「QuMagie」などでも特に問題と思われる現象はなさそう.
「再起動」をスケジュール しているので,その影響か?
2022/09/07
NAS を再起動したら,また同じメッセージが送られてきた.
メッセージにある様に「再インデックス化」することに.
2022/09/08
インデックスはできていると思うが,NAS の再起動時また記録されてしまう.
2022/09/09
「Multimedia Console」の更新版(2.0.1)があったので更新.
これで状況はよくなるか?
GetActiveView
いつも面倒と思う CView の取得.
https://dev.mish.work/wordpress/2022/05/20/drop-lnk-on-mdi-exe/
普通は,CDocument から CView を操作することはあまりないものと思う.
が,今回はテスト用のコードで CView での表示情報を更新したくなった.
{
CFrameWnd* pFrameWnd = (CFrameWnd*)AfxGetMainWnd() ;
CFrameWnd* pActiveFrame = pFrameWnd->GetActiveFrame() ;
{
CXxxView* pView = (CXxxView*)pFrameWnd->GetActiveView() ;
if (pActiveFrame != NULL) {
pView = (CXxxView*)pActiveFrame->GetActiveView() ;
}
if (pView != NULL) {
PartsA sel_pa = *(pView->GetSelectP()) ;
{
PartsA err_pa = ::xx_get_error_xx(...) ;
sel_pa += err_pa ;
}
*(pView->GetSelectP()) = sel_pa ;
}
}
UpdateAllViews(NULL) ;
}
それを関数に.
CView* Get_active_view (void)
{
CFrameWnd* pFrameWnd = (CFrameWnd*)AfxGetMainWnd() ;
CFrameWnd* pActiveFrame = pFrameWnd->GetActiveFrame() ;
{
CView* pView = pFrameWnd->GetActiveView() ;
if (pActiveFrame != NULL) {
pView = pActiveFrame->GetActiveView() ;
}
return pView ;
}
return NULL ;
}
クリップボード ビューア
以前まとめたもの.
ClipView.doc
MSDNのドキュメントは,”Creating a Clipboard Viewer Window” で見つかる.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms649016.aspx
mk:@MSITStore:j:\MSDN\ipc.chm::/hh/winbase/clipbrd_47ok.htm
WM_CREATE ビューアとしての登録
NextWnd = ::SetClipboardViewer(hWnd) ;
WM_DESTORY ビューアの登録解除
::ChangeClipboardChain(hWnd,NextWnd) ;
WM_CHANGECBCHAIN 他のビューアが登録解除された
if ((HWND)wParam == NextWnd) { NextWnd = (HWND)lParam ; }
else if (NextWnd != NULL) { ::SendMessage(NextWnd,uMsg,wParam,lParam) ; }
WM_DRAWCLIPBOARD クリップボードの内容が更新された
// 描画または相当の動作
if (NextWnd != NULL) { ::SendMessage(NextWnd,uMsg,wParam,lParam) ; }
Authentication for … failed.
ASUSTOR NAS からのメール.
This is a system event notification sent from AS5202T.
Event Level: WARNING
Date: 2022/08/13 00:00
User: SYSTEM
Event: [Certificate Manager] Authentication for mish.myasustor.com failed.
NAS の ADM に入って「設定」-「証明書管理者」.
「mish.myasustor.com」を選んで「編集」.「証明書を更新」.
何故かうまく更新できない.QNAP NAS の方はうまく更新されている.
回数制限に引っ掛かってしまったので後日.
ポートフォワーディングの設定?
それとも,他ユーザによる myasustor.com での制限?
2022/08/19
回数制限が解除された?みたいで,再度「証明書を更新」.
うまく更新できない.
そのうち,また回数制限に.
ASUSTOR のコミュニティサイトで,同様の投稿があった.
設定を適用できません。 再試行してください。 (Ref. 5401)
ひょっとして,どこかの不具合?
2022/08/23
Let’s Encrypt から次のメールが届いた.
Let’s Encrypt certificate expiration notice for domain “as.mish.work” (and 1 more)
Let’s Encrypt Expiry Bot
Hello,
Your certificate (or certificates) for the names listed below will expire in 17 days (on 10 Sep 22 07:26 +0000). Please make sure to renew your certificate before then, or visitors to your web site will encounter errors.
We recommend renewing certificates automatically when they have a third of their total lifetime left. For Let’s Encrypt’s current 90-day certificates, that means renewing 30 days before expiration. See https://letsencrypt.org/docs/integration-guide/ for details.
as.mish.work
mish.myasustor.com
For details about when we send these emails, please visit: https://letsencrypt.org/docs/expiration-emails/ In particular, note that this reminder email is still sent if you’ve obtained a slightly different certificate by adding or removing names. If you’ve replaced this certificate with a newer one that covers more or fewer names than the list above, you may be able to ignore this message.
For any questions or support, please visit: https://community.letsencrypt.org/ Unfortunately, we can’t provide support by email.
If you are receiving this email in error, unsubscribe at:
http://delivery.letsencrypt.org/track/unsub.php?u=30850198&id=82858f9794a44c0f8e72a5c25c74eb4d.WZdjCQO96%2FOPKKnNcXSSJq4c5Ck%3D&r=https%3A%2F%2Fmandrillapp.com%2Funsub%3Fmd_email%3Di%252A%252A%252A%252A%2540a%252A%252A%252A%252A.%252A%252A%252A
Please note that this would also unsubscribe you from other Let’s Encrypt service notices, including expiration reminders for any other certificates.
Regards,
The Let’s Encrypt Team
2022/08/28
今日も「証明書を更新」が押せるようになったが,また回数制限に.
それで,いろいろと調べていて,LAN 内であれば mish.myasustor.com にアクセスできることは確認した.
WAN から(スマートフォンの回線で現状は IPv4 接続)はアクセスできない.
nslookup で見ると IPv4 のアドレスが表示されない.
先日の ADM のアップデートで IPv6 がサポートされるようになり,その影響か?
一度「設定」-「ネットワーク」-「一般」の「IPv6を有効にする」のチェックを外して,付け直し.
それにより,IPv4 での接続ができるようにはなった.
2022/09/05
IPv4 で外から接続できることを確認して「証明書を更新」してみたが,これでもうまくいかない.
「ポートフォワーディング」を設定して NAS に転送する様にしても特に変わらず.
2022/09/12
今度は「新しい証明書を作成する」でやってみた.
すると「サブジェクトの別名」を指定しなければうまくいく.
「サブジェクトの別名」で「as.mish.work」を指定した場合に,うまくたどり着けない?
別の証明書として,as.mish.work を登録することにした.
CWinApp::m_pszAppName
今更の内容ではあるが…
MFC の SDI や MDI で,アプリケーション名は,作成したプロジェクト名?になる.
ダイアログベースで作成した場合は exe 名になってしまう.
困ることがあるのが exe 名を変更した場合のレジストリキー.
CWinApp::m_pszAppName はヘルプにある様に,AFX_IDS_APP_TITLE がなければ exe 名となる.
コードは MFC 6 のものだが,MFC 14.3 でも同様.
CWinApp::SetRegistryKey で m_pszAppName を利用している.
exe 名と異なるものを使用する場合,リソースの AFX_IDS_APP_TITLE を変更するか,なければ追加すれば良い.
VC 2022 ビルドでエラー
VC 2022 でビルドしようとすると,次の様なエラー.
—————————
Microsoft Visual Studio
—————————
オブジェクト参照がオブジェクト インスタンスに設定されていません。
—————————
OK
—————————
プロジェクトの設定などを見直しても特に怪しい部分はなさそう.
ビルド時に生成される幾つかのファイルを手動で削除しても特に変わらない.
さっきまで動作していた VC 2019 も同様のエラーに.
以前うまく動作しているはずのプロジェクトをコピーして,ビルドしようとしても同様.
こうなると,プロジェクトの設定ではなく,環境っぽい.
PC を再起動してうまく動作する様になった.
…\System32\MicrosoftEdgeCP.exe
…\System32\MicrosoftEdgeCP.exe が存在するのに,stat などでうまく読み取れない.
ファイルが存在しているかどうかをチェックするために,CFileStatus などを利用している.
CFileStatus::GetStatus() で,幾つかのファイルが正しくチェックできない.
コードをデバッガで追いかけていくと,::FindFirstFile で INVALID_HANDLE_VALUE となってしまう.
検索 すると次の様なものがあった.
FindFirstFile関数はx64環境においてシステムファイルが検索できない?
x86 の場合次のものを呼出して切替える必要があるみたい.
Wow64DisableWow64FsRedirection
Wow64RevertWow64FsRedirection
File System Redirector
今回 ::GetFileVersionInfo から始まって … いろいろとあったのでメモ.
VC 14 以降での stat.c の場所
VC 14 以降,<sys/stat.h> 関係が大きく変更されている?
CFileStatus でアサート
今回 stat 関数内をデバッグしようとしていて,ソースの場所がすぐにわからなかった.
#ifdef _MSC_VER
#define s_stat struct _stati64
#define TSTAT _tstati64
#else
#define s_stat struct stat
#define TSTAT stat
#endif
VC 12 以前は,(VS)\VC\crt\src\ 以下に存在する.
VC で,#include <sys/stat.h> としている所を「右クリック」-「ドキュメント<sys/stat.h>を開く」.
その位置を幾つか上に行って,Include の並びに Source があり,その対応する所に存在する.
VC 2015 以降のどれかで対応がつくと,それ以外でも対応したもの(10.0.?????.0)が開かれる?
NAS OpenVPN サーバ設定
以前 ASUS ルータ で 設定 したが,最近安定しないので NAS で設定した.
OpenVPN の設定手順は次の様なもの.
1. VPN サーバで OpenVPN の有効化と設定.
2. .ovpn ファイルの出力.
3. .ovpn ファイルの編集.
4. OpenVPN が NAS に到達できる様に,ルータやファイアウォールを設定.
5. OpenVPN クライアント で .ovpn ファイルを取り込み.
6. クライアントから「接続」.
Synology NAS
「パッケージセンター」で「VPN Server」を「インストール」.
追加された「VPN Server」を起動.
「OpenVPN」を選んで「OpenVPN サーバーを有効にする」にチェック.
この時「ポート」は「1194」から変更(例えば 51234 )して,「適用」.
これで「エクスポート設定」が押せるようになる.
出力した .ovpn を「メモ帳」などで開いて編集.
先頭の方にある次の行の「YOUR_SERVER_IP」を変更.
remote YOUR_SERVER_IP 51234
remote 27.92.xxx.xxx 51234
DDNS を使用している場合は xxx.myds.me などの指定も可能.
私の場合,動作確認のために 192.168.0.xxx の .ovpn も用意している.
OpenVPN クライアントでの接続時の「ユーザ名」などは,NAS のユーザ情報が利用される.
ルータのポートの設定は次の様なものを追加.
ASUSTOR NAS
「App Central」で「VPN Server」を「インストール」.
「VPN Server」を起動して「OpenVPN」を「ON」に.
「権限」で「ユーザー」を「追加」,「適用」.
「設定」-「OpenVPN」で「ポート」などを変更し「構成ファイルのダウンロード」.
.ovpn 内の OPENVPN_SERVER_IP を変更.
後は同様に OpenVPN クライアントで取り込めば良い.
QNAP NAS
「App Center」で「QVPN Service」を「インストール」.
「QVPN Service 3」を開いて「OpenVPN」の設定.
「設定ファイルのダウンロード」したファイルを OpenVPN クライアントへ.
2023/01/29
Synology NAS で「サーバーCNを認証」にチェックを入れているとエラーになることがある様です.
Android から Synology VPN Server に接続できない