We would have seen many issues while writing a stream drvier. Today i faced an peculiar issue.
I was trying to implement a service ( a stream Interface DLL).
DLL_PROCESS_ATTACH is called and immediately DLL_PROCESS_DETACH is called, i was struggling for more than 3 hours why?.
I changed the .cpp to .c and was changing the Sources file, Registry file and everything. Nothing helped.
Atlast the issue was Uppercase I. Yes.
In my Deinit function instead of XXX_Deinit I had XXX_DeInit. This is the culpirit.
When the Device.exe/Services.exe loads the DLL, it checks whether all the interfaces are properly defined. It sees that XXX_Deinit is not defined properly, so it unloads the DLL and sends DLL_PROCESS_DETACH .. and exits.
So friends, be Sensitive for Case Sensitive