2017-03-07 17 views
0

私のプログラムはメールスロットを作成します。 受信者createfileには - GENERIC_WIRTE | GENERIC_READ/FILE_SHARE_WIRTE | FILE_SHARE_READ/OPEN_EXISTING - およびReadfile(handle、buf(struct)、1024、len、NULL)はエラーを返します。 ERROR_INVALID_PARAMETERパラミターはどうですか?Windows Readfileが返すERROR_INVALID_PARAMETER 87

ソース

プログラム:成功

SECURITY_DESCRIPTOR sd; 
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION); 
SetSecurityDescriptorDacl(&sd, true, NULL, false); 

SECURITY_ATTRIBUTES sa; 
sa.lpSecurityDescriptor=&sd; 
sa.bInheritHandle=true; 

受信機:

CreateFile(msg_key_ 
, GENERIC_WRITE | GENERIC_READ 
, FILE_SHARE_WRITE | FILE_SHARE_READ 
, 0 
, OPEN_EXISTING 
, FILE_FLAG_OVERLAPPED 
, 0 
); 

のReadFile(msg_id_、(LPVOID)MSG、1024、& byteLen、NULL);

は、あなたがメールスロットに周りに間違った方法を使用しようとしている...

+0

コードを投稿してください。 CreateFileの戻り値をチェックしていますか? – Anders

+0

プログラムコード:createmailslot with MAILSLOT_WAIT_FOREVERとsa。これは成功です。戻り値はINVALID_HANDLE_VALUEではありません。 – CancerYoon

答えて

0

リターンERROR_INVALID_PARAMETERです。

メールスロットサーバーハンドルが、CreateMailslotを呼び出すことによって作成され、メッセージを受信するためのものです。

メールスロットクライアントハンドルが、CreateFileを呼び出すことによって作成され、メッセージを送信するためです。

クライアントハンドルでReadFileを呼び出すことはできません。メールスロットは双方向ではありません。

+0

ありがとう!!私はそれを解決した。 – CancerYoon

関連する問題