![]() |
AW: Function (WIMGetMountedImageInfo)
@Zacherl
Folgendes würde ich ändern
Delphi-Quellcode:
EDIT
var
Lwimgapi : HMODULE; LSuccess : Boolean; LBuffer : PWIM_MOUNT_INFO_LEVEL0_LIST; LBufferLength, LReturnLength, LImageCount : DWord; LIdx : Integer; LLastError : Cardinal; begin Lwimgapi := LoadLibrary( 'wimgapi.dll' ); if Lwimgapi = 0 then RaiseLastOSError; try @WIMGetMountedImageInfo := GetProcAddress( Lwimgapi, 'WIMGetMountedImageInfo' ); LBufferLength := SizeOf( WIM_MOUNT_INFO_LEVEL0 ) * 8; GetMem( LBuffer, LBufferLength ); try repeat LSuccess := WIMGetMountedImageInfo( MountedImageInfoLevel0, LImageCount, LBuffer, LBufferLength, LReturnLength ); if LSuccess then begin for LIdx := 0 to LImageCount - 1 do begin ShowMessage( StrPas( PWideChar( @LBuffer^[LIdx].WimPath[0] ) ) ); end; end else begin LLastError := GetLastError; case LLastError of ERROR_INSUFFICIENT_BUFFER : begin ReallocMem( LBuffer, LReturnLength ); end; else RaiseLastOSError( LLastError ); end; end; until LSuccess; finally FreeMem( LBuffer ); end; finally FreeLibrary( Lwimgapi ); end; end;
Delphi-Quellcode:
ist auch noch ein Kandidat zum Prüfen ... aber jetzt nicht mehr :)
GetProcAddress
|
AW: Function (WIMGetMountedImageInfo)
Dein Code sieht auf jeden Fall besser aus, als mein nächtlicher Versuch :), aber der Hinweis zu GetLastError in der Delphi Hilfe ist definitiv falsch :D Habe es unter verschiedenen Windows Versionen getestet und der Error Code wird auf jeden Fall nicht resetted. Im MSDN ist unter
![]() |
AW: Function (WIMGetMountedImageInfo)
Zitat:
Zitat:
Danach kann schon wieder sonst was drin stehen (you never know). Potentiell handelt man sich so diese unliebsamen SideEffects ein ;) |
AW: Function (WIMGetMountedImageInfo)
Der Vollständigkeit halber:
Zitat:
|
AW: Function (WIMGetMountedImageInfo)
Problematisch ist aber eben der unbewusste Aufruf von API Funktionen (weil die mit einem harmlosen Befehl irgendwo versteckt aufgerufen werden).
Bei MS wird es erklärt und Emba schürt Angst ;) |
AW: Function (WIMGetMountedImageInfo)
Zitat:
MountedImageInfoLevel0 = 0; Warum? Sir Rufo Vielen Dank! |
AW: Function (WIMGetMountedImageInfo)
Zitat:
|
AW: Function (WIMGetMountedImageInfo)
Zitat:
// MOUNTED_IMAGE_INFO_LEVELS MountedImageInfoLevel0 = 1; MountedImageInfoLevel1 = 2; MountedImageInfoLevelInvalid = 3; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz