22type
33 TUserDriverRec = record
44 Driver : TDriverRec;
5- Delete : Boolean;
5+ Remove : Boolean;
66 end ;
77
88 TUserDriverList = Array [0 ..1 ] of TUserDriverRec;
@@ -38,10 +38,13 @@ begin
3838 if not UserDriversSelect(List) then
3939 Exit;
4040
41- for I := Low(List) to High(List) - 1 do
41+ for I := Low(List) to High(List) do
4242 begin
4343
44- if List[I].Delete then
44+ if not List[I].Driver.Exists then
45+ Continue;
46+
47+ if List[I].Remove then
4548 begin
4649 if ExecPnpDeleteDriver(List[I].Driver, True) then
4750 Action := ' Removed'
@@ -98,10 +101,10 @@ end;
98101function UserDriversGetLegacy : TUserDriverList;
99102begin
100103
101- Result[0 ].Delete := True ;
104+ Result[0 ].Remove := False ;
102105 Result[0 ].Driver := UserDriversInit(' Legacy PL2303 HXA/XA' , LEGACY_HXA);
103106
104- Result[1 ].Delete := True ;
107+ Result[1 ].Remove := False ;
105108 Result[1 ].Driver := UserDriversInit(' Legacy PL2303 TA/TB' , LEGACY_TAB);
106109
107110end ;
124127 Instance: TInstanceRec;
125128 Driver: TDriverRec;
126129 Found: Boolean;
130+ Text: String;
127131
128132begin
129133
@@ -160,6 +164,13 @@ begin
160164
161165 end ;
162166
167+ if Result.Count = 1 then
168+ Text := ' driver'
169+ else
170+ Text := ' drivers' ;
171+
172+ Debug(Format(' Found %d PL2303 %s' , [Result.Count, Text]));
173+
163174end ;
164175
165176function UserDriversSelect (var List: TUserDriverList): Boolean;
@@ -184,7 +195,7 @@ begin
184195
185196 if Count = 0 then
186197 begin
187- Debug(' No user drivers found' );
198+ Debug(' No legacy drivers found' );
188199 Exit;
189200 end ;
190201
@@ -204,6 +215,8 @@ begin
204215 if not Driver.Exists then
205216 Continue;
206217
218+ Debug(Format(' Offering %s (%s) for removal' , [Driver.DisplayName, Driver.Version]));
219+
207220 GUserForm.ListBox.AddCheckBox(Driver.DisplayName, Driver.Version, 0 ,
208221 True, True, False, False, TObject(I));
209222 end ;
@@ -216,17 +229,17 @@ begin
216229 begin
217230
218231 Index := Integer(GUserForm.ListBox.ItemObject[I]);
219- List[Index].Delete := GUserForm.ListBox.Checked[I];
232+ List[Index].Remove := GUserForm.ListBox.Checked[I];
220233
221- if List[Index].Delete then
234+ if List[Index].Remove then
222235 Result := True;
223236
224237 end ;
225238
226239 if Result then
227- Debug(' User chose to delete drivers' )
240+ Debug(' User chose to remove legacy drivers' )
228241 else
229- Debug(' User chose not to delete drivers' );
242+ Debug(' User chose not to remove legacy drivers' );
230243
231244 finally
232245 GUserForm.Main.Free();
0 commit comments