ネストされた DLL でコールバック関数を呼び出す方法
HMODULE hModelHand = LoadLibrary(__T("MyDLL.DLL"));
SetLog pLogShowFun = (SetLog)GetProcAddress(hModelHand, MYTESTFUN);
{ if (NULL == pLogShowFun)
AfxMessageBox(__T("mydll.dll アドレスを取得できません!"));
}
pLogShowFun((writeLog *)(Mylog::writelog));1234567891011
DLLでの操作
#MyDLL_API extern "C" __declspec( dllexport )
を定義します。typedef void(*writeLog)(const char *plogFile, int p_nType, const char * logText);
writeLog g_RunLog = NULL;
MyDLL_API void mytestfun(void *pfun)
{ if (pfun)
{
g_RunLog = (writeLog)pfun;
}
}
C コールバック関数の実装方法を説明する
C# コールバック関数とは何ですか? C# コールバック関数は、Windows システム DLL またはその他の DLL によって呼び出されるアプリケーションによって提供される関数であり、通常、メッセージのインターセプト、システム情報の取得、または非同期イベントの処理に使用されます。アプリケーションは DLL にコールバック関数のアドレス ポインターを伝え、DLL は適切なタイミングで関数を呼び出します。コールバック関数は、事前に指定されたパラメータの形式と配信方法に準拠している必要があります。準拠していないと、DLL がコールバック関数を呼び出すとすぐにプログラムまたはシステムがクラッシュします。通常、コールバック関数は Windows API の標準呼び出しメソッドである __stdcall を使用しますが、DLL コンパイラ自身で呼び出しメソッドを定義することももちろん可能ですが、クライアントプログラムも同様の規定に従う必要があります。 __stdcall モードでは、関数のパラメータは右から左の順序でスタックにプッシュされます。ポインタまたは参照として明示的に指定されない限り、パラメータは値によって渡されます。スタックからパラメータをポップするのはユーザーの責任です。関数が戻る前に。 C# コールバック関数を理解しましょう。プログラムが関数 (通常 API と呼ばれる) を呼び出すことは、プログラムが関数を呼び出すことと等価であり、その関係は次のように表されます。
プログラム--------------------→dllプログラムが関数を呼び出すとき、プログラムはそれ自身の関数のアドレスをパラメータとしてプログラムによって呼び出される関数に渡します (そのとき、その独自の関数はコールバック関数と呼ばれます)。コールバック関数を必要とする DLL 関数は、多くの場合、繰り返し実行する必要があり、演算の機能と関係は次のように表されます: call (call)
callback (コールバック) 呼び出した関数が戻り値をコールバック関数に渡すと、コールバック関数を使用して特定の操作を処理または完了できます。独自のコールバック関数を定義する方法については、使用する特定の API 関数によって異なります。多くの異なる種類のコールバック関数にはさまざまなパラメータがあります。これらのパラメータの説明は、一般にヘルプに説明されています (パラメータや戻り値など)。コールバック関数. 実際、簡単に言えば、コールバック関数は、作成した関数が特定の条件を満たした後に DLL によって呼び出されます。コールバック関数は、設定した条件が満たされたときにシステムによって自動的に呼び出される、割り込み処理関数のようなものです。以下はサンプル コードです: WorkClass.cs: usingSystem; namespaceCallBackSample ...{ publicdelegatestringShowMessage(stringmessage); innerclassWorkClass ...{ publicvoidDoWork(stringmessage) ...{ ShowMessageshowMessage=newShowMessage(showCoolMessage); showMessage =showTerribleMessage; stringresult=" "; foreach(ShowMessageshinshowMessage.GetInvocationList()) ...{ result =sh(message); } Console.Write(result); Console.Read(); } privatestringshowCoolMessage(stringmessage) ...{ strings=message "クール! "; 戻り値; } privatestringshowTerribleMessage(stringmessage) ...{ strings=メッセージ "ひどい!"; 戻り値; } } } Program.cs: namespaceCallBackSample ...{ classProgram ...{ staticvoidMain(string[]args) ... { WorkClassworkClass =newWorkClass(); workClass.DoWork("バスケットボール"); } } }
以上がネストされた DLL でコールバック関数を呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

起動時にnvvsvc.exeランタイムエラーが発生しますか?さらに悪いことに、あなたの何人かは黒い画面になってしまうかもしれません。したがって、このエラーをできるだけ早く削除することが緊急です。 PHP.CN Webサイトのこのガイドでは、実行可能なソルを集めました

複数のモニターがある場合は、Windows Pショートカットに精通している必要があります。ただし、Windows Pが適切に機能していない場合があります。この問題に直面している場合、Php.cnからのこの投稿は実際にあなたを助けることができます。

Acronisクローンの問題は、ディスクからデータの読み取りに失敗しましたが、クローニングプロセス中に表示されることがよくあります。この退屈な問題に直面したとき、あなたは何をすべきですか?修正してみてください。または、Acronis True Image、つまりPHP.CNソフトウェアに代わるものを実行できます

フォルダーから単語ドキュメントにアクセスしようとすると、クリックした後に「実装されていない」と書かれたエラーが表示される場合があります。 PHP.CNからのこの投稿では、「実装されていないファイルアップロード」問題を修正する方法を紹介します。

Microsoftは、AIに多くの人材と財源を投資しており、大きな結果を達成しています。この投稿では、PHP.CNでは、Windows 11とWindows 10のAIツールや機能を含むWindowsのAIについて説明します。

KB5034441エラーコード0x80070643でインストールできませんか? MicrosoftのWindows 10 0x80070643のPowerShellスクリプトは、Winreパーティションの更新を自動化して、BitLockerセキュリティ機能バイパスの脆弱性を修正するのに役立ちます。 php.cnガイドあなたのho

Contra:Operation Galugaは、Konamiが発行した新しくリリースされたシューティングゲームビデオゲームです。ここでは、PHP.CNソフトウェアに関するこの投稿はコントラに焦点を当てています。Galugaの操作ファイルの場所を保存し、コントラをバックアップする方法について説明します。

Microsoft Wordは、テキストのハイライトを含む、私たち全員に多くの有用な機能を提供します。ただし、最近、Microsoft Wordでテキストを強調できない問題に直面している人もいます。この問題は彼らに不便を引き起こします。あなたが彼らの一人なら


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
