2017-03-07 127 views
0

我的程序創建郵筒。 和接收器createfile與 - GENERIC_WIRTE | GENERIC_READ/FILE_SHARE_WIRTE | FILE_SHARE_READ/OPEN_EXISTING - 和Readfile(句柄,buf(結構),1024,len,NULL)返回錯誤。 ERROR_INVALID_PARAMETER。 paramiter怎麼回事?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);

是返回ERROR_INVALID_PARAMETER ...

+0

發佈更多代碼。你在檢查CreateFile的返回值嗎?程序代碼:帶MAILSLOT_WAIT_FOREVER和sa的createmailslot程序代碼: – Anders

+0

。這是成功。返回值不是INVALID_HANDLE_VALUE。 – CancerYoon

回答

0

你試圖周圍使用郵筒錯誤的方式。

郵筒服務器手柄,通過調用CreateMailslot創建的,是用於接收消息。

的郵筒客戶手柄,通過調用CreateFile創建,是發送消息。

您不能使用客戶端句柄調用ReadFile。郵筒不是雙向的。

+0

謝謝!我解決了它。 – CancerYoon