Skip to content

Commit c09edab

Browse files
committed
Add Windows volume information to file system info
1 parent a702cf3 commit c09edab

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
@@ -243,6 +243,9 @@ extension FileManager {
243243

244244
try path.withCString(encodedAs: UTF16.self) {
245245
let dwLength: DWORD = GetFullPathNameW($0, 0, nil, nil)
246+
guard dwLength != 0 else {
247+
throw _NSErrorWithWindowsError(GetLastError(), reading: true)
248+
}
246249
var szVolumePath: [WCHAR] = Array<WCHAR>(repeating: 0, count: Int(dwLength + 1))
247250

248251
guard GetVolumePathNameW($0, &szVolumePath, dwLength) else {
@@ -256,8 +259,14 @@ extension FileManager {
256259
throw _NSErrorWithWindowsError(GetLastError(), reading: true)
257260
}
258261

262+
var volumeSerialNumber: DWORD = 0
263+
guard GetVolumeInformationW(&szVolumePath, nil, 0, &volumeSerialNumber, nil, nil, nil, 0) else {
264+
throw _NSErrorWithWindowsError(GetLastError(), reading: true)
265+
}
266+
259267
result[.systemSize] = NSNumber(value: liTotal.QuadPart)
260268
result[.systemFreeSize] = NSNumber(value: liFree.QuadPart)
269+
result[.systemNumber] = NSNumber(value: volumeSerialNumber)
261270
// FIXME(compnerd): what about .systemNodes, .systemFreeNodes?
262271
}
263272
return result

0 commit comments

Comments
 (0)