|
Yes, it's possible to open either a partition or a physical disk (including the partition table). And modify (with the correct access rights of course).
So we got all possibilities to mess things up!
Alcohol. The cause of, and the solution to, all of life's problems - Homer Simpson
|
|
|
|
|
I use this code.
Beware, it's C and not unicode compliant. Adjust it if you want to.
m_UseDrive is the drive letter to open, i.e: 'C'
sprintf(Drive,"\\\\.\\%c:", m_UseDrive);
hDrive = CreateFile(Drive, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
But when you read from it, you MUST use a multiple of the sector size. Else, the read will fail. The same goes for seeking.
You can find out the sector size by a DeviceIoControl-call, and get the disk geometry. (Search for documentation of the DISK_GEOMETRY struct).
Alcohol. The cause of, and the solution to, all of life's problems - Homer Simpson
|
|
|
|
|
I used a dialog based application. For OK Button click handler I wrote the following code as suggested by you. But I could not succeed. Is it that Administrator login is essential? What is meant by UNICODE complianr?
<br />
char Drive[20] , m_UseDrive = 'C' ;<br />
HANDLE hDrive ;<br />
<br />
<br />
sprintf(Drive,"\\\\.\\%c:", m_UseDrive);<br />
hDrive = CreateFile(Drive, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);<br />
if(hDrive == INVALID_HANDLE_VALUE)<br />
AfxMessageBox("Succeeded") ;<br />
else<br />
AfxMessageBox("Drive could not be opened") ;
|
|
|
|
|
Hello.
I always use the "disclaimer" about my source code not beeing Unicode compliant, and has C syntax.
In the past, I've been flamed a number of times, by people who were complaining about my source code. Nowadays, I always use that statement.
About your code example: You have switched your test/texts, so if you get "Drive could not be opened", all is fine, and the drive is open for use!
Just remember, all operations must be done on an even multiplier of the sector size (since a complete sector is the smallest amount that the drive can handle. It's ususally 512 bytes, but can differ).
Alcohol. The cause of, and the solution to, all of life's problems - Homer Simpson
|
|
|
|
|
Thanks a lot!
|
|
|
|
|
Under Windows 98, it fails. Is there any solution?
|
|
|
|
|
Hello.
I haven't used that code under "DOS"-Windows (95,98,Me), but as far as I know, it should work.
According to MS, there shouldn't be any limitations for 98/Me, see here[^]
Maybe you should try to change GENERIC_READ | GENERIC_WRITE to just GENERIC_READ.
Or changing FILE_SHARE_READ | FILE_SHARE_WRITE
Alcohol. The cause of, and the solution to, all of life's problems - Homer Simpson
|
|
|
|
|
|
Very useful, thanks (I've forwarded it on to someone who has been having Vista security issues)
Garth
|
|
|
|
|
Hi Garth,
Garth J Lancaster wrote: Very useful, thanks
No problem. It's nice to get a succint article out of Microsoft every now and again. I'm glad they made Dr. Russinovich a Research Fellow.
Jeff
|
|
|
|
|
Excellent! Thanks much for posting that link
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Hi,
Could anybody tell me that how can i save 3D frames to harddisk while rendering , using DirectX
thanks
Regards.
|
|
|
|
|
The IPL priority order is stored in non volatile memory of system.
I want to read the non volatile memory to get a IPL priority order.
How to do this.
If you have any other idea to get IPL priority order ,please give me.
|
|
|
|
|
Hi prathuraj,
prathuraj wrote: The IPL priority order is stored
If you are referring to driver loading order, there are no guarantees of order (outside of partitioning into SYSTEM_BOOT, etc). See Services[^] in MSDN.
Jeff
|
|
|
|
|
#include<iostream.h>
in the above line , is it right to say that #include is a pre processor directive.
|
|
|
|
|
Nilish wrote: #include<iostream.h>
in the above line , is it right to say that #include is a pre processor directive. \
The #include directive tells the preprocessor to treat the contents of a specified file as if those contents had appeared in the source program at the point where the directive appears.
I hope that this answers your question.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Sir, can u please explain a little bit more?
|
|
|
|
|
Nilish wrote: Sir, can u please explain a little bit more?
what don't you understand then ?
|
|
|
|
|
Basically, it replaces the #include line with the contents of the header file you include.
|
|
|
|
|
Straight from MSDN.
"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
|
|
|
|
|
Nilish wrote: n the above line , is it right to say that #include is a pre processor directive.
yes. every keyword that starts with a # is a preprocessor directive, and is told to work before the compiler actually starts its processing, thus the name pre-processor.
something totally different, you should prefer including <iostream> rather than <iostream>.h (notice the .h at the end of the file name). I'm not even sure the later one exists...
|
|
|
|
|
Oops - didn't see your reply. VS2005 is the first to not have iostream.h
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
It's also true to say that it's not standard C++. The iostream.h header is deprecated and should not be used.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
In the MSDN documentation of CreateFont, it says that the font height is calculated by,
nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
Here, what is meant by the value 72 ?
- NS -
|
|
|
|
|
There are 72 points per inch.
|
|
|
|