根据文件句柄,获取文件名

【0356】Postgres内核 XLOG读取之 打开一个 logfile segment ( 3 - 1 ) 本文是作为的下半篇内容。主要上一篇构建的 List 表中循环遍历解析出 TimeLineHistoryEntry 变量。然后根据 tli、begin 成员作进一步的分析处理。主要内容如下:(1) List 表解析 TimeLineHistoryEntry 实体(2) 根据List解析的TimeLineHistoryEntry 中 成员 tli、begin 作进一步的分析处理。(3) 打开 logfile segment ,获取文件描述符 fd。 阅读详情
include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <string.h>
#include <psapi.h>

#define BUFSIZE 512

BOOL GetFileNameFromHandle(HANDLE hFile) 
{
  BOOL bSuccess = FALSE;
  TCHAR pszFilename[MAX_PATH+1];
  HANDLE hFileMap;

  // Get the file size.
  DWORD dwFileSizeHi = 0;
  DWORD dwFileSizeLo = GetFileSize(hFile, &dwFileSizeHi); 

  if( dwFileSizeLo == 0 && dwFileSizeHi == 0 )
  {
     printf("Cannot map a file with a length of zero./n");
     return FALSE;
  }

  // Create a file mapping object.
  hFileMap = CreateFileMapping(hFile, 
                    NULL, 
                    PAGE_READONLY,
                    0, 
                    1,
                    NULL);

  if (hFileMap) 
  {
    // Create a file mapping to get the file name.
    void* pMem = MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 1);

    if (pMem) 
    {
      if (GetMappedFileName (GetCurrentProcess(), 
                             pMem, 
                             pszFilename,
                             MAX_PATH)) 
      {

        // Translate path with device name to drive letters.
        TCHAR szTemp[BUFSIZE];
        szTemp[0] = '/0';

        if (GetLogicalDriveStrings(BUFSIZE-1, szTemp)) 
        {
          TCHAR szName[MAX_PATH];
          TCHAR szDrive[3] = TEXT(" :");
          BOOL bFound = FALSE;
          TCHAR* p = szTemp;

          do 
          {
            // Copy the drive letter to the template string
            *szDrive = *p;

            // Look up each device name
            if (QueryDosDevice(szDrive, szName, BUFSIZE))
            {
              UINT uNameLen = _tcslen(szName);

              if (uNameLen < MAX_PATH) 
              {
                bFound = _tcsnicmp(pszFilename, szName, 
                    uNameLen) == 0;

                if (bFound) 
                {
                  // Reconstruct pszFilename using szTemp
                  // Replace device path with DOS path
                  TCHAR szTempFile[MAX_PATH];
                  _stprintf(szTempFile,
                            TEXT("%s%s"),
                            szDrive,
                            pszFilename+uNameLen);
                  _tcsncpy(pszFilename, szTempFile, MAX_PATH);
                }
              }
            }

            // Go to the next NULL character.
            while (*p++);
          } while (!bFound && *p); // end of string
        }
      }
      bSuccess = TRUE;
      UnmapViewOfFile(pMem);
    } 

    CloseHandle(hFileMap);
  }
  printf("File name is %s/n", pszFilename);
  return(bSuccess);
}

取句柄对应全路径文件名.rar 立即下载

相关推荐

RAGFlow核心引擎DeepDoc之PDF解析大起底

本文深入解析RAGFlow中的deepdoc模块,重点介绍了pdf文档解析器的实现细节。deepdoc包含parser(文档解析器)和vision(视觉处理)两大核心功能,其中pdf解析是最复杂的部分。文章详细剖析了PdfParser类的设计架构,包含PlainParser(基础文本提取)、RAGFlowPdfParser(核心处理流水线)和VisionParser(视觉扩展)三个类,它们通过统一的__call__方法返回标准化结果。还具体讲解了初始化过程如何加载OCR引擎、布局识别模型、表格结构识别器等关

yxkong的专栏 2023

通过文件句柄取得到文件名(三)

从文件句柄获得文件名方法(三), 这次是用wdk函数ZwQueryInformationFile(),和GetVolumeInformation()。通过判断取得的dwVolumeSerialNumber来确定盘符。其他的内核函数比如说ObDereferenceObject()也可以。参考了Adlys blog 的 通过文件句柄得到文件所在路径的一种新方法 —— 得到完整路径名

Coder in Tokyo 5576

ABB机器人C#二次开发实战:从通信打通到数据读写的落地指南(附完整工程)

最近在做自动化产线升级项目时,遇到一个核心需求:用C#上位机实时读取ABB机器人的关节角度、IO信号,同时下发运动指令和参数配置。翻遍全网,要么是Robot Studio的基础操作教程,要么是C++/VC++的老旧案例,C#相关的实操内容要么只给片段代码,要么跳过通信配置、权限设置等关键步骤,导致刚上手时踩了无数坑——连接超时、数据读不到、写入无响应,甚至误触发机器人安全保护。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1391

由句柄得到文件名

在N多情况下我们得到了一个被打开文件的句柄,但并不知道是哪个文件被打开,下面这段代码可能给你很多帮助,可以实现从文件Handle到文件名的转换,需要注意的是得到的文件名是UNICODE编码格式的。void GetFileNameByHandle(HANDLE hFile, wchar_t *szFileName){ typedef NTSTATUS (WINAPI *PROCNTQIF)(HA

haungrui的专栏,水底深呼吸 2380

国产信创麒麟操作系统 (kylin v10 x86架构) 离线安装nginx步骤(亲测,超详细步骤)、修改nginx配置文件、启动、重启、关闭nginx记录(亲测有效)

国产信创麒麟操作系统 (kylin v10 x86架构) 离线安装nginx步骤(亲测,超详细步骤)、修改nginx配置文件、启动、重启、关闭nginx记录(亲测有效)

qq445829096的博客 2760

瑞萨 RL78 开发环境实战:从 CS+ for CC 到 e² studio 高效开发

本文详细介绍了瑞萨RL78单片机开发环境的选择与配置,对比分析了CS+ for CC和e² studio的特点及适用场景。内容涵盖环境安装、工程创建、调试技巧、外设驱动开发和低功耗设计等实战经验,为开发者提供全面的RL78入门指南,帮助快速上手并高效开发。

4k5l6j7h8的博客 242

通过文件句柄取得到文件名

用的是wdk函数ZwQueryObject()。LPWSTR GetFileNameFromHandleW(HANDLE hFile, LPWSTR lpFilePath) { const int ObjectNameInformation = 1; // enum OBJECT_INFORMATION_CLASS; typedef LONG (CALLBACK* ZWQ

Coder in Tokyo 7105

13、基于RBF的自适应鲁棒控制与反步控制方法及实现

本文介绍了基于RBF神经网络的自适应鲁棒控制与反步控制方法,详细阐述了控制系统的程序结构、核心算法及实现流程。通过Simulink搭建仿真系统,利用RBF网络逼近系统中的不确定非线性函数,并结合Lyapunov稳定性理论设计控制律,实现了对倒立摆等复杂非线性系统的高精度跟踪控制。文章还提供了完整的MATLAB/Simulink代码示例和仿真结果分析,验证了该方法的有效性与鲁棒性,为实际工程应用提供了可行的技术路径。

ol789012的博客 87

通过文件句柄取得到文件名(二)

从文件句柄获得文件名方法二, 这个是用GetMappedFileName()函数,局限是只能取得可以文件映射(File Mapping)的文件句柄。参考 MSDN Obtaining a File Name From a File Handle.前一篇通过文件句柄取得到文件名 // reference to "Obtaining a File Name From a File Ha

Coder in Tokyo 3175

【单点登录】SSO单点登录sa-token接入流程详解

Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。

Hello, New World! 1788

14、多级快速多极子算法(MLFMA)详解

多级快速多极子算法(MLFMA)是一种高效加速矩阵向量乘法(MVM)的数值方法,广泛应用于电磁场积分方程求解中。该算法通过构建多级树结构,将MVM分解为近场直接计算和远场分组计算两部分,利用递归聚类、聚合-平移-分解三阶段处理远场相互作用,并结合采样、模式计算与优化策略,将计算复杂度从O(N^2)降低至O(N log N)。博文详细阐述了MLFMA的核心步骤、数学推导、计算复杂度及实际应用中的优化技术,如伽辽金方案改进、对称性利用和反插值方法,为大规模电磁问题的高效求解提供了系统性指导。

t8u9v0w1x的博客 241

经典win32代码之从文件句柄获得文件名

#include #include #include #include #include #define BUFSIZE 512BOOL GetFileNameFromHandle(HANDLE hFile) {  BOOL bSuccess = FALSE;  TCHAR pszFilename[MAX_PATH+1];  // Get the file size.  DWORD dwFileS

梵婀玲之梦 4370

KCP(快速可靠UDP)——用带宽换延迟的极致艺术

想象你是一个外卖平台的调度员。这就是KCP的本质——

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 202

根据文件句柄,获取文件名(转载)

#include #include #include #include #include #define BUFSIZE 512BOOL GetFileNameFromHandle(HANDLE hFile) {  BOOL bSuccess = FALSE;  TCHAR pszFilename[MAX_PATH+1];  HANDLE hFileMap;  // Get the file si

bodybo的专栏 6942

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

linux根据句柄获取文件名,linux:通过procfs确定文件句柄标识

我正在尝试确定是否可以使用procfs中的元数据来区分同一文件上的两个单独句柄,以及指向它的两个文件描述符的单个句柄.案例1:两个文件句柄# setupexec 3>test.lckexec 4>test.lck# usageflock -x 3 # this grabs an exclusive lockflock -s 4 # this blocksecho "This cod...

weixin_35037351的博客 412

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

转:VC:如何根据文件名来获取程序进程和窗口句柄的代码(转载)

因为下面为博客主人原创,代码部分类型不清楚,可查查MSDN. 根据系统进程中的模块名和运行文件名称的匹配来查找程序进程的代码如下(因为窗口类和窗口名都在变化,所以只能如此了)。 //做系统进程快照 Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //找第一个进程 f = Process32First(...

weixin_30835933的博客 246

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

c# 根据坐标获取该位置上的PID及进程信息(进程名,路径,版本号等)

用到的两个win api。

u012932582的博客 1328

c 语言 批量修改文件名,C++批量修改文件名, 大佬勿喷

[C++] 纯文本查看 复制代码/*** 枚举文件夹下所有文件并将之重命名* @param char* rootDir 文件目录* @param char* searchName 通配符* @param char* extName 文件后缀* @param int cntFileNo 当前编号*/int setFileNameBySearch(char* rootDir, char* search...

weixin_31584817的博客 825

休眠与开机自动运行等VC代码

//根据文件句柄,获取文件名 #include <windows.h> #include <stdio.h> #include <tchar.h> #include <string.h> #include <psapi.h> #define BUFSIZE 512 ...

aaa407217484的博客 130

FindFirstFile FindNextFile 以及_WIN32_FIND_DATA结构

首先需要介绍陌生的东西: _WIN32_FIND_DATA 作用: 关于文件的全部属性信息。总计有以下以下9种:文件的标题名、文件的属性(只读、存档,隐藏等)、文件的创建时间、文件的最后访问时间、文件的最后修改时间、文件大小的高位双字、文件大小的低位双字、保留、保留。在这里只有文件标题名和文件的长度可以通过CFile类比较方便的获得,而对于其他几种属性的获取和设置就无能为力了。 在用findfirst()和findnext()函数去查找磁盘文件时经常使用的一个数据结构WIN32_FIND_DATA的成员变量

寻梦&之璐 2415

org.springframework.core.io.Resource接口源码分析

该接口继承了InputStreamSource接口 boolean exists(); 返回该资源是否存在 boolean isReadable(); 返回该资源是否是可读资源 boolean isOpen(); 返回这个资源是否是一个开放流的句柄 URL getURL() throws IOException; 返回资源的URL,如果该资源URL无法解析,抛出IOEx

从零开始的博客 4270

显示加载dll

显示加载dll HMODULE LoadLibrary(LPCTSTR lpFileName); lpLibFileName 指定要载入的动态链接库的名称 返回HMODULE,成功则返回库(即dll)模块的句柄,零表示失败,HMODULE和 HINSTANCE一样 注:这个函数也可以加载可执行模块exe文件,用以访问对话框、位图、图标资源 FARPROC GetProcAddress(HM

Wang Bei的博客 801

根据文件句柄获得文件名

今天心血来潮,在MSDN中看到了一篇Obtain file name from Handle的文章,貌似是这么个标题,看到文章中用到了一个很重要的函数 GetMappedFileName,缺点就是只能获得自己进程打开的文件,其它进程打开的文件貌似不行。 基本思路就是根据HANDLE 创建映射文件,调用GetMappedFileName获得一个DosDevice路径,然后GetLogi...

aapow22288的专栏 1018

根据窗体句柄获得应用程序的文件名

UINT GetWindowModuleFileName(          HWND hwnd,    LPTSTR lpszFileName,    UINT cchFileNameMax);参数:hwnd [in] Handle to the window whose module file name will be retrieved. lpszFileName [out]

Leon's Blog——Study Notes 1699

Linux0.11内核源码解析-fcntl.c/iotcl.c/stat.c

dup返回当前值最小的未用句柄,dup2返回指定新句柄的数值,句柄的复制操作主要用在文件的标准输入、输出重定向和管道方面。fcntl.c实现了文件控制系统调用fcntl和两个文件句柄描述符的复制系统调用dup()和dup2()。复制文件句柄,参数fd是要复制的文件句柄,arg是新文件句柄的最小数值,返回值是新文件句柄或者错误码。系统调用用于对打开文件描述符进行操作和控制,通过传递不同的命令()是否有效,即必须小于已打开文件描述符的最大数目(),并且与当前进程的文件描述符表中的相应条目()来实现不同的操作。

weixin_38452632的博客 590
上一篇: TAB中加入子窗口
下一篇: 程序热键的实现
goingup
博客等级 码龄22年 52粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值