@@ -29,13 +29,12 @@ class VersionInfoQuerier {
2929 const kEnUsLanguageCode = '040904e4' ;
3030 final keyPath = TEXT ('\\ StringFileInfo\\ $kEnUsLanguageCode \\ $key ' );
3131 final length = allocate <Uint32 >();
32- final valueAddress = allocate <IntPtr >();
32+ final valueAddress = allocate <Pointer < Utf16 > >();
3333 try {
3434 if (VerQueryValue (versionInfo, keyPath, valueAddress, length) == 0 ) {
3535 return null ;
3636 }
37- return Pointer <Utf16 >.fromAddress (valueAddress.value)
38- .unpackString (length.value);
37+ return valueAddress.value.unpackString (length.value);
3938 } finally {
4039 free (keyPath);
4140 free (length);
@@ -116,14 +115,12 @@ class PathProviderWindows extends PathProviderPlatform {
116115 /// folderID is a GUID that represents a specific known folder ID, drawn from
117116 /// [WindowsKnownFolder] .
118117 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); ;
121120
122121 try {
123- GUID knownFolderID = GUID .fromString (folderID);
124-
125122 final hr = SHGetKnownFolderPath (
126- knownFolderID.addressOf, // ignore: deprecated_member_use
123+ knownFolderID,
127124 KF_FLAG_DEFAULT ,
128125 NULL ,
129126 pathPtrPtr,
@@ -135,12 +132,11 @@ class PathProviderWindows extends PathProviderPlatform {
135132 }
136133 }
137134
138- pathPtr = Pointer <Utf16 >.fromAddress (pathPtrPtr.value);
139- final path = pathPtr.unpackString (MAX_PATH );
135+ final path = pathPtrPtr.value.unpackString (MAX_PATH );
140136 return Future .value (path);
141137 } finally {
142- CoTaskMemFree (pathPtr.cast ());
143138 free (pathPtrPtr);
139+ free (knownFolderID);
144140 }
145141 }
146142
0 commit comments