プログラミング

SysAllocString

2008年4月22日

SFC miniの一部の機能がVistaで動かない件について、一ヶ月悩んだのがうそのような出来事が…。

原因はほぼ一つのことに絞られれていた。SFC miniから文字列を出力した場合、WSHの側でそれを使用した後に例外が出て止まる。mallocやnewやdeleteなどをいくらいじっても駄目。

で、思いついたのが、当然ではあるのだが、Google先生に聞いてみること。今回の件の実装については、"pVarResult->bstrVal="というソースコードが必ずあるはず。で、『"pVarResult->bstrVal"』という検索語で調べてみた。

4つ目に、このブログのエントリーが。これはまずいと思ったけれど、その少し下に、『pvarResult->bstrVal = SysAllocString(wStrValue);』と言う文字が。SysAllocString!!!なんと心地いい名の関数であることか。これだと思い、テストコードに挿入。いとも簡単にエラーが無くなった。1ヶ月悩んだのがまるで嘘であったかのように…。

色々調べると、次のページあたりが参考になりそう。

WinAPI: BSTR
BSTR 用のメモリの割り当てと解放

SysAllocStringを使っていなかったのは規約違反であったということらしい。

これで、Vista対応版のSFC miniの新しいバージョンをリリースするめどが、ほぼついた。

コメント

コメントはありません

コメント送信