void CGetPassWordDlg::OnBtonGetCD() { // my code start here int nDriveType; char *DriveName[10] = {"a:","b:","c:","d:","e:","f:","g:","h:","i:","j:"}; int i; char pszDriveName[20]; DWORD DriveSerial; DWORD MaximumComponentLength; DWORD FileSystemFlags; char pszFileSystemNameBuffer[30]; for(i=0;i<10 && nDriveType != DRIVE_CDROM ;i++) { nDriveType = ::GetDriveType(DriveName[i]); } ::GetVolumeInformation( DriveName[i-1], // address of root directory of the file system pszDriveName, // address of name of the volume 20, // length of lpVolumeNameBuffer &DriveSerial, // address of volume serial number &MaximumComponentLength, // address of system maximum filename length &FileSystemFlags, // address of file system flags pszFileSystemNameBuffer, // address of name of file system 30 // length of lpFileSystemNameBuffer );
{
// my code start here
int nDriveType;
char *DriveName[10] = {"a:","b:","c:","d:","e:","f:","g:","h:","i:","j:"};
int i; char pszDriveName[20];
DWORD DriveSerial;
DWORD MaximumComponentLength;
DWORD FileSystemFlags;
char pszFileSystemNameBuffer[30]; for(i=0;i<10 && nDriveType != DRIVE_CDROM ;i++)
{
nDriveType = ::GetDriveType(DriveName[i]);
}
::GetVolumeInformation(
DriveName[i-1], // address of root directory of the file system
pszDriveName, // address of name of the volume
20, // length of lpVolumeNameBuffer
&DriveSerial, // address of volume serial number
&MaximumComponentLength, // address of system maximum filename length
&FileSystemFlags, // address of file system flags
pszFileSystemNameBuffer, // address of name of file system
30 // length of lpFileSystemNameBuffer
);
UpdateData(TRUE);
if(MaximumComponentLength > 256)
{
// 光驱中没盘
}
else
{
// 有盘
}......
希望继续讨论!!!!!111111
http://expert.csdn.net/Expert/topic/1087/1087020.xml?temp=.4908563
唉,你和我一相可怜,
如果你知道答案,也请你好心告诉我。
在你的程序启动的时候,将光驱关闭,然后处理程序收到的WM_DEVICECHANGE消息
http://member.netease.com/~hxzhang/toolsocx.htm
你可以直接使用,介绍如下(转粘):
得到光驱的状态:short CDRomGetState();