VisualWorks 内からEnumServicesStatusを呼び出そうとしています。最初の呼び出しでは、返される情報に必要なバイト数 (pcbBytesNeeded) を知るために、パラメーターを必要な値に設定します。
ここで、malloc: を使用して lpServices バッファーにメモリを割り当てる必要があります。これは、引数としてインスタンスの数を想定しています。これを簡単に計算するにはどうすればよいですか?pcbBytesNeeded を LPENUM_SERVICE_STATUS 構造体のサイズで割るだけで、メモリを解放するときにコードがクラッシュします。
/編集
メモリ解放時のクラッシュを解決しました。(ポインタを保持している変数を誤って操作してしまいました)。ただし、Karsten へのコメントでの私の質問はまだ有効です。ENUM_SERVICE_STATUS のサイズが pcbBytesNeeded を割り切らないのはなぜですか? これは、LPTSTR lpServiceName および LPTSTR lpDisplayName メンバーのためですか?