スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

マルチスレッドデバッグ手法

Windows C++ マルチスレッドアプリケーション デバッグ法 : ryukware

Windowsにおけるマルチスレッドプログラミングのデバッグ手法の考察。
まずコーディング時から問題を防ぐように注意するということと、Debugging Tools for Windows による低コストな実行時デバッグ方法を説明されている。


スポンサーサイト

ランダムアクセスでの?書き込みで利用可能メモリが減少する

Windowsで、普通にWriteFile()とかfwrite()とかwrite()でシークしながらのラ ンダムアクセス書き込みを行うと、タスクマネージャの物理メモリの利用可能 メモリがみるみる減っていく。
XPだとメモリが減っていくのに気がつかな かったが、Vistaだとグラフの表示内容が変っており、メモリの使用量がどんど ん増えていく。
そこで、
記事紹介: Inside Vista SP1 File Copy Improvements (1) - NyaRuRuの日記

関連あるようなないような...


大容量ファイルI/Oの効率について 其の弐 - TrickDiary

ReadFile()での検証で、速度低下とのと。同じ現象か?


Memory-Leak in CreateFile()/WriteFile()/CloseHandle() / fopen()/fwrite()/fclose() - comp.os.ms-windows.programmer.win32 | Google Groups

まさに同じ現象が報告されてる。けど具体的にFILE_FLAG_NO_BUFFERING において端数分をどうやって書き込むかは、不明。


How to write a file whose size is not integer multiple of sector size with FILE_FLAG_NO_BUFFERING option? - microsoft.public.vc.language | Google Groups
Creating arbitrary length file using unbuffered IO??? - microsoft.public.win32.programmer.kernel | Google Groups
Saving lots of files.... - microsoft.public.win32.programmer.kernel | Google Groups

このあたりは、FILE_FLAG_NO_BUFFERINGを使った場合の議論で、セクタ 倍じゃないサイズの書き込みについてなど。


Win32(NT)プログラミングノウハウ集

VirtualAlloc()の使い方の実例としてメモ。


各種制限値

Windows XP での NT ユーザー ハンドルの最大数は 1 プロセスにつき 10,00

NT ユーザーハンドルにファイルハンドルも含まれるのかが不明なものの 制限値であることには間違いないので。


CreateThread 関数

1プロセスにおけるスレッド数の制限について。スタックのサイズ設定に よって変わるものの、最大2028個のスレッドが生成可能。


CodeProject: A Handy Guide To Handling Handles. Free source code and programming help

C Libraryにおいては2048個の低レベルハンドルを、また512個のFILE*を 同時に開くことが可能と記述あり。


timeGetTimeとかGetTickCountの精度

[Windows]14.318180MHz1 - 糸且之入Eヨ言己

Windowsで性能測定してて処理にかかる時間が最低が10msから15ms程度 でそれ以上軽くならないのでおかしいと思って検索した結果。の中から のチョイス。
timeBeginPeriod(1);で精度を上げるように指定しないとまずかったら しい。


VC2005 のランタイム配置

以下の記事を見たら xxx.exe があったとして xxx.exe.local とかのファイル とかディレクトリだとか、Microsoft.VC80.CRT.manifest とか Microsoft.VC80.CRT のディレクトリとかに必要な DLL を配置すれば動きそう なのだけれど、VC2005のランタイムをどういう配置をしても VC2005 でビルド したモジュールが動かない。
再配布モジュールが C:/WINDOWS/WinSxS 以下にインストールされないとどう しても駄目っぽい。今回は、ランタイムをスタティックリンクした。結構時間 を食われたので、忘れないようにメモ。
C/C++ 分離アプリケーションおよび side-by-side アセンブリのトラブルシューティング

MSDN のサイト。


Manifest Required - blog


DLLの闇 (3) - NyaRuRuの日記


VS_VERSION を取り出す

バージョン取得

VERSION リソースからバージョン、コピーライトなどを取り出す方法。 これで、バージョンダイアログのバージョン表記を置き換えちゃえば楽。 VERSION リソースだけ変更すれば良いので...
記事のを元に書き換えたのを後でアップする


IPアドレスの変更検出

Geekなぺーじ : IPアドレスが変わった事を知る

"IPHLPAPIのNotifyAddrChange()関数を利用する"とのこと。XPも使用可 能なようなので。これを使う。


UNCパス表記の仕様

UNCパス表記の仕様について調べた。だが、正当なものが見付けられなかった。 結局いろいろな情報の断片と、実際に試した結果から以下の決まりごとがある ものと推測される。
サーバ名  [a-zA-Z0-9\-] (RFC1031)およびIPアドレスのDecimal表記
! " # $ & ' ( ) * + , / : ; < = > ? @ [ \ ] ^ { | } ~ を除いた文字
共有名 使える文字:[A-Za-z0-9!#$%&'()-.@^_`{}~]
使えない文字:" * + , / : ; < = > ? [ \ ] |
80 byteまで
Path (computing) - Wikipedia, the free encyclopedia

UNCパス表記についてわりかし詳しい解説あり。

Windowsにおけるパスの規則

シェルのパスチェックAPIと、その挙動についての解説。

@IT:Windows TIPS -- Hint:レガシーWindowsからはアクセスできない共有リソースを作成する

共有名には80byteまでに制限されるとある。

Windowsのファイル名 ルートディレクトリの表記は?

Windowsのルートプリフィックスの抽出とか絶対パスであるかどうかの判定は やはり大変っぽい。
以下の形式に対応すれば十分だろうか
  • C:\
  • \\.\C:\
  • \\?\C:\
  • \\server\share
  • \\?\UNC\server\share
Windows パス名の落とし穴

IPAのセキュアWindowsプログラミングの中の一節。

Naming a File

MSDN2の中のものなので信頼できる。だが、\\.\C:\形式の記述が見あた らない。

Windows の path について

上2つはこの記事から参照した。

file

いろいろすぎる、Windowsのパス表記法...

32bit Windowsのファイル名に関して

FATとかVFATのときの仕様だが、今でも通用する規則もある。

ファイルダイアログがおかしくなった

Files Disappear When Changing Filter in OpenFileDialog - .NET VC

ファイルダイアログでディレクトリを選択する度にカレントディレクト リが変る...。
さらに、"ファイルの種類"というかフィルタを変更するとファイルが表 示されなくなる(消える)現象が...。これに関しては上記アーティクル での発言で、MTAではなくSTAにすれば直るとある。実際に、MTAからSTA にしたら直った。なんだこれ。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。