Skip to content

Commit 9d2691f

Browse files
authored
Merge pull request #2336 from gmittert/TheVolumeOfInformation
Add Windows volume information to file system info
2 parents 6b80b41 + c09edab commit 9d2691f

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

Foundation/FileManager+Win32.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,9 @@ extension FileManager {
247247

248248
try path.withCString(encodedAs: UTF16.self) {
249249
let dwLength: DWORD = GetFullPathNameW($0, 0, nil, nil)
250+
guard dwLength != 0 else {
251+
throw _NSErrorWithWindowsError(GetLastError(), reading: true)
252+
}
250253
var szVolumePath: [WCHAR] = Array<WCHAR>(repeating: 0, count: Int(dwLength + 1))
251254

252255
guard GetVolumePathNameW($0, &szVolumePath, dwLength) else {
@@ -260,8 +263,14 @@ extension FileManager {
260263
throw _NSErrorWithWindowsError(GetLastError(), reading: true)
261264
}
262265

266+
var volumeSerialNumber: DWORD = 0
267+
guard GetVolumeInformationW(&szVolumePath, nil, 0, &volumeSerialNumber, nil, nil, nil, 0) else {
268+
throw _NSErrorWithWindowsError(GetLastError(), reading: true)
269+
}
270+
263271
result[.systemSize] = NSNumber(value: liTotal.QuadPart)
264272
result[.systemFreeSize] = NSNumber(value: liFree.QuadPart)
273+
result[.systemNumber] = NSNumber(value: volumeSerialNumber)
265274
// FIXME(compnerd): what about .systemNodes, .systemFreeNodes?
266275
}
267276
return result

0 commit comments

Comments
 (0)