>VB初心者
バッファの先頭アドレスを渡す方法は>>230に書いた通りで間違ってないと思うよ。
MSDNライブラリにもそのように書いてあるし、今までそれで問題は出てないから。
それでエラーが出るとすれば、原因は他の部分でしょう。

後C文字列の先頭アドレスを渡すときもStringをByValで渡さないとだめね。
ただし、これは呼んだ先で文字列を変更しない場合だけね。(つまりOut属性は不可)
呼んだ先で文字列を変更したい場合はStringBuilderをByValで渡すようにする。
この辺りもMSDNライブラリに書いてあるよ。
非常に散漫で分かりにくいけど。