winceドライバによるブロードキャストメッセージの送信


【オリジナル】winceドライバがブロードキャストメッセージを送信
 
winceの駆動の下で、カスタムのメッセージを追加して、ある時HWND_に送信しますBROADCASTは、アプリケーション層において、対応するプログラムがこのメッセージを受信し、対応する処理を行う.
 
ドライバの定義送信メッセージ:(例:)
//********************************************************************
// Function		:	SendSIGNALMessage
// Description	:	 
// Input		:	signal :  
// Output		:	NONE
// return		:	TRUE/FALSE
//********************************************************************
BOOL SendSIGNALMessage(int signal)
{
	BOOL ret = FALSE;
	//  
	static UINT WM_TGD_SIGNAL = RegisterWindowMessage(_T("TGD_SIGNAL_MESSAGE"));

	if(WM_TGD_SIGNAL){
		ret = PostMessage(HWND_BROADCAST, WM_TGD_SIGNAL, (WPARAM)signal, 0);
		if(!ret)
			RETAILMSG(1, ( TEXT("### Send SIGNAL Message Fail! ###\r
") )); else RETAILMSG(1, ( TEXT("### Send SIGNAL Message Success! signal:%d ###\r
"), signal )); } else{ RETAILMSG(1, ( TEXT("### RegisterWindowMessage WM_TGD_SIGNAL Fail! ###\r
") )); } return ret; }

 
アプリケーション層構成は、カスタムメッセージを受信します.
1、メッセージ定義の追加:(駆動層間の定義と同じ)(対応するcppファイルに追加)//信号メッセージstatic UINT WM_TGD_SIGNAL = RegisterWindowMessage(_T("TGD_SIGNAL_MESSAGE"));
 
2、受信メッセージ処理関数を追加する:
(対応するヘッダファイルに宣言を追加)
afx_msg LRESULT OnSelfMessageHandle(WPARAM wParam, LPARAM lParam);

(対応するcppファイルに処理を追加)
//********************************************************************
// Function		:	OnSelfMessageHandle
// Description	:	 
// Input		:	wParam : 
// Input		:	lParam : 
// Output		:	
// return		:	LRESULT
//********************************************************************
LRESULT CD3GOtherDlg::OnSelfMessageHandle(WPARAM wParam, LPARAM lParam)
{
	CString tmp;
	tmp.Format(_T("wParam:%d, lParam:%d"), wParam, lParam);
	MessageBox(tmp, L" ");
	return 1;
}

 
3、カスタムメッセージと受信関数のマッピングを追加する:(cppファイルに追加し、次の青い太字部分を追加する)BEGIN_MESSAGE_MAP(CD3GOtherDlg, CDialog) #if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)  ON_WM_SIZE() #endif  //}}AFX_MSG_MAP  ON_BN_CLICKED(IDC_BTN_EXIT, &CD3GOtherDlg::OnBnClickedBtnExit)  ON_BN_CLICKED(IDC_BTN_GET_NET_MSG, &CD3GOtherDlg::OnBnClickedBtnGetNetMsg)  ON_BN_CLICKED(IDC_BTN_CHECK_WORK, &CD3GOtherDlg::OnBnClickedBtnCheckWork)  ON_REGISTERED_MESSAGE(WM_TGD_SIGNAL, OnSelfMessageHandle) END_MESSAGE_MAP()
 
ここで、アプリケーション層で最下位層から送信されたメッセージを受信することができます.この場合、ブロードキャストメッセージがあり、必要なアプリケーションを通知する必要があります.このメッセージを受信する必要があるアプリケーションは受信処理を追加すればよい.
 
上記の方法は、最下位ドライバが1つのメッセージを送信した後、上位のいくつかのアプリケーションが対応するメッセージを受信することができ、伝達されたパラメータも正しいことをテストした.