|
No, I've not done any driver-related projects. Try here. Dr. Newcomer knows his stuff.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
|
If the dll were loaded into memory for each app that required it, it would be a waste. Think of your own code, if you wanted to do the same calculation a few hundred times, would you code it a few hundred times or simply create a function and call that all those times? That's all a dll is, it's a set of functions that are used very often during the life cycle of you're OS's session.
|
|
|
|
|
Thanks Walder. But, my doubt is on how shared library is implemented.
We have A.exe and B.exe, using C.dll. When A.exe starts execution, C.dll (code + data) is loaded to memory. Where is this loaded into memory ? Within the process space of A.exe or outside ?
If B.exe also starts execution, and since the DLL is shared, won't it cause the problems of race condition ?
|
|
|
|
|
Dll's do not normally store data, if they do that data is not shared amongst processes. For the most part, the OS will handle the loading dll's, it will track the open handles, when there are none it will unload it.
Also, you do not need to worry about race conditions, this is related to multi threaded apps, not multi instance. A CPU, regardless of how powerful, can only execute one code at a time. The way your OS works, it divides this power between each app. Normally, ( think of a message loop now ) a program executes, then waits.
Add:
while ( true )
{
}
to your code and watch your system freeze, the app refuses to release the CPU to others.
What I'm trying to say is, the same piece of code will never be executed at the same time by two different processes.
|
|
|
|
|
WalderMort wrote: What I'm trying to say is, the same piece of code will never be executed at the same time by two different processes.
Untrue (although admittedly it depends on what you mean by the "same code"). Systems with multiple CPUs or CPUs with multiple cores are commonplace.
Steve
|
|
|
|
|
xavierakx wrote: Within the process space of A.exe...
Yes.
See here[^] for more.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Hi, Thank you all! I followed link by links...
I could get a very good article on shared libraries, that cleared my doubts. Thought of sharing -
http://www.iecc.com/linker/linker09.html
|
|
|
|
|
Hi,
Im working with this article:
http://www.codeproject.com/internet/client_server_socket.asp[^]
Can any1 help me how to re-connect Client?
Like after typing in QUIT, later type CONNECT and again connect to server w/o restarting Client app?
I tried to use shutdown(sock,2) and back to where I initialized connection:
myTcpSocket::initialize()
....
But i get WSAEISCONN and client closes itself :/
When i try closing socket with closesocket(sock) and when re-connecting back to myTcpSocket::initialize()
...
client stays alive but doesnt connect as i get WSANOTSOCKET.
I need help, i rebuild this example to be non-blocking, everything works great but i want it to disconenct and when i want to connect to server w/o the need to close client.
Huge thx in advance. It's a matter of life and death
|
|
|
|
|
hello,
The sample you are looking needs quiet a bit of modifications to work like your expectations.
The server is written for only one client connection, if you need to use it for multiple client connections you need to bring the acceptClient() also inside the while loop.
while()
{
acceptClient()
client->recieveMessage
if(BYE)
{
/* Close client Socket, you can delete the client socket by deleting the client pointer the destructor ~mySocket() will close the socket */
delete client;
continue;
}
client->sendMessage
etc.
}
/* Close Server Socket */
Refer these two samples for more understanding
http://www.codeproject.com/internet/winsockintro01.asp
http://www.codeproject.com/internet/winsockintro02.asp
Arun Krishnan
|
|
|
|
|
Thx for replay.
I found the problem, something was corrupting my socket. Can't remember now what, I cleaned the code, create new socket after closing older one, assign it to socket class and it all works w00t
|
|
|
|
|
am locking for get the function names through .Net tools like dumpbin.exe
from the dlls like use32.dll and shell32.dll it provide the name of function included int that dll but does not show the number of argument and datatype of the arguments.
Plz help me out and give me some helpful hints.
|
|
|
|
|
Just read the header file for the dll. They are all there in you "include" directory. Refer to MSDN for which header go's with which dll, but the names are pretty simple.
|
|
|
|
|
Only functions exported as C++ functions have their names decorated to include the return type and parameter list. Windows APIs are exported with C linkage so all you get is the function name.
|
|
|
|
|
Hey Friends
I wish to play a sound whenever an item is added to a listbox in another application (for which i do not have the code)
Now it appears that i should create a dll & set some type of hook
but which type?
has anybody tried this or have any relative info?
Regards
|
|
|
|
|
Check SetWindowsHookEx with idHook = WH_GETMESSAGE.
Don't try it, just do it!
|
|
|
|
|
Hi Alexandar
Not workinng.
I tried a hook in the same dialog box.
Hook gets installed but hookproc never catches it
Any suggestions?
Regards
HHOOK g_hHook;
LRESULT CALLBACK HookProc(int code, WPARAM wParam, LPARAM lParam)
{
if(code>=0)
{
MSG* vl_pMsg = (MSG*)lParam;
if(vl_pMsg->message==LB_ADDSTRING)
{
TRACE("Got It ...................\n");
}
}
return ::CallNextHookEx(g_hHook,code,wParam,lParam);
}
void CHookMeDlg::OnButton1()
{
g_hHook = ::SetWindowsHookEx(WH_GETMESSAGE,HookProc,::AfxGetInstanceHandle(),::GetCurrentThreadId());
}
void CHookMeDlg::OnButton2()
{
this->m_ctrlList.AddString("hello");
}
|
|
|
|
|
Hi guys,
I'm developing a source code that I need to make an imagem rotate and move on the 4 screen sides.
Inside OnPaint function I'm increasing the x value of the image, but I have no sucess viewing the image moving around, it seems that the screen is not being updated.
I'm debuging and this functions is being called and X is being incremented.
How can I do that?
What's wrong?
VOID OnPaint(HDC hdc)
{
Graphics graphics(hdc);
graphics.RotateTransform ( (float) coin->getAngle( ) );
graphics.DrawImage( coin->bmp, coin->getX( ), 0, coin->bmp->GetWidth( ), coin->bmp->GetHeight( ) );
coin->setX( coin->getX( ) + 5 );
coin->setAngle( coin->getAngle( ) + 1 );
if( coin->getX( ) == 100 )
{
coin->setX( 0 );
}
}
|
|
|
|
|
You may not want to do the rotate/move in OnPaint(), unless you want it to occur every time
the window needs repainting, which includes when another window is dragged over and/or off
your window.
Only the drawing should be done there.
To force an immediate repaint whenever the rotation/position changes, you can call
Invalidate() and UpdateWindow() (or RedrawWindow()) to force the WM_PAINT message
and the corresponding call to your OnPaint() method.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Answer: RedrawWindow(hWnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); //updates the screen.
|
|
|
|
|
Hi,
How to convert a PDF Doc with CID FONT TYPE2 to PDF Doc without CID font embedded. Please help me in this... contact me @ sundargr@gmail.com
----G
|
|
|
|
|
As the subject says, I need to play a sounds continuously (until explicitly cancelled) noise. This is to alert the user "Oi, pay attention, something important has happened." Personally, this would drive me dippy, but they're the ones who want it...
PlaySounds only works the once, then shuts up. This may be very easy with DirectSound, but I've never used it.
Any hints, pointers to examples / articles, giftwrapped pieces of code would be bery welcome!
Thanks,
Iain.
|
|
|
|
|
What about PlaySound() with the SND_LOOP flag?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
Did you see flags on PlaySounds function ?
|
|
|
|