SoftCas Part6

このエントリーをはてなブックマークに追加
87名無しさん@編集中
以前話題になっていたVirtualPTでsoftcasを使うとCPU使用率が上がる件だけど、
VirtualPTはTSデコード中にもカードリーダにアクセスしてカードの状態に
変化がないか監視している。で、変化があればおそらくメッセージを出すような
仕様になっていて、変化がない場合は100ms後にまたチェックを行っている。
調べたところ、上記の処理はSCardGetStatusChangeを、dwTimeoutに100の値を指定して
呼び出すことによって実現しているのだが、softcasではdwTimeoutの値を全く見ていないために、
関数を呼び出した後、瞬時にreturnしてしまうことにより、一切のウェイトなしに
無限にチェックが行われ、結果としてCPUが空回りしてしまうのが原因だった。