@@ -29,13 +29,12 @@ class VersionInfoQuerier {
29
29
const kEnUsLanguageCode = '040904e4' ;
30
30
final keyPath = TEXT ('\\ StringFileInfo\\ $kEnUsLanguageCode \\ $key ' );
31
31
final length = allocate <Uint32 >();
32
- final valueAddress = allocate <IntPtr >();
32
+ final valueAddress = allocate <Pointer < Utf16 > >();
33
33
try {
34
34
if (VerQueryValue (versionInfo, keyPath, valueAddress, length) == 0 ) {
35
35
return null ;
36
36
}
37
- return Pointer <Utf16 >.fromAddress (valueAddress.value)
38
- .unpackString (length.value);
37
+ return valueAddress.value.unpackString (length.value);
39
38
} finally {
40
39
free (keyPath);
41
40
free (length);
@@ -116,14 +115,12 @@ class PathProviderWindows extends PathProviderPlatform {
116
115
/// folderID is a GUID that represents a specific known folder ID, drawn from
117
116
/// [WindowsKnownFolder] .
118
117
Future <String > getPath (String folderID) {
119
- final pathPtrPtr = allocate <IntPtr >();
120
- late Pointer <Utf16 > pathPtr ;
118
+ final pathPtrPtr = allocate <Pointer < Utf16 > >();
119
+ final Pointer <GUID > knownFolderID = calloc < GUID >().. setGUID (folderID); ;
121
120
122
121
try {
123
- GUID knownFolderID = GUID .fromString (folderID);
124
-
125
122
final hr = SHGetKnownFolderPath (
126
- knownFolderID.addressOf, // ignore: deprecated_member_use
123
+ knownFolderID,
127
124
KF_FLAG_DEFAULT ,
128
125
NULL ,
129
126
pathPtrPtr,
@@ -135,12 +132,11 @@ class PathProviderWindows extends PathProviderPlatform {
135
132
}
136
133
}
137
134
138
- pathPtr = Pointer <Utf16 >.fromAddress (pathPtrPtr.value);
139
- final path = pathPtr.unpackString (MAX_PATH );
135
+ final path = pathPtrPtr.value.unpackString (MAX_PATH );
140
136
return Future .value (path);
141
137
} finally {
142
- CoTaskMemFree (pathPtr.cast ());
143
138
free (pathPtrPtr);
139
+ free (knownFolderID);
144
140
}
145
141
}
146
142
0 commit comments