begin
dwResult := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_CONTAINER, lpnr, hEnum);
+ if dwResult <> NO_ERROR then
+ Exit;
lpnrLocal := AllocMem(cbBuffer);
try
repeat
nEntries := cEntries;
nBuffer := cbBuffer;
dwResultEnum := WNetEnumResource(hEnum, nEntries, lpnrLocal, nBuffer);
- for i := 0 to nEntries - 1 do
- begin
- with lpnrLocal^[i] do
- if Copy(lpRemoteName, 1, 2) = '\\' then
- Synchronize(
- procedure
- begin
- NetrStr.Add(lpRemoteName);
- end);
- if Boolean(lpnrLocal^[i].dwUsage and RESOURCEUSAGE_CONTAINER) then
- EnumNet(NetrStr, @lpnrLocal^[i]);
- end;
- until (dwResultEnum <> NO_ERROR) or (dwResultEnum = ERROR_NO_MORE_ITEMS);
+ if dwResultEnum = NO_ERROR then
+ for i := 0 to nEntries - 1 do
+ begin
+ with lpnrLocal^[i] do
+ if Copy(lpRemoteName, 1, 2) = '\\' then
+ Synchronize(
+ procedure
+ begin
+ NetrStr.Add(lpRemoteName);
+ end);
+ if Boolean(lpnrLocal^[i].dwUsage and RESOURCEUSAGE_CONTAINER) then
+ EnumNet(NetrStr, @lpnrLocal^[i]);
+ end
+ else if dwResultEnum <> ERROR_NO_MORE_ITEMS then
+ Exit;
+ until dwResultEnum = ERROR_NO_MORE_ITEMS;
finally
FreeMem(lpnrLocal);
WNetCloseEnum(hEnum);