
VC++2005にて下記サイトを参考にパイプを用いたプロセス間通信を行うプログラムを作成しています。
猫でもわかるプログラミング
(1)第242章 匿名パイプ(サーバー側)
http://www.kumei.ne.jp/c_lang/sdk3/sdk_242.htm
(2)第243章 匿名パイプ(クライアント側)
http://www.kumei.ne.jp/c_lang/sdk3/sdk_243.htm
サーバー側からWriteFileでデータを送信する際に、
char型配列に入ったバッファデータ「szBuf」を送信し、
クライアント側のReadFileで同じく「szBuf」で受信していますが、
構造体Data
==================
typedef TypeData{
int a;
int b;
char c[10];
}Data;
==================
のオブジェクトdataを送信するには、WriteFile及びReadFileの箇所は
どのように実装すれば良いのでしょうか?
MSDNにはWriteFileの引数の型はLPCVOIDとあるため、
可能だと思うのですが。。。
もし解決策をご存知の方おられましたら、ご教示お願い致します。

No.3ベストアンサー
- 回答日時:
>Data* data;
>ReadFile(hRead, (LPVOID)data, sizeof(data), &dwResult, NULL);
構造体の実体はmalloc()等で作ってありますか?
補足のコードのままだとすると、dataの中身はNULL(あるいはゴミ)になっているのでエラーになって当然です。
////////
Data* data;
data = malloc(sizeof(data));
ReadFile(hRead, (LPVOID)data, sizeof(data), &dwResult, NULL);
////////
あるいは、ポインタを使わずに次のようにしてもいいです。
Data data;
ReadFile(hRead, (LPVOID)&data, sizeof(data), &dwResult, NULL);
※WriteFileの方も、dataはポインタではないと思うのですが...
No.2
- 回答日時:
(LPCVOID)data
を
(LPCVOID)&data
としてみて下さい。
この回答への補足
ご回答ありがとうございます。
(LPCVOID)data
⇒(LPCVOID)&data
とすることでWrite側はコンパイルが通りました。
しかしRead側で
Data* data;
ReadFile(hRead, (LPVOID)data, sizeof(data), &dwResult, NULL);
とポインタで受け取ろうと思ったのですが、画像の様なエラーが出てしまい、
データを受け取れません。。
聞いてばかりで本当に申し訳ありませんが、Read側でどのような実装で
データを受け取れば良いのか、ご教示お願いできませんでしょうか?
No.1
- 回答日時:
普通のファイルI/O同様に扱えます。
Dataにキャストすれば問題ないと思います。
この回答への補足
typedef TypeData{
⇒typedef struct TypeData{
ですね。すみません。。
こちらのURLの方が分かりやすかったので、参考にしてキャストしてみました。
http://www2m.biglobe.ne.jp/~yasutaka/intro2/no_1 …
WriteFile(hWrite, szBuf, sizeof(szBuf), &dwResult, NULL)
の箇所を
Data data;
WriteFile(hWrite, (LPCVOID)data, sizeof(data), &dwResult, NULL)
にキャストし、実行しましたが下記エラーが発生しました。
>2 番目の引数を 'Data' から 'LPVOID' に変換できません。
キャストの仕方が悪いのでしょうか?お手数ですが、具体的な解決策についてご教示お願いできませんでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- サーバー お名前ドットコムの共用サーバー 送信済みメールをサーバーから削除できるか? 2 2023/03/01 10:44
- C言語・C++・C# 現在プログラムを作っているのですが、実行したときに写真のように結果が表示されるのですが、これを CH 2 2023/01/18 16:22
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カレンダー1ヶ月分をわけて表示
-
平滑化フィルタ
-
ハッシュの配列???
-
ログを複数同時に削除
-
お直しお願いいたします
-
ラズパイ3と音声認識Juliusを...
-
C#でのswitch文
-
ビットデータのチェック方法
-
hiddenを使ったセッション
-
printfの%eで指数部分の桁数を...
-
10Mバイトて文字数に すると何...
-
アンケートフォームについて
-
$template->output();の時に ...
-
DataGridViewの特定列に入力さ...
-
PHPのCookieが有るか無いかで、...
-
なぜ?
-
UTF-8で5~6バイトになる文字コ...
-
文字数制限(バイト)をしたい
-
Excel 1セル当りの文字数が2...
-
フォームメールで名前を全角の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
printfの%eで指数部分の桁数を...
-
stable diffusionのエラー
-
int型(2バイト)データの分割
-
CreateProcessでの環境変数の設...
-
【Excel VBA】10進数を2進数に...
-
エクセルVBA:日付データの変換...
-
C#でのswitch文
-
Excel VBA グラフ作成のとき...
-
ポインター引数の関数でコンパ...
-
C言語でのLinuxとwindows共通の...
-
C言語の構造体にてバブルソート...
-
sort関数でひらがなとカタカナ...
-
VisualBasicでレジストリキーの...
-
構造体のソートの方法について...
-
RegQueryValueExでの2バイト文字
-
'dataType' 引数を Null にする...
-
ActivePerlでSMTPプロトコルで...
-
POSTで配列のデータを渡す方法は?
-
min_elementの三番目の引数
-
c言語の多次元配列で1から100ま...
おすすめ情報