|
The problem i'm having is this CreateThread returns a handle to the thread the handle is not needed but even after the thread dies the handle seams still to exist so i did the folowing.
CloseHandle ( CreateThread(....) );
could this become a problem now in future and past verions of windows?
Simply to ignore it is not an options since houerly there might be 100's of trheads.
G_S
|
|
|
|
|
Well, you shouldn't do that code exactly because you need to check the return value from CreateThread() to see if it succeeded.
If it does succeed, it returns a handle to the thread object in the kernel. If you don't need to use that handle, you can close it right away. You're right in that you shouldn't ignore it, because objects with open handles can't be destroyed, and will fill up your app's process space.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
Thanks for the quick response.
G_S
|
|
|
|
|
Hi all. I have a C# program which I install with an MSI I create with 'Advanced Installer'. The version I have does not allow me to install a driver. Obviously, my app needs .NET, so I wrote a Win32 windows app, which provides a splash screen, installs the .NET framework, etc. I'd like to also install a .inf file ( a driver ) in this code. However, googling 'C++ install driver' gives a ton of useless matches ( I'm usually good at google but not this time ). Does anyone know how I can install a driver programatically ?
Thanks
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
|
Hi Mike. Thanks for that. If I had to guess who was going to solve it for me, I would have guessed you
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Is this method generally usable for device drivers? I've got an install routine now that uses the Setup API, but it seems cumbersome.
Software Zen: delete this;
|
|
|
|
|
|
Thanks anyway .
Device drivers are an arcane and treacherous kind of programming. Even today, the DDK feels like it was put together by a team of Saruman's[^] orcs, toiling in some dank dungeon in the bowels of Microsoft. Despite the fact that device drivers have a fundamental affect on system security and stability, there is no uniform method for their installation.
Even though I have code that installs drivers for two custom devices we use in our products, I've never written it up for Code Project. As far as I know, the methods I'm using will only work for my two custom devices. The original development of the installation was a process of making arbitrary mutations in the code, and observing the results. I hate that sort of thing.
Software Zen: delete this;
|
|
|
|
|
Fatally wrong!!!
You can only use CreateService() for normal kernel mode services, but never for WDM drivers. They need additional information in the registry, which can never be set by using CreateService()!!!!!
You can get the information you need here: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/setupapi/setup/installing_from_an_inf_file.asp
Don't try it, just do it!
|
|
|
|
|
Hi
You may have solved your problem, but I still like to share this piece of information with you.
http://www.microsoft.com/whdc/driver/install/difxtools.mspx
you can try tye API of microsoft which make driver instalation and Uninstallation very easy and effective.
Regards
Anil
|
|
|
|
|
I have built a cpp project into an exe file. When I run it it just shows for a moment and disappear. How can I make it seen untill i close the app.
Please help
Angalo
Angalo
|
|
|
|
|
|
How are you running it? Is it a GUI or console application? If the former, is it dialog, SDI, or MDI?
"The largest fire starts but with the smallest spark." - David Crow
|
|
|
|
|
Hi!
It is a console application. When I run the exe it just shows the conole and immediately disappears.
|
|
|
|
|
Open a command prompt window first, and then run your application from there. It should be fine.
"The largest fire starts but with the smallest spark." - David Crow
|
|
|
|
|
Angalo wrote: I have built a cpp project into an exe file. When I run it it just shows for a moment and disappear. How can I make it seen untill i close the app.
Please help
Use Ctrl-F5 or put a getch() as the last line in your main function.
Regards,
Nish
|
|
|
|
|
It sounds like you are running your application under the debugger. Place a breakpoint on the last line of code in your application. For a console application, this will be the return statement in the main function.
Software Zen: delete this;
|
|
|
|
|
Hello:
I would like to set a Check-box control to "BST_INDETERMINATE" state, but don't know how.
I have set the "Tri-state" to true in the Check-box control properties.
Please help me with this.
Blakiston
|
|
|
|
|
|
I have built a cpp project into an exe file. When I run it it just shows for a moment and disappear. How can I make it seen untill i close the app.
Please help
Angalo
|
|
|
|
|
If your exe is a console application, add a getch() as the last statement in u r program. Don’t forget to include conio.h.
-- modified at 9:53 Saturday 27th May, 2006
|
|
|
|
|
Can you be more specific
whitesky
|
|
|
|
|
Hello.
I'm trying to figure out how to arrange the following code so that if a user were to enter a movie title, the SQL code in this program can accept a user-entered string and return the results. Right now, if I just put the name 'Vertigo', directly into the SQL code, it works perfect, but if I put the string sMovie into the SQL code, it just crashes the console.
Database name: VideoRental.mdb
Table name: Video
I only have three items in the table to test this code:
PROD_ID PROD_TITLE
10001 Psycho
11002 Vertigo
31001 Hostile
<br />
<br />
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \<br />
no_namespace rename("EOF", "EndOfFile")<br />
<br />
#include <stdio.h><br />
#include <iostream><br />
using namespace std;<br />
<br />
void main(void)<br />
{<br />
string sMovie = "Vertigo";<br />
<br />
CoInitialize(NULL);<br />
try <br />
{<br />
_RecordsetPtr pRst("ADODB.Recordset");<br />
_bstr_t strCnn("DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;DBQ=VideoRental.mdb");<br />
<br />
pRst->Open("SELECT * FROM [Video] WHERE [Video].[PROD_Title] = 'Vertigo';", strCnn, adOpenStatic, adLockReadOnly, adCmdText);<br />
<br />
pRst->MoveFirst();<br />
<br />
while (!pRst->EndOfFile) <br />
{<br />
cout<<(char*) ((_bstr_t) pRst->GetFields()->GetItem("PROD_ID")->GetValue())<< " ";<br />
cout<<(char*) ((_bstr_t) pRst->GetFields()->GetItem("PROD_TITLE")->GetValue())<< " ";<br />
pRst->MoveNext();<br />
}<br />
system("pause");<br />
pRst->Close();<br />
<br />
system("pause");<br />
<br />
}<br />
catch (_com_error &e)<br />
{<br />
cout<<(char*) e.Description();<br />
}<br />
<br />
::CoUninitialize();<br />
}<br />
|
|
|
|
|
You have to build the command string, using std::ostringstream is the easiest way to do this.
Dreamspeeder wrote: pRst->Open("SELECT * FROM [Video] WHERE [Video].[PROD_Title] = 'Vertigo';", strCnn, adOpenStatic, adLockReadOnly, adCmdText);
std::ostringstream SQLCommand;
SQLCommand << "SELECT * FROM [Video] WHERE [Video].PROD_Title = '" << sMovie << "';" << std::ends;
pRst->Open(SQLCommand.str().c_str(), strCnn, ...
You may be right
I may be crazy
-- Billy Joel --
Within you lies the power for good - Use it!
|
|
|
|