はじめまして、いつも参考にさせていただいています。
今回CreateNamedPipeを利用してプロセス間通信を行おうと思うのですが
戻り値が必ず-1がかえってきます。
GetLasterrにてエラーコードを取得すると、0x7B
”ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません。”との事です。
何か特殊な前処理とかが必要なのでしょうか?
もしくは何かリンクが必要?コンパイラの設定??
何方かご教授ください。
BCBでは同様の記述でうまくいきます。
以下抜粋
OpenMode = PIPE_ACCESS_INBOUND;
PipeMode = PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT;
hand = CreateNamedPipe( (LPCTSTR)"\\\\.\\pipe\\ABCD", OpenMode, PipeMode,
PIPE_UNLIMITED_INSTANCES, 16384,
16384, 1000, NULL );
環境はXP Pro VS2005 C++コンソールアプリです。
毎度おなじみ"文字コード問題"ですかねぇ。
CreateNamedPipe( _T("\\\\.\\pipe\\ABCD"),... とか
CreateNamedPipe( TEXT("\\\\.\\pipe\\ABCD"),... とか
CreateNamedPipe( L"\\\\.\\pipe\\ABCD",... とかだとどうなります?
文字コードの問題なら
CreateNamedPipeA(( LPCSTR)...);
CreateNamedPipeW(( LPCWTR)...);
もありかなも、めんどいときは文字列の型により
〜A系、〜W系を指名してますです・・・混載しても動くし(笑)。
早速の返答ありがとうございます。
Unicode変換が必要だったのですね・・・
文字列だけではコンパイルエラーでLPCWSTR型を入れろと怒られていましたので、widecharでユニコード対応なんだなぁと思っていました。
ちなみに、LPCWSTRへキャストしても同様に-1が返却されますが・・・
επιστημηさま記述三タイプはすべてOKです。
επιστημηさま
仲澤@失業者さま
大変お世話になりました。良い勉強になりました。
> ちなみに、LPCWSTRへキャストしても同様に-1が返却されますが・・・
そりゃそーでしょ。
りんごにマジックで「みかん」て書いたらみかんになります?
キャストってば基本そーゆーことだから。
ツイート | ![]() |