Français
Forum

Speicheradressen dans Longints à Funktion transfert

 

Sven
Bader
allô zusammen,

folgendes Thema schiebe je déjà une Weile avant mir ici, weil es zwar dans aucun Profan Version de 10 jusqu'à X4 funktioniert mais très wohl dans Profan2CPP.

but ist es, Ressourcen aus dem laufenden Programme ou bien einer DLL trop magasin, quelle mais emballé sommes et mittels RtlDecompressBuffer entpackt volonté doit. ca sollte alles soll passer, sans une Dossier zwischenzuspeichern.

cela Problem ist, dass FindResource/LoadResource une Speicheradresse zurückgibt, quelle je dans einem Logint speichere et avec cela pas weiterarbeiten peux.

cela simpelste Beispiel, wohin es dans XProfan déjà knallt ist:
umcompressedSize& = Long(res2&,0)

dans RtlDecompressBuffer ensuite 2x pour res1& et res2&, XProfan hätte ici wohl volontiers selbst dimensionierte Bereiche dans forme de res1# et res2#.

Nochmal: dans Profan2Cpp fonctionne qui Code, qui Werte (pas qui Adresse!) qui Integers volonté ici korrekt comme Speicheradresse erkannt.

Hilft mir ici une weitere Zuweisung, un copymemory, une Typenkonvertierung?

ici qui Code et anbei qui Voir le texte source + qui Resourcen-DLL zum testen.
 $H opengl.ph
declare texture&,dll&
Def RtlCompressBuffer(8) !"ntdll.dll", "RtlCompressBuffer"
Def RtlDecompressBuffer(6) !"ntdll.dll", "RtlDecompressBuffer"
Def RtlGetCompressionWorkSpaceSize(3) !"ntdll.dll", "RtlGetCompressionWorkSpaceSize"
Def RtlMoveMemory(3) !"kernel32.dll", "RtlMoveMemory"
Def LoadResource(2) !"KERNEL32","LoadResource"
Def FindResource(3) !"KERNEL32","FindResourceA"
Def LockResource(1) !"KERNEL32","LockResource"
Def FreeResource(1) !"KERNEL32","FreeResource"
Def SizeofResource(2) !"KERNEL32","SizeofResource"
dll& = UseDLL("rgba.dll")
cls

Proc OpenResource

    parameters Typ$,nom$

ENDPROC

Proc LoadPackedBGRA

    Paramètres nom$,iWidth&,iHeight&
    Déclarer umcompressedSize&,umcompressed#,typ$,res1&,res2&,bworkspaacesize&
    typ$ ="PACKED"
    OpenResource("PACKED", nom$)
    res1& = FindResource(dll&, addr(nom$), addr(typ$))
    res2& = LoadResource(dll&, res1&)
    LockResource(res2&)
    umcompressedSize& = Long(res2&,0)'<- ici knallt es zum 1. la fois, un Lonint avec Speicheradresse wird ici pas korrekt verarbeitet
    'Den pourrait on aussi encore berechnen
    'umcompressedSize& = (iWidth& * iHeight& * 4)
    dim umcompressed#, umcompressedSize&
    'Gescheiteter Versuch, es trop retten
    'declare res2#,res1#
    'res2# =  res2&
    'res1# =  res1&
    'dim res1#, 100'???
    'dim res2#, umcompressedSize&
    'RtlDecompressBuffer(2,umcompressed#,umcompressedSize&,res2#+4,SizeofResource(%hInstance, res1#)-4,Addr(bworkspacesize&))
    'ici knallt es probablement doppelt chez res1& et res&, là ici wieder Speicheradressen dans einem Longint stehen
    RtlDecompressBuffer(2,umcompressed#,umcompressedSize&,res2&+4,SizeofResource(dll&, res1&)-4,Addr(bworkspacesize&))
    'dans  USHORT CompressionFormat
    'out PUCHAR UncompressedBuffer
    'dans  ULONG  UncompressedBufferSize
    'dans  PUCHAR CompressedBuffer         <- une loning Variable
    'dans  ULONG  CompressedBufferSize
    'out PULONG FinalUncompressedSize
    declare txID&
    txID& = 1
    ogl("glGenTextures",1, addr(txID&))
    ogl("glBindTexture",~GL_TEXTURE_2D, txID&)
    ogl("glEnable",~GL_ALPHA_TEST)'RGBA
    ogl("glTexEnvi",~GL_TEXTURE_ENV, ~GL_TEXTURE_ENV_MODE, ~GL_MODULATE)
    ogl("glTexImage2D",~GL_TEXTURE_2D,0,~GL_RGBA,iWidth&, iHeight&,0,~GL_BGRA,~GL_UNSIGNED_BYTE,umcompressed#)
    ogl("glTexParameteri",~GL_TEXTURE_2D, ~GL_TEXTURE_MAG_FILTER, ~GL_LINEAR)
    ogl("glTexParameteri",~GL_TEXTURE_2D, ~GL_TEXTURE_MIN_FILTER, ~GL_LINEAR)
    ogl("glBindTexture",~GL_TEXTURE_2D, 0)
    FreeResource(res2&)
    dispose umcompressed#
    Retour txID&

ENDPROC

oGL("init",%hwnd,0,0,0,1)
oGL("glBlendFunc", ~GL_SRC_ALPHA, ~GL_ONE_MINUS_SRC_ALPHA)
oGL("glEnable",    ~GL_BLEND)
oGL("blendmode",    2)
oGL("posmode",    1)
texture&= LoadPackedBGRA("LOGO",128,128)

whilenot iskey(27)

    sleep 16
    oGL("clear")
    oGL("origin",0,0,-1)
    oGL("texture",texture&,1)
    ogl("Quad",0.5,0.5)
    oGL("show")

endwhile

FreeDLL dll&

29 kB
Hochgeladen:09.02.2023
Downloadcounter49
Download
 
09.02.2023  
 




H.Brill
chez mir fonctionne es sous X4.
peut-être stimmt qui Pfad qui DLL pas.
Überprüfe la fois, si dll& un gültiges Handle hat,
alors <> 0.

56 kB
Hochgeladen:10.02.2023
Downloadcounter54
Download
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
10.02.2023  
 




Sven
Bader
eh on, tu as droite. cela einzige, quoi je seulement pour den Forenbeitrag gemacht habe ist, une DLL statt einer Ressource aus qui EXE trop prendre, là scheint qui Ressource irgendwie défaut trop son.

avec suivant la ligne ca va maintenant aussi dans qui EXE, zumindest ab X3
$RES LOGO.res

qui Dossier erstelle je vorab avec dem Ressource Hacker.
 
10.02.2023  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

1.446 Views

Untitledvor 0 min.
H.Brill16.06.2024
Georg Teles02.01.2024
funkheld25.09.2023
Thomas Zielinski28.06.2023
plus...

Themeninformationen

cet Thema hat 2 participant:

Sven Bader (2x)
H.Brill (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie