DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プロセス間通信

  • 題名: プロセス間通信
  • 著者: tkms
  • 日時: 2006/04/26 18:54:17
  • ID: 15512
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[Win XP Pro VB.NET]
分類:[.NET]

お世話になります。

下記(VB)を参考にVB.NETにて処理を作成したのですが、VB.NETにする際どうしても
分からないところがあり投稿させて頂きました。何方か分かる方がいらっしゃい
ましたらご教授下さい。
宜しくお願いします。

参考元
http://www1.harenet.ne.jp/cgi-bin/cgiwrap/unaap/lib/libsmp.cgi?lang=&function=CallNamedPipe

VB.NETに移行する際に分からない所
Dim ltSA As SECURITY_ATTRIBUTES

'SECURITY_ATTRIBUTES構造体セット
With ltSA
.nLength = Len(ltSA)
.lpSecurityDescriptor = ??? ←分からない所
.bInheritHandle = True
End With

※構造体のアドレスをセットするにはどう記述したら良いのでしょうか?
サンプル通り GlobalAlloc で確保したアドレスを書けばいいんでは?

// .NET 的なコードに書き直すには余白が狭すぎます(w;
■No15518に返信(Hongliangさんの記事)
> サンプル通り GlobalAlloc で確保したアドレスを書けばいいんでは?
>
> // .NET 的なコードに書き直すには余白が狭すぎます(w;

回答有難う御座います。

Hongliangさんの言う様に最初GlobalAlloc で確保したアドレスをセットしてみたのですが
パイプ作成(CreateNamedPipe)の時にエラーになってしまいました。
(エラーコード998:メモリロケーションへのアクセスが無効です)
そこで、「セキュリティ記述子の初期化」の箇所をコメントとした所、同一端末での通信
は行えたのですがネットワークを介して他端末からの通信が行えませんでした。
APIの宣言から見直した所、宣言の仕方がAPIビューア(VB6のもの)で検索した物と
異なっていた為、サンプルとは少し異なったやり方となりました。
他端末からの通信を行う際にしなくてはいけない事、アドレスのセットの仕方等
知っている方がいらっしゃいましたらご教授ください。
宜しくお願いします。

※サンプルのサーバー側を(VB6にて)起動し、クライアント側をVB.NETに修正したものとの他端末からの通信は行えています。
ざっと移植したけど普通に動きますね。別コンピュータ上からも。

VB6 以前からの移植において気を付けなければならない点として、Long とかの意味が変わったとか、明示しない場合は変数の渡し方が ByVal になったとか、その辺ですが。
これ以上はコードを見ないことにはなんとも。

DOBON.NET | プログラミング道 | プログラミング掲示板