|
|
That! The idiom is sometimes called "Pimpl" (pointer to implementation).
|
|
|
|
|
I used to do this in C all time by leveraging how files and the keyword "static" are used. Like many before me, in some ways, I invented a this pointer without realizing it!
And here's the thing: sometimes I even do something similar with C++, though it can usually be slightly more elegant. Most recently, I did something similar with a Win32 DLL that had a straight C interface (so it could be called from .NET.)
|
|
|
|
|
I use the software "Everest" to obtain detailed infomation about my cdroms,
including description,serial number ,cach size and so on .
Now I wonder how "Everest" obtain such detailed infomation.
Now I just need the serial number of my cdrom. How? Thanks.
|
|
|
|
|
What about GetVolumeInformation[^] function?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I have tested GetVolumeInformation(), it can only obtain the physical disk C:\ .. but it can not do with my H:\ (my cdrom)
|
|
|
|
|
You can use Win32_CDROMDrive WMI class for retrieving all the information about CD ROM drive. Check out the MSDN page[^]
|
|
|
|
|
yes, I just used Win32_CDROMDrive .
But the member VolumeSerialNumber is empty ,
and
SerialNumber
Data type: uint16
Access type: Read-only
Number supplied by the manufacturer that identifies the physical media. Example: WD-WM3493798728.
Windows Server 2003, Windows XP, Windows 2000, Windows NT 4.0, and Windows Me/98/95: This property is not available.
I am on Windows XP.
Thanks
|
|
|
|
|
You can try using Win32_PhysicalMedia WMI class.
According to MSDN[^] it supports XP. Also there is no restriction documented on the OS for retrieving Serial number using Win32_PhysicalMedia.
|
|
|
|
|
I tried Win32_PhysicalMedia , I do not know why I only got \\.\PHYSICALDRIVE0 ,
and almost all of the detailed infomation is NULL(such as "Name").
while I could get detailed infomation with Win32_CDROMDrive.
Thanks anyway
|
|
|
|
|
You'll need to issue IOCTL_READ_TOC_EXT[^], with parameter CDROM_READ_TOC_EX_FORMAT_CDTEXT. Your serial number will then be in CDROM_CD_TEXT_PACK_DISC_ID, or CDROM_CD_TEXT_PACK_UPC_EAN, can't remember which one . Note that this is for commercial music cds. (and it doesn't work for all).
There is also a bar code encoded in the innermost ring of CD's and DVD (flip one over, and take a close look at the inner ring, you'll see a huge barcode). This one is returned by http://msdn.microsoft.com/en-us/library/aa394346(VS.85).aspx[^] Serial Number (this works even for R/W devices, and it's how windows differentiates between CDs or DVDS used for writing.
So you'll have to decide which one you want. The first one is mostly used for commercial cdroms, and is encoded in the subtext layer on recent cdroms. You'll need a drive that can read subtext, most of them do nowadays.
The other one exists on all cd's/DVD's, again the drive must be capable of reading it. Recent ones all do.
modified on Monday, April 26, 2010 6:05 AM
|
|
|
|
|
Nice !
I will test it !
Thanks a lot!
|
|
|
|
|
How to write Selp Extractor programatically without using any third party tool using vc++.
|
|
|
|
|
Coding.
You need to write an executable that expands the previous compressed, data embedded in the executable itsef (so, I guess, you have to write the code implementing a compression/decompression algorithm).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
windows doesnt provide any API for this?
|
|
|
|
|
Yes, but I don't know if the Delta Compression API [^] fits your needs. Have also a look at RtlCompressBuffer [^], RtlDecompressBuffer [^] functions.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
bharathkumarreddys wrote: without using any third party tool
Why such a restriction ? There are some great free tools which do exactly what you want. Why do you want to rewrite it yourself ?
|
|
|
|
|
Because the professor said he couldn't most probably.
The wonderful thing about the Darwin Awards is that everyone wins, especially the members of the audience.
|
|
|
|
|
|
Hi,
I have an application in which i am using a video for replay. Now when i use the print screen button i have to auto save this frame into a folder with some default name. Please give me some leads.
|
|
|
|
|
How do you play the video? If you are using DirectShow then you can add a samplegrabber filter to the filter graph to grab frames from the stream as bitmaps, you can then use GDI+ or somesuch to save the bitmaps as JPEG to wherever you wish. Am not sure if you are able to "overdefine" the Print-Screen button but i would try to define a hotkey for it in my application.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Sometimes you just have to hate coding to do it well. <
|
|
|
|
|
Hi,
how to convert from _bstr_t to std::string data type?
Thanx
|
|
|
|
|
Use _bstr_t 's char* extraction operator:
_bstr_t bStr(L"Hello");
std::string str((char*)bStr);
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
CodeProject MVP for 2010 - who'd'a thunk it!
|
|
|
|
|
yes.Thanx
|
|
|
|
|
Stuart Dootson wrote: Use _bstr_t's char* extraction operator:
Haven't used _bstr_t at all, but from the documentation I would say the extraction operator merely gives a pointer to the internal data buffer. That's most probably not what he needs. He should convert the UTF-16 encoded _bstr_t string to some multibyte encoding first to store it to std::string .
|
|
|
|