用到的数据成员定义。
protected:
BOOL InitVxd();
HANDLE m_hVxd;
WORD m_wSeri[256];
CString m_strSeri;
初始化VXD并获得序列号的代码。
BOOL CIDEDemoDlg::InitVxd()
{
char szNewPath[MAX_PATH],szOldPath[MAX_PATH];
::GetCurrentDirectory(MAX_PATH, szOldPath);
::GetModuleFileName(::AfxGetInstanceHandle(), szNewPath, MAX_PATH);
char *p=strrchr(szNewPath,'\\');
*p=0;
::SetCurrentDirectory(szNewPath);

m_hVxd=CreateFile("\\\\.\\MyDevice.vxd", 0, 0, 0, 
CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0);

if(m_hVxd==INVALID_HANDLE_VALUE){
AfxMessageBox("vxd文件打开失败");
//DWORD errorm=GetLastError();
// char temp[100];
// FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, errorm, 0, temp, 100, NULL);
// AfxMessageBox(temp);
return FALSE;
}

DWORD dwReturn;
::DeviceIoControl(m_hVxd,DIOC_GETSERI,NULL,NULL,m_wSeri,sizeof(m_wSeri),&dwReturn,NULL);
CString strTemp;
m_strSeri.Empty();
for(int i=0;i<10;i++)
{
strTemp.Format("%04X ",m_wSeri[i]);
m_strSeri +=strTemp;
}
m_ide.SetWindowText(m_strSeri);
}
主窗关闭时释放VXD资源的代码void CIDEDemoDlg::OnDestroy() 
{
CDialog::OnDestroy();

// TODO: Add your message handler code here
if(m_hVxd==INVALID_HANDLE_VALUE)
  CloseHandle(m_hVxd);
}