Español
Foro

Speicheradressen en Longints a Función transferencia

 

Sven
Bader
¡Hola zusammen,

folgendes Thema schiebe Yo ya una Weile antes me hier, porque lo zwar en keiner Profano Versión de 10 a X4 funktioniert aber muy wohl en Profano2CPP.

Ziel es, Ressourcen de el laufenden Programa oder uno DLL a invitar, welche aber gepackt son y mittels RtlDecompressBuffer entpackt voluntad necesario. Dies debería alles se passieren, sin una Expediente zwischenzuspeichern.

Das Problema es, dass FindResource/LoadResource una Speicheradresse zurückgibt, welche Yo en un Logint speichere y así no weiterarbeiten kann.

Das simpelste Ejemplo, wo lo en XProfan ya knallt es:
umcompressedSize& = Largo(res2&,0)

In RtlDecompressBuffer entonces 2x para res1& y res2&, XProfan hätte hier wohl gerne incluso dimensionierte Bereiche en Form de res1# y res2#.

Nochmal: en Profano2Cpp se ejecuta el Code, el Werte (no el Adresse!) el Integers voluntad hier korrekt como Speicheradresse erkannt.

Hilft me hier una weitere Zuweisung, una copymemory, una Typenkonvertierung?

Hier el Code y anbei el Ver código fuente + el Resourcen-DLL para testen.
 $H opengl.ph
declarar 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

    parámetros Typ$,Name$

ENDPROC

Proc LoadPackedBGRA

    Parámetros name$,iWidth&,iHeight&
    Declarar umcompressedSize&,umcompressed#,typ$,res1&,res2&,bworkspaacesize&
    typ$ ="PACKED"
    OpenResource("PACKED", name$)
    res1& = FindResource(dll&, addr(name$), addr(typ$))
    res2& = LoadResource(dll&, res1&)
    LockResource(res2&)
    umcompressedSize& = Largo(res2&,0)'<- hier knallt lo para 1. Tiempo, una Lonint con Speicheradresse se hier no korrekt verarbeitet
    'Den podría uno auch todavía berechnen
    'umcompressedSize& = (iWidth& * iHeight& * 4)
    dim umcompressed#, umcompressedSize&
    'Gescheiteter Intento, lo a retten
    'declarar res2#,res1#
    'res2# =  res2&
    'res1# =  res1&
    'dim res1#, 100'???
    'dim res2#, umcompressedSize&
    'RtlDecompressBuffer(2,umcompressed#,umcompressedSize&,res2#+4,SizeofResource(%hInstance, res1#)-4,Addr(bworkspacesize&))
    'Hier knallt lo vermutlich doppelt en res1& y res&, como hier otra vez Speicheradressen en un Longint posición
    RtlDecompressBuffer(2,umcompressed#,umcompressedSize&,res2&+4,SizeofResource(dll&, res1&)-4,Addr(bworkspacesize&))
    'en  USHORT CompressionFormat
    'out PUCHAR UncompressedBuffer
    'en  ULONG  UncompressedBufferSize
    'en  PUCHAR CompressedBuffer         <- una loning Variable
    'en  ULONG  CompressedBufferSize
    'out PULONG FinalUncompressedSize
    declarar 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&)
    disponer umcompressed#
    Volver 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
Ladeanzahl49
Descargar
 
09.02.2023  
 




H.Brill
En me se ejecuta lo bajo X4.
Tal vez stimmt el Pfad el DLL no.
Überprüfe veces, si dll& una gültiges Handle ha,
also <> 0.

56 kB
Hochgeladen:10.02.2023
Ladeanzahl54
Descargar
 
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
Oh uno, du hast bastante. Das einzige, Yo sólo para el Forenbeitrag gemacht habe es, una DLL en lugar de uno Ressource de el EXE a nehmen, hay scheint el Ressource irgendwie defekt a ser.

Mit folgender Línea es ahora en el EXE, zumindest de X3
$RES LOGO.res

El Expediente erstelle Yo vorab con el Ressource Hacker.
 
10.02.2023  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

1.441 Views

Untitledvor 0 min.
H.Brill16.06.2024
Georg Teles02.01.2024
funkheld25.09.2023
Thomas Zielinski28.06.2023
Más...

Themeninformationen

Dieses Thema ha 2 subscriber:

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


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie