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の新しいバージョンをリリースするめどが、ほぼついた。
原因はほぼ一つのことに絞られれていた。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の新しいバージョンをリリースするめどが、ほぼついた。