设为首页收藏本站

中国膜结构网

 找回密码
 立即注册
膜结构车棚
膜结构车棚膜结构资质国产膜材 膜结构网中国膜结构协会
查看: 75|回复: 0

实现磁盘驱动器相关(序列号等)信息返回给LISP使用

[复制链接]
  • TA的每日心情
    开心
    2021-3-9 08:49
  • 签到天数: 1442 天

    连续签到: 21 天

    [LV.10]以坛为家III

    发表于 2021-1-17 20:40 | 显示全部楼层 |阅读模式
    http://www.mjgw.org/ 专业从事膜结构设计、制作加工、施工安装的膜结构咨询服务,能够为客户提供专业的膜结构整体解决方案。做中国最好的膜结构综合服务平台。欢迎大家联系QQ:463017170.
    1. #include "StdAfx.h"
    2. #include "VolumeManagement.h"

    3. #pragma region //DriveTypeFlags

    4. struct // DriveType
    5. {
    6.   UINT type;                        // return code from GetDriveType
    7.   LPCTSTR name;                // ascii name
    8. }

    9. DriveTypeFlags [] =
    10. {
    11.   { DRIVE_UNKNOWN,     _T("Unknown") },
    12.   { DRIVE_NO_ROOT_DIR, _T("Invalid path") },
    13.   { DRIVE_REMOVABLE,   _T("Removable") },
    14.   { DRIVE_FIXED,       _T("Fixed") },
    15.   { DRIVE_REMOTE,      _T("Network drive") },
    16.   { DRIVE_CDROM,       _T("CD-ROM") },
    17.   { DRIVE_RAMDISK,     _T("RAM disk") },
    18.   { 0, NULL}
    19. };

    20. #pragma endregion

    21. #pragma region //driveserialno
    22. //(crpdriveserialno "c")
    23. int DriveSerialNo(void)
    24. {
    25.   //Declare string variables
    26.   CString str;
    27.   struct resbuf *pArgs =acedGetArgs ();

    28.   if(pArgs == NULL)
    29.     str = _T("C");
    30.   else
    31.   {
    32.     if(pArgs->restype == RTSTR)
    33.       str = pArgs->resval.rstring;
    34.     else
    35.       str = _T("C");
    36.   }
    37.   str.Truncate(1);
    38.   str = str + _T(":\\");
    39.   DWORD VolumeSerialNumber = 0;
    40.   GetVolumeInformation(str, NULL, 0, (DWORD *)&VolumeSerialNumber, NULL, NULL, NULL, 0 );
    41.   if (VolumeSerialNumber != 0)
    42.   {
    43.     TCHAR Result[10] = {0};
    44.     _sntprintf(Result , sizeof(TCHAR)*10 , _T("%X") , VolumeSerialNumber );
    45.     acedRetStr(Result);
    46.   }
    47.   else
    48.     acedRetNil();

    49.   return (RSRSLT) ;
    50. }
    51. #pragma endregion

    52. #pragma region //filesystem
    53. //(crpfilesystem "c")
    54. int FileSystem(void)
    55. {
    56.   CString str;
    57.   struct resbuf *pArgs =acedGetArgs () ;
    58.   //get the resbuf from lisp, test validity
    59.   if(pArgs == NULL)
    60.     str = _T("C");
    61.   else
    62.   {
    63.     if(pArgs->restype == RTSTR)
    64.       str = pArgs->resval.rstring;
    65.     else
    66.       str = _T("C");
    67.   }
    68.   str.Truncate(1);
    69.   str = str + _T(":\\");
    70.   TCHAR FileSystem[MAX_PATH] = {0};
    71.   GetVolumeInformation(str, NULL, 0, NULL, NULL, NULL, FileSystem, sizeof(TCHAR)*MAX_PATH);
    72.   if (_tcsclen(FileSystem) != NULL)
    73.     acedRetStr(FileSystem);
    74.   else
    75.     acedRetNil();
    76.   return (RSRSLT) ;
    77. }
    78. #pragma endregion

    79. #pragma region //drivetype
    80. //(crpdrivetype "c")
    81. int DriveType(void)
    82. {

    83.   //
    84.   CString str;
    85.   CString DriveType;

    86.   //
    87.   struct resbuf *rb = NULL;

    88.   //
    89.   struct resbuf *pArgs =acedGetArgs () ;
    90.   if(pArgs == NULL)
    91.     str = _T("C");
    92.   else
    93.   {
    94.     if(pArgs->restype == RTSTR)
    95.       str = pArgs->resval.rstring;
    96.     else
    97.       str = _T("C");
    98.   };
    99.   //
    100.   str.Truncate(1);
    101.   str += _T(":\\");
    102.   UINT uDriveType = GetDriveType(str);

    103.   for (int i=0; DriveTypeFlags<i>.name; i++)
    104.   {
    105.     if (uDriveType == DriveTypeFlags<i>.type)
    106.     {
    107.       DriveType = DriveTypeFlags<i>.name;
    108.       break;
    109.     }
    110.   }

    111.   //
    112.   if (!DriveType.IsEmpty())
    113.     acedRetStr(DriveType);
    114.   else
    115.     acedRetNil();
    116.   return (RSRSLT) ;
    117. }
    118. #pragma endregion

    119. #pragma region //drives
    120. //(crpdrives)
    121. int Drives(void)
    122. {
    123.   struct resbuf* pRbRet = acutNewRb(RTT);
    124.   struct resbuf* pRbTail;
    125.   pRbTail = pRbRet;

    126.   TCHAR szBuffer[1024] = {0};
    127.   GetLogicalDriveStrings(1024, szBuffer);
    128.   TCHAR *drv = szBuffer;
    129.   while (*drv)
    130.   {
    131.     pRbTail = pRbTail->rbnext = acutBuildList(RTSTR,drv,RTNONE);
    132.     drv = &drv[_tcslen(drv) + 1];
    133.   }
    134.   acedRetList(pRbRet->rbnext);
    135.   acutRelRb(pRbRet);

    136.   return (RSRSLT) ;
    137. }
    138. #pragma endregion
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    推荐膜材品牌上一条 /5 下一条

    进口膜材 国产膜材 pvdf膜材ptfe膜材ETFE膜材
    最好的膜结构公司 一级膜结构资质 膜结构一级资质
    膜结构设计-膜结构十大品牌-etfe设计-充气膜结构
    诺科膜结构
    遨都膜结构设计
    中国膜结构网
    中国空间膜结构协会

    QQ|申请友链|Archiver|手机版|中国膜结构论坛

    GMT+8, 2021-3-9 11:48 , Processed in 0.278234 second(s), 23 queries .

    Powered by 中国膜结构网->膜材采购->膜结构设计->膜结构安装->膜结构维修

    © 2014-2020 膜结构协会->进口膜材->国产膜材->PVDF膜材->PTFE膜材->ETFE膜材.

    快速回复 返回顶部 返回列表