Home Computer Tutorials Computer Knowledge How to call callback function in nested DLL?

How to call callback function in nested DLL?

Jan 20, 2024 am 08:27 AM
dll callback function

How to call callback function in nested DLL?

How to call the callback function in the nested DLL

HMODULE hModelHand = LoadLibrary(__T("MyDLL.DLL"));

SetLog pLogShowFun = (SetLog)GetProcAddress(hModelHand, MYTESTFUN);

{ if (NULL == pLogShowFun)

AfxMessageBox(__T("get mydll.dll address erro!"));

}

pLogShowFun((writeLog *)(Mylog::writelog));1234567891011

Operation in DLL

#define 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;

}

}

Explain how to implement C callback function

What is a C# callback function? The C# callback function is a function provided by the application to be called by the Windows system DLL or other DLL. It is generally used to intercept messages, obtain system information, or handle asynchronous events. The application tells the DLL the address pointer of the callback function, and the DLL calls the function at the appropriate time. The callback function must comply with the pre-specified parameter format and delivery method, otherwise the program or system will crash as soon as the DLL calls it. Normally, the callback function uses the standard Windows API calling method, that is, __stdcall. Of course, the DLL compiler can define the calling method by himself, but the client program must also comply with the same regulations. In the __stdcall mode, the parameters of the function are pushed onto the stack in order from right to left. Unless they are explicitly pointed out as pointers or references, the parameters are passed by value. You are responsible for popping the parameters from the stack before the function returns. Understand C# callback functions! When a program calls a function (usually referred to as api), it is equivalent to the program calling a function. The relationship is expressed as follows: call

program--------------------→dll

When a program calls a function, it passes the address of its own function as a parameter to the function called by the program (then its own function is called a callback function). DLL functions that require callback functions are often those that must be executed repeatedly. The function and relationship of the operation are expressed as follows: call (call)

callback (callback) When the function you call passes the return value to the callback function, you can use the callback function to process or complete certain operations. As for how to define your own callback function, it depends on the specific API function used. Many different types of callback functions have various parameters. Descriptions of these parameters are generally described in the help, such as the parameters and return values ​​of the callback function. In fact, simply put, the callback function is called by the DLL after the function you wrote meets certain conditions! There is also a saying (which is easier to understand): The callback function is like an interrupt processing function, which is automatically called by the system when the conditions you set are met. The following is the sample code: WorkClass.cs: usingSystem; namespaceCallBackSample ...{ publicdelegatestringShowMessage(stringmessage); internalclassWorkClass ...{ publicvoidDoWork(stringmessage) ...{ ShowMessageshowMessage=newShowMessage(showCoolMessage); showMessage =showTerribleMessage; stringresult=""; foreach(ShowMessageshinshowMessage.GetInvocationList()) ...{ result =sh(message); } Console.Write(result); Console.Read(); } privatestringshowCoolMessage(stringmessage) ...{ strings=message "Cool!"; returns; } privatestringshowTerribleMessage(stringmessage) ...{ strings=message "Terrible!"; returns; } } } program.cs: namespaceCallBackSample ...{ classProgram ...{ staticvoidMain(string[]args) ...{ WorkClassworkClass =newWorkClass(); workClass.DoWork("Basketball"); } } }

The above is the detailed content of How to call callback function in nested DLL?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to Fix the Steam Cloud Error? Try These Methods How to Fix the Steam Cloud Error? Try These Methods Apr 04, 2025 am 01:51 AM

The Steam Cloud error can be caused by many reasons. To play a game smoothly, you need to take some measures to remove this error before you launch the game. php.cn Software introduces some best ways as well as more useful information in this post.

Windows Metadata and Internet Services Problem: How to Fix It? Windows Metadata and Internet Services Problem: How to Fix It? Apr 02, 2025 pm 03:57 PM

You may see the “A connection to the Windows Metadata and Internet Services (WMIS) could not be established.” error on Event Viewer. This post from php.cn introduces how to remove the Windows Metadata and Internet Services problem.

Fixed – OneDrive Not Uploading Photos on PC Fixed – OneDrive Not Uploading Photos on PC Apr 02, 2025 pm 04:04 PM

OneDrive is an online cloud storage service from Microsoft. At times, you might find OneDrive fail to upload photos to the cloud. If you are on the same boat, keep reading this post from php.cn Software to get effective solutions now!

How to Resolve the KB5035942 Update Issues – Crashing System How to Resolve the KB5035942 Update Issues – Crashing System Apr 02, 2025 pm 04:16 PM

KB5035942 update issues - crashing system commonly happens to users. Inflicted people hope to find a way out of the kind of trouble, such as crashing system, installation, or sound issues. Targeting these situations, this post published by php.cn wil

Remove PC App Store Malware - A Full Guide for You! Remove PC App Store Malware - A Full Guide for You! Apr 04, 2025 am 01:41 AM

If you have a program called PC App Store on your computer and did not purposely install it, then your PC may be infected with the malware. This post from php.cn introduces how to remove PC App Store malware.

Fix: Brothers: A Tale of Two Sons Remake Not Launching/Loading Fix: Brothers: A Tale of Two Sons Remake Not Launching/Loading Apr 02, 2025 am 02:40 AM

Is Brothers: A Tale of Two Sons Remake not launching? Encountering Brothers: A Tale of Two Sons Remake black screen? Here this post on php.cn offers you tested solutions to assist you in addressing this problem.

How to Use Chris Titus Tool to Create a Debloated Win11/10 ISO How to Use Chris Titus Tool to Create a Debloated Win11/10 ISO Apr 01, 2025 am 03:15 AM

Chris Titus Tech has a tool called Windows Utility that can help you easily create a debloated Windows 11/10 ISO to install a clean system. php.cn offers a full guide on how to do this thing using the Chris Titus tool.

Is Core Isolation Blocked by ew_usbccgpfilter.sys? Here Are Fixes! Is Core Isolation Blocked by ew_usbccgpfilter.sys? Here Are Fixes! Apr 13, 2025 am 12:47 AM

Many SurfaceBook users report that they meet the “core isolation blocked by ew_usbccgpfilter.sys” issue on Windows 11/10. This post from php.cn helps to fix the annoying issue. Keep on your reading.

See all articles