【Windows API】獲取卷標、卷名

?1、卷->卷標

使用FindFirstVolume()和FindNextVolume()函數體系,枚舉系統所有卷(Volume)的例子,然后獲取卷標、卷類型。這個方式可以枚舉出沒有驅動器號(卷標)的卷。

int TestMode1()
{HANDLE hVolume = INVALID_HANDLE_VALUE;TCHAR tszVolumeName[MAX_PATH] = {0};TCHAR tszVolumePath[MAX_PATH] = {0};BOOL bRet;DWORD dwError;DWORD dwCount;UINT nDriveType;//1、獲取卷名稱hVolume = FindFirstVolume(tszVolumeName, ARRAYSIZE(tszVolumeName));if (hVolume == INVALID_HANDLE_VALUE){wprintf(_T("FindFirstVolume() failed, error code = %d"), GetLastError());return -1;}while (1){//2、獲取卷路徑dwCount = ARRAYSIZE(tszVolumePath);bRet = GetVolumePathNamesForVolumeName(tszVolumeName, tszVolumePath, dwCount, &dwCount);if (!bRet){dwError = GetLastError();wprintf(_T("GetVolumePathNamesForVolumeName() failed, error code = %d"), dwError);getchar();return -1;}//3、獲取驅動器類型nDriveType = GetDriveType(tszVolumePath);wprintf(_T("Volume name: %s\r\n"), tszVolumeName);wprintf(_T("Volume path: %s\r\n"), tszVolumePath);wprintf(_T("Drive type: %d\r\n\r\n"), nDriveType);bRet = FindNextVolume(hVolume, tszVolumeName, ARRAYSIZE(tszVolumeName));if (!bRet){dwError = GetLastError();if (dwError != ERROR_NO_MORE_FILES){wprintf(_T("FindNextVolume() failed, error code = %d"), dwError);return -1;}break;}}wprintf(_T("Test 2 end!\r\n\r\n"));//getchar();return 0;
}

輸入

?

2、卷標->卷名

通過卷標(驅動器號)獲取卷名,需要使用GetVolumeNameForVolumeMountPoint()函數。

int TestMode2()
{TCHAR tszLogicDriveStrings[1024] = {0};LPCTSTR szDrive = NULL;TCHAR tszVolumeName[MAX_PATH];GetLogicalDriveStrings(sizeof(tszLogicDriveStrings) / sizeof(TCHAR) - 1, tszLogicDriveStrings);szDrive = (LPCTSTR)tszLogicDriveStrings;do{GetVolumeNameForVolumeMountPoint(szDrive, tszVolumeName, sizeof(tszVolumeName) / sizeof(TCHAR));wprintf(_T("Drive %s, Volume name: %s\r\n"), szDrive, tszVolumeName);szDrive += (lstrlen(szDrive) + 1);} while (*szDrive != _T('\x00'));wprintf(_T("\r\nTest 1 end!\r\n\r\n"));return 0;
}

輸出

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37670.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Failed to connect to bitbucket.org port 443

瀏覽器可以訪問bitbucket,但是在終端或者sourcetree上死活無法進行pull, push等操作。 Root Cause:“【翻】【墻】軟件”使用了http proxy,所以也得為git設置相同的http proxy。 所以,解決方法是: 1,查看“…

網絡系統架構演變

1.系統架構演變 隨著互聯網的發展,網站應用的規模不斷擴大。需求的激增,帶來的是技術上的壓力。系統架構也因此不斷的演進、升級、迭代。從單一應用,到垂直拆分,到分布式服務,到SOA,以及現在火熱的微服務架…

【Django】無法從“django.utils.encoding”導入名稱“force_text”

整晚處理 Django 的導入錯誤。 我將把它作為提醒,希望處于相同情況的人數會減少。 原因 某些軟件包版本不支持Django 4 請看下表并決定Django和Python的版本 方案 如果出現難以響應,或者更改環境麻煩,請嘗試以下操作 例如出現以下錯誤 …

云計算的發展前景怎么樣

云計算是當前科技領域中最受關注的領域之一,它的出現改變了傳統的計算模式,使得企業和個人能夠更加便捷地訪問和使用計算資源。隨著云計算技術的不斷發展,它的前景也變得更加光明。 以下是云計算的發展前景: 云計算的市場份額將繼續增長:根據市場研究機構的報告,云計算的市場份…

vfuhyuuy

Sublime Text is an awesome text editor. If you’ve never heard of it, you shouldcheck it out right now. I’ve made this tutorial because there’s no installer for the Linux versions of Sublime Text. While that’s not a real problem, I feel there is a clean…

通過版本號控制強制刷新瀏覽器或清空瀏覽器緩存

背景介紹 在我們做 web 項目時,經常會遇到一個問題就是,需要 通知業務人員(系統用戶)刷新瀏覽器或者清空瀏覽器 cookie 緩存的情況。 而對于用戶而言,很多人一方面不懂如何操作,另一方面由于執行力問題&am…

Android descendantFocusability 屬性

view 焦點問題處理 作用 通過該屬性可以指定viewGroup和其子View到底誰獲取焦點, 直接在viewGroup上使用就行。 屬性值 屬性值含義beforeDescendantsviewgroup會優先其子類控件而獲取到焦點afterDescendantsviewgroup只有當其子類控件不需要獲取焦點時才獲取焦點…

MFC創建和使用OCX控件

文章目錄 MFC建立OCX控件注冊OCX控件與反注冊使用Internet Explorer測試ocx控件OCX控件添加方法OCX控件添加事件Web使用OCX控件MFC使用OCX控件使用OCX控件調用ocx的功能函數對ocx的事件響應OCX控件調試工具tstcon32.exe加載ocx控件使用tstcon32.exe調試ocxMFC建立OCX控件 新建…

【ChatGPT 指令大全】怎么使用ChatGPT來輔助知識學習

目錄 概念解說 簡易教學 深度教學 教學與測驗 解釋一個主題的背后原理 總結 在當今信息時代,互聯網的快速發展為我們獲取知識提供了前所未有的便利。而其中,人工智能技術的應用也為我們的學習和交流帶來了新的可能性。作為一種基于自然語言處理的人…

ORA-01704: string literal too long

這是在做數據遷移的時候,將mysql庫中的數據整理成Oracle腳本,接著在客戶端運行sql腳本插入數據時碰到的問題。明顯就是文本太長了導致的報錯,但是實際上設置的字段是可以支持這么長的文本數據的。 解決方案 直接寫程序導出導入數據&#xff0…

Postgresql 基礎使用語法

1.數據類型 1.數字類型 類型 長度 說明 范圍 與其他db比較 Smallint 2字節 小范圍整數類型 32768到32767 integer 4字節 整數類型 2147483648到2147483647 bigint 8字節 大范圍整數類型 -9233203685477808到9223203685477807 decimal 可變 用戶指定 精度小…

rust學習-tokio::time

示例 use std::time::Duration; use tokio::{task, time::interval};#[tokio::main] async fn main() {let mut interval interval(Duration::from_secs(1));let handle task::spawn(async move {loop {interval.tick().await;println!("tick");}});handle.await.…

【大數據】一些基本概念

一、數據庫、數據倉庫、數據湖 1.什么是數據庫 (Database, DB) 數據庫是指長期儲存在計算機中的有組織的, 可共享的數據集合 就是存儲數據的倉庫 數據庫有三個特點: 永久存儲, 有組織, 可共享 數據庫是一種結構化數據存儲技術,用于存儲和管理有組織的數據。數據庫…

微信小程序云開發快速入門(2/4)

前言 我們對《微信小程序云開發快速入門(1/4)》的知識進行回顧一下。在上章節我們知道了云開發的優勢以及能力,并且我們還完成了碼仔備忘錄的本地版到網絡版的改造,主要學習了云數據庫同時還通過在小程序使用云API直接操作了云數…

SciencePub學術| 智能計量類重點SCIE征稿中

SciencePub學術 刊源推薦: 智能計量類重點SCIE征稿中!信息如下,錄滿為止: 一、期刊概況: 智能計量類重點SCIE 【期刊簡介】IF:2.0-2.5,JCR3區,中科院4區; 【版面類型】正刊&#…

new BigDecimal(double val)注意事項 / JWT解析BigDecimal類型數據

前言: 公司項目中有一個板塊需要解析JWT令牌獲取載荷里面封裝的數據,遇到要解析一個BigDecimal類型的數據 問題發現過程: 正常來說,我們解析一個JWT令牌的步驟如下: public static Claims getDataFromToken(String tok…

極狐GitLab 企業級 CI/CD 規模化落地實踐指南(一)

目錄 template 引用,減少代碼冗余,增強 CI/CD 構建擴展性 問題 1:代碼冗余,低效實踐 問題 2:維護性難,工作量大 ? local ? file ? remote ? template 收益 1:一處修改,多…

TIOBE2023年8月榜單發布,Python超越老將C/C++蟬聯冠軍

TIOBE 編程社區指數是一個衡量編程語言受歡迎程度的指標,評判的依據來自世界范圍內的工程師、課程、供應商及搜索引擎,TIOBE 官網近日公布了 2023 年 8 月的編程語言排行榜。 此次的榜單中,Python依舊穩居第一,占比達到了13.33%。…

jpg圖片太大怎么壓縮?這樣做輕松壓縮圖片

圖片太大會給存儲、分享帶來麻煩,但其實現在壓縮圖片大小也不是什么難事,下面就給大家分享幾個一直用的圖片壓縮方法,包含批量壓縮、在線壓縮、免費壓縮等多種方式,大家按需自取哈~ 方法一:嗨格式壓縮大師 這是一個可…

Kotlin Executors線程池newSingleThreadExecutor單線程

Kotlin Executors線程池newSingleThreadExecutor單線程 import java.util.concurrent.Executorsfun main() {val mExecutorService Executors.newSingleThreadExecutor()for (i in 1..5) {mExecutorService.execute {println("seq-$i tid:${Thread.currentThread().threa…