获取字符串后缀_怎样显示文件类型扩展名[通俗易懂]

获取字符串后缀_怎样显示文件类型扩展名[通俗易懂]在项目中遇到要获取文件的扩展名与文件名,无奈FltGetFileNameInformation得到的是文件的全路径信息,当然这个结构里面也可以获取文件扩展名,但有时好像不起作用(测试过),所以就自己写了个函数来处理这个

获取字符串后缀_怎样显示文件类型扩展名[通俗易懂]"

在项目中遇到要获取文件的扩展名与文件名,无奈FltGetFileNameInformation 得到的是文件的全路径信息,当然这个结构里面也可以获取文件扩展名,但有时好像不起作用(测试过),所以就自己写了个函数来处理这个字符串

字符串:\\Device\\HarddiskVolume2\\Windows\\explorer.exe

获取扩展名


  //获取文件全路径的扩展名,没有扩展名就为空
  VOID  KuoZhan(WCHAR wch[],WCHAR cch[])
  {
	  int j = 0;
	  int flag = 0;
	  for(int i = wcslen(wch)-1;i>=0;i--)
	  {    
		 if (wch[i] == '\\')
		 {
			 break;
		 }
		  
		 else if(wch[i]!='.')
		  { 
			  cch[j] = wch[i];
			  j++;
		  }else
		  { 
			  flag = 1;
			  break; 
		  }
	  }

	  if(flag == 0)
	  {
		  cch[0] = '\0';
	  }

	  for(int i = 0,j=wcslen(cch)-1; i<j; i++,j--)
	  {
		  WCHAR tmp;
		  tmp = cch[i];
		  cch[i] = cch[j];
		  cch[j] = tmp;
	  }
	  return ;
  }

以下是调用

WCHAR   CchStyle[260] ={0};
KuoZhan(nameInfo->Name.Buffer,CchStyle);  //nameInfo 是minifilter中解析出来的文件全路径信息

//以下是将获取到的扩展名转为UNICODE_STRING
UNICODE_STRING TEMP ;
RtlInitUnicodeString(&TEMP,CchStyle);

获取文件名

//从进程全路径中获取进程名
  VOID  GetProcessNameFromFullPath(wchar_t wch[],wchar_t cch[])
  {
    int j = 0;
    for(int i = wcslen(wch)-1;i>=0;i--)
    {    
      if (wch[i] == '\\')
      {
        break;
      }
      cch[j] = wch[i];
      j++;
    }

    for(int i = 0,j=wcslen(cch)-1; i<j; i++,j--)
    {
      wchar_t tmp;
      tmp = cch[i];
      cch[i] = cch[j];
      cch[j] = tmp;
    }
    cch[j+1] = '\0'; 
    return ;
  }

以下是调用


      WCHAR   tmpProcessName[260] ={0};
      GetProcessNameFromFullPath(fullPath.Buffer,tmpProcessName);
      UNICODE_STRING pName ;
      RtlInitUnicodeString(&pName,tmpProcessName);
      KdPrint(("pName = %wZ\n",&pName));

 

 

 

今天的文章获取字符串后缀_怎样显示文件类型扩展名[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86050.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注