..



2025/11/21

	幾つかの関数呼び出しで,::File_IsNothing や ::File_IsDirectory の判断を追加

		::File_Is_Text		::LoadText

		これらでは,直接 fopen にあたるものを呼んでいて,無駄に時間がかかっていた.



	注意点	::File_IsDirectory など filestat.hxx にある関数について

		F_Stat クラスでは無効な共有名のファイルで時間がかかる.

		このクラスは ::File_IsExist などでも使用しているもの.

		::File_IsDirectory などを使用する時は,予め ::File_IsExist で存在の有無をチェックする必要がある.

			存在チェックをしていない場合は時間がかかることがある.







2025/11/20

	::WN_is_valid_share	(c_tstring& path) を用意.

		既にサーバをチェック済みの場合は,::WN_is_valid_share(s_share,path) で共有名が有効かどうかを判断する. 

		未チェックのサーバの場合は,::WN_get_valid_share を呼び出して,有効な共有名を求めている.


	existff.hxx ::File_IsExist を変更

		UNC の場合,::WN_is_valid_share で共有名が有効かをチェックしてから _taccess を呼び出す.

		但し,これを有効にするには,App.h のリソースの直後などで WN_fnc.hxx をインクルードする必要がある.


	CharFile.hxx ::FileIsExist も変更

		UNC の場合,::File_IsExist を呼び出す.


	残りの検討事項

		現状では exe 起動後にサーバの状況が変わっても,それが反映されない.

		これら以外にも,しばらく戻って来ない呼び出しがありそう.

			ファイルの有無をチェックしないで,ファイルアクセスする API などを呼んでいる?






2025/11/18

	::WN_File_IsExist (c_v_tstring&) を用意

		新しい File_IsExist で v_bool を返す.

		これはこれで意図した動作となる.

		が,実際は,現状の単一のパスをチェックする動作 ::File_IsExist(LPCTSTR ...) が多い.

		また,::WN_File_IsExist を複数回呼んだ場合への対応も必要.



		個別にチェックするために ::WN_is_valid_share_name(path) の様なものが必要か.






2025/11/11

	::NetServerGetInfo() と ::NetShareEnum() の速度

		ほぼ一緒?

			正しく認識できるときは 0.1 秒以内で戻ってくる.

			存在しないサーバやアクセス権がないサーバの場合は,2 ~ 10 秒?		環境により大きく異なる.


	::NetShareEnum を使用してチェックしてみたが...

		直接 ::File_IsExist を呼び出した時とそれほど変わらない?

			環境により,誤差の範囲のこともある.

	⇒	::NetServerGetInfo() や ::NetShareEnum() などの呼び出しを減らす工夫が必要.

		一つずつ順に処理するのではなく,サーバや共有名でまとめて,無効の時はスキップする.

			対象コードをまだ調べていないが,::File_IsExist(c_v_tstring& paths) の様なものが必要か?






2025/11/07

	サーバ上の共有名を求めるため,次を呼び出せば良さそう.

		::NetShareEnum(server,1,...) 

		オフラインファイル設定がされている場合,[Offline Share] として認識できる?
		







2025/11/06

	::File_IsExist

		環境によるのかもしれないが,共有名が存在しない( \\B660M\Publi_ )とかなりの時間がかかる( 1 分以上)ことがあった.

			当然だが,共有名まで正しくて,その下のファイルなどの存在チェックは問題ない.



		NetShareEnum:      サーバー上のすべての共有リソースを列挙。
		NetShareGetInfo:   指定した共有名の詳細情報を取得。
		NetShareCheck:     共有名が有効かどうかを確認。





2025/11/05

	::File_IsExist(LPCTSTR file_path)		MFC 版 ::FileIsExist()

		どちらも #ifdef	_MSC_VER の場合,_taccess() を使用して判断している.

		







2025/11/04

	サーバが有効かの判断

		::NetServerGetInfo(LMSTR(server.c_str()),101,&buff) で可能.

		戻り値が NERR_Success であれば良い.

		それ以外で確認できたのは次のもの.

			ERROR_ACCESS_DENIED     	   5 (0x  5)	アクセスが拒否されました。
			ERROR_BAD_NETPATH       	  53 (0x 35)	ネットワーク パスが見つかりませんでした。
			ERROR_INVALID_PARAMETER 	  87 (0x 57)	パラメーターが正しくありません。
			RPC_S_INVALID_BINDING   	1702 (0x6A6)	バインド ハンドルが無効です。
			RPC_S_INVALID_NET_ADDR  	1707 (0x6AB)	ネットワーク アドレスが無効です。