关于磁盘盘符的问题

关于磁盘盘符,以下代码应该有用
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
    TCHAR szHello[MAX_LOADSTRING];
    LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

    switch (message)
    {
        case WM_DEVICECHANGE:
            Proc_WM_DEVICECHANGE(wParam,lParam);
            break;
。。。。。。。。。。。。。。。。。。。。。。
void Proc_WM_DEVICECHANGE(WPARAM wParam, LPARAM lParam)
{
    PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;


    switch(wParam)
    {
    case DBT_DEVICEARRIVAL:
        if (lpdb ->dbch_devicetype == DBT_DEVTYP_VOLUME)
         {
            PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;

            TCHAR DiskLetter[32];
            DecodeDiskLetter(lpdbv->dbcv_unitmask, DiskLetter, 32);
            _tcscat(DiskLetter, "://");

            TCHAR VolumeName[MAX_PATH] = {0};
            if(!GetVolumeNameForVolumeMountPoint(DiskLetter, VolumeName, MAX_PATH))
            {
                sprintf(VolumeName, "Err %d", GetLastError());
                MessageBox(NULL, VolumeName, "GetVolumeNameForVolumeMountPoint", MB_OK);
            }
            
            if(!DeleteVolumeMountPoint(DiskLetter))
            {
                sprintf(VolumeName, "Err %d", GetLastError());
                MessageBox(NULL, VolumeName, "DeleteVolumeMountPoint", MB_OK);
            }
            if(!SetVolumeMountPoint(_T("H://"), VolumeName))
            {
                sprintf(VolumeName, "Err %d", GetLastError());
                MessageBox(NULL, VolumeName, "SetVolumeMountPoint", MB_OK);
            }

         }
         break;
    }    
}

void DecodeDiskLetter(DWORD Mask, PTCHAR pOutBuffer, int outlen)
{
    DWORD ecx = 0;
    DWORD eax = 0;
    while(ecx < 26)
    {
        DWORD esi = 1;
        if(Mask & esi<<ecx)
        {
            *(pOutBuffer+eax) = (TCHAR)(ecx+_T('A'));
            eax++;    
        }
        
        ecx++;
    }    

    *(pOutBuffer+eax) = _T('/0');
}

另外服务中应该注册guid,以上时通过窗口接受的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值