
वॉल्यूम नाम प्राप्त करने के लिए GoLang में GetVolumeInformation फ़ंक्शन का उपयोग कैसे करें
विंडोज सिस्टम के साथ काम करते समय, डेवलपर्स को अक्सर ऑपरेटिंग सिस्टम की फाइल सिस्टम के साथ इंटरैक्ट करने की आवश्यकता महसूस होती है और भंडारण मात्रा के बारे में जानकारी पुनः प्राप्त करें। इस उद्देश्य के लिए एक आवश्यक फ़ंक्शन GetVolumeInformation है, जो एक निर्दिष्ट डिस्क वॉल्यूम के बारे में विवरण प्रदान करता है। ]
GoLang में GetVolumeInformation का उपयोग करना
GetVolumeInformation फ़ंक्शन का उपयोग करके वॉल्यूम नाम पुनर्प्राप्त करने के लिए, हमें निम्नलिखित चरणों का पालन करना होगा:
Kernel32 लाइब्रेरी लोड करना:
सबसे पहले, हमें "kernel32.dll" लाइब्रेरी को लोड करना होगा, जिसमें GetVolumeInformation फ़ंक्शन मौजूद है।- फ़ंक्शन पॉइंटर प्राप्त करना:
कर्नेल32 लाइब्रेरी के भीतर, हम फ़ंक्शन पॉइंटर को पुनः प्राप्त करते हैं GetVolumeInformationW. यह फ़ंक्शन वाइड कैरेक्टर स्ट्रिंग्स (UTF-16) के साथ काम करता है, जो हमें यूनिकोड वर्णों को संभालने की अनुमति देता है।- इनपुट तर्क तैयार करना:
GetVolumeInformation फ़ंक्शन को कई इनपुट तर्कों की आवश्यकता होती है, जैसे रूट पथ उस वॉल्यूम का नाम जिसका हम निरीक्षण करना चाहते हैं। हम वॉल्यूम नाम, सीरियल नंबर, फ़ाइल सिस्टम नाम और अन्य मेटाडेटा प्राप्त करने के लिए बफ़र्स भी बनाते हैं। syscall.Syscall9. यह फ़ंक्शन कई तर्क लेता है और एक स्थिति कोड देता है।- परिणाम को संभालना:
यदि फ़ंक्शन निष्पादन सफल होता है, तो हम वॉल्यूम के बारे में जानकारी तक पहुंच सकते हैं, जिसमें संग्रहीत वॉल्यूम नाम भी शामिल है आवंटित बफ़र।
आयात (
"एफएमटी"
"सिस्कल"
"असुरक्षित"
)
func मुख्य() {
var lpRootPathName = "C:\\"
var lpVolumeNameBuffer = make([]uint16, syscall.MAX_PATH 1)
var nVolumeNameSize = uint32(len(lpVolumeNameBuffer))
var lpVolumeSerialNumber uint32
var lpMaximumComponentLength uint32
var lpFileSystemFlags uint32
var lpFileSystemNameBuffer = make([]uint16, 255)
var nFileSystemNameSize uint32 = syscall.MAX_PATH 1
कर्नेल32, _ := syscall.LoadLibrary("kernel32.dll")
getVolume, _ := syscall.GetProcAddress(kernel32, "GetVolumeInformationW")
var nargs uintptr = 8
ret, _, callErr := syscall.Syscall9(uintptr(getVolume),
नर्ग्स,
uintptr(असुरक्षित.पॉइंटर(syscall.StringToUTF16Ptr(lpRootPathName))),
uintptr(असुरक्षित.पॉइंटर(&lpVolumeNameBuffer[0])),
uintptr(nVolumeNameSize),
uintptr(असुरक्षित.सूचक(&lpVolumeSerialNumber)),
uintptr(असुरक्षित.सूचक(&lpMaximumComponentLength)),
uintptr(असुरक्षित.पॉइंटर(&lpFileSystemFlags)),
uintptr(असुरक्षित.पॉइंटर(&lpFileSystemNameBuffer[0])),
uintptr(nFileSystemNameSize),
0)
fmt.Println(ret, callErr, syscall.UTF16ToString(lpVolumeNameBuffer))
}- विचार
GetVolumeInformation का उपयोग करते समय याद रखने योग्य एक महत्वपूर्ण पहलू यह है कि यह विस्तृत वर्ण स्ट्रिंग्स (UTF-16) पर काम करता है। परिणामस्वरूप, हमें यह सुनिश्चित करना होगा कि फ़ंक्शन से पास की गई और वापस की गई सभी स्ट्रिंग्स UTF-16 प्रारूप में हैं। ऐसा करने में विफलता से अप्रत्याशित परिणाम हो सकते हैं।- निष्कर्ष
GetVolumeInformation फ़ंक्शन GoLang में स्टोरेज वॉल्यूम के बारे में व्यापक जानकारी प्राप्त करने का एक प्रभावी तरीका प्रदान करता है। इस आलेख में उल्लिखित चरणों का पालन करके, आप अपने एप्लिकेशन की आवश्यकताओं को पूरा करने के लिए वॉल्यूम नाम और अन्य आवश्यक विवरण सफलतापूर्वक प्राप्त कर सकते हैं।