Español
Foro

Expediente en el RAM redactar

 
- Página 1 -



Jac
de
Lad
¡Hola Comunidad!

Mit el API CreateFile puede ser jede Menge verschiedener Archivos redactar. Yo búsqueda una Möglichkeit una Expediente quasi en el RAM a redactar en entonces mittels uno DLL-Función darauf zuzugreifen, algo así a hacer y el Expediente anschließend otra vez a löschen. Damit sería Yo una temporäre Expediente umgeben, qué erstens más rápido es y zweitens simplemente schöner. Kennt se alguien así de? Yo komme con el Ayuda no está claro, lo son el etliche Parámetro con hunderten Möglichkeiten...

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
18.04.2008  
 



 
- Página 1 -


cadena a&,0=Blub
 
19.04.2008  
 




Jac
de
Lad
Yo me en el MSDN el APIs angesehen, pero yo komme así no está claro. Hast du eventuell una Minimalbeispiel?

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
19.04.2008  
 



Im Moment no - el pipeUnit raspelt vieles hin-y-her sodass esta kaum zeigt como simplemente va...
 
19.04.2008  
 




Jac
de
Lad
Es schlecht. Trotzdem danke, Yo mostrar mich veces más en.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
19.04.2008  
 




Frank
Abbing

Yo búsqueda una Möglichkeit una Expediente quasi en el RAM a redactar en entonces mittels uno DLL-Función darauf zuzugreifen, algo así a hacer y el Expediente anschließend otra vez a löschen.


Hört se para mich a como una stinknormaler Speicherbereich. Übergib simplemente una Zeiger en el Speicher a el Dll-Función, z.B. NeueFunktion(bereich#)
 
19.04.2008  
 



Stimmt, él brauchs sí garnicht prozessübergreifend, sei porque el DLL se ejecuta en un otro Prozess...
 
20.04.2008  
 




Andreas
Miethe


Frank Abbing
Frank Abbing
Yo búsqueda una Möglichkeit una Expediente quasi en el RAM a redactar en entonces mittels uno DLL-Función darauf zuzugreifen, algo así a hacer y el Expediente anschließend otra vez a löschen.


Hört se para mich a como una stinknormaler Speicherbereich. Übergib simplemente una Zeiger en el Speicher a el Dll-Función, z.B. NeueFunktion(bereich#)


Wird no trabajo !
So como yo verstanden habe, se una Expediente, el sólo en el Ram liegt, con un Dateinamen angesprochen voluntad.

Ejemplo:

Un EXE se mittels Datengenerator en el Exe eingebunden.
Como Yo mi EXE en el Speicherbereich.
Jetzt versuch veces con el Kernel32.Dll por CreateProcess() lo para Laufen a kriegen.
Como se kein Speicherbereich pero una Dateiname esperado.
Immer si una Dll-Función una Zeiger en una Dateinamen esperado, y su hay una Menge, se el así no trabajo.

Bitte berichtige mich si yo como falso liege !
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
20.04.2008  
 




Frank
Abbing

Bitte berichtige mich si yo como falso liege !


Usted liegst como sicher no falso. El Sache con el Dateinamen Yo bewußt aussen antes mantenido, porque Yo su ausgegangen war, dass Jac el Dll selber producido. Dafür fand Yo el Technik en Bereiche viel sinnvoller. Es aber con uno fremden Dll no.

Aber Yo bin sicher, dass auch una Exedatei de el Speicher comenzó voluntad kann. Immerhin va el en efecto con Dlls (Memorymodule) y esta son tan auch Exedateien.
Como De todos modos, alles en Allem es iFs Solución vorzuziehen. Yo bin sicher, él liefert Jac todavía una kurzen Democode dazu.
 
20.04.2008  
 




Andreas
Miethe


¡Hola Franco,

es una bastante otro Geschichte, si la Dll incluso geschrieben se.
Davon gehe Yo pero no de.

Jac
Aber como kann Yo el Expediente nutzen, si la Función el DLL una Zeiger en una Dateinamen benötigt?

Jac
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
20.04.2008  
 



 
- Página 2 -



Jac
de
Lad
Nein, nein, nein.

Folgendes:

Un DLL xyz benötigt para una Operation una Dateinamen (meinetwegen se el Expediente geladen y bajo una otro Formato otra vez gespeichert). Yo erzeuge el Expediente aber sólo temporär, porque Profano el Expediente x sólo en un otro Formato erzeugen kann. Yo voluntad nun esta temporäre Expediente umgehen, porque lo me a langsam es, dass el en el Festplatte erstellt se. Deswegen búsqueda Yo después de uno Möglichkeit, dass el Expediente trotzdem erstellt se, aber el Edición en el RAM umgeleitet se. El Expediente muss natürlich trotzdem bajo una Dateinamen ansprechbar ser, como sonst el DLL xyz no mehr va.

Wisst ihr ahora Yo mi?
Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
20.04.2008  
 




Sebastian
König
Jac
Nein, nein, nein.

Folgendes:

Un DLL xyz benötigt para una Operation una Dateinamen (meinetwegen se el Expediente geladen y bajo una otro Formato otra vez gespeichert). Yo erzeuge el Expediente aber sólo temporär, porque Profano el Expediente x sólo en un otro Formato erzeugen kann. Yo voluntad nun esta temporäre Expediente umgehen, porque lo me a langsam es, dass el en el Festplatte erstellt se. Deswegen búsqueda Yo después de uno Möglichkeit, dass el Expediente trotzdem erstellt se, aber el Edición en el RAM umgeleitet se. El Expediente muss natürlich trotzdem bajo una Dateinamen ansprechbar ser, como sonst el DLL xyz no mehr va.

Wisst ihr ahora Yo mi?
Jac


Un Möglichkeit, el me gerade einfällt, wäre tal vez CreateNamedPipe(). Solche Objetos bekommen una Namen después de el Schema \.pipepipename y dejar se con CreateFile() abierto, sodass uno ellos höchstwahrscheinlich a el Función como via ihres Expediente-Namens transferencia podría. Das schwierige a el Sache es allerdings, dass uno se en el aufrufenden Prozess en el Beschreiben el Pipe kümmern muss - muy schwierig, porque todos debería parallel a el Funktionaufruf geschehen, also en un eigenen Hilo ablaufen (qué con Profano2Cpp wohl trabajo sería). Leider Yo en el Moment extremo wenig Tiempo, sodass Yo kein Ejemplo liefern kann, pero yo voluntad en el nächsten Tagen veces algo ausprobieren...

Tal vez ha aber alguien ni bessere, i.e. einfachere Concepto...

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
20.04.2008  
 




Sebastian
König
So, hier es ahora veces una Ejemplo. Im Principio funktioniert lo - jedenfalls en me. El Procedimiento TestProc es una Dummy para el DLL-Función: Sie öffnet el Expediente encima ihren Namen y liest el Inhalt, a nichts mehr para Lesen verfügbar es. Leider liegt hier (höchstwahrscheinlich) auch el große Einschränkung des Konzepts: Das todo funktioniert wohl sólo, si el Lesen en esta Art y Weise stattfindet y no irgendwie primero el Dateigröße ermittelt y luego alles en una gelesen se. Einen Intento es aber tal vez trotzdem Valor...
KompilierenMarcaSeparación
 $H Windows.ph
 $IFNDEF P2CPP
Cls
Print Der Code funktioniert leider nur mit Profan2Cpp - Sorry!
Print
Print Taste zum Beenden.
WaitKey
End
 $ENDIF
var pipe$ = \\.\pipe\sk-testpipe
var signal& = ~CreateEvent(0,0,0,0)
declare data#
dim data#,1024 * 100 100 KB
clear data#
Bereich füllen...
declare error&

proc WriteThreadProc

    parameters lpParams&
    P2CPP: <USE_EXTERNAL_ST>
    var pipe& = ~CreateNamedPipe(Addr(pipe$),~PIPE_ACCESS_OUTBOUND,~PIPE_TYPE_BYTE | ~PIPE_WAIT,1,1024,1024,500,0)

    if pipe& = ~INVALID_HANDLE_VALUE

        error& = ~GetLastError()
        ~SetEvent(signal&)
        ~ExitThread(1)

    endif

    ~SetEvent(signal&)
    ~ConnectNamedPipe(pipe&,0)
    var dwTotalAvail& = SizeOf(data#)
    var dwTotalWritten& = 0
    var dwWritten& = 0

    while dwTotalWritten& < dwTotalAvail&

        dwWritten& = 0
        ~WriteFile(pipe&,data# + dwTotalWritten&,1024,Addr(dwWritten&),0)
        dwTotalWritten& = dwTotalWritten& + dwWritten&
        ~Sleep(0)

    endwhile

    ~FlushFileBuffers(pipe&)
    ~DisconnectNamedPipe(pipe&)
    ~CloseHandle(pipe&)
    ~ExitThread(0)
    P2CPP: </USE_EXTERNAL_ST>

endproc

proc TestProc

    parameters filename$
    declare file&
    var file& = ~CreateFile(Addr(filename$),~GENERIC_READ,0,0,~OPEN_EXISTING,0,0)
    Color 12,15
    Print Datei-Handle:,file&

    if file& = ~INVALID_HANDLE_VALUE

        Print WinError$(error&)
        WaitKey
        End

    endif

    var dwTotalRead& = 0
    var dwRead& = 0
    declare buffer#
    dim buffer#,1024

    while ~ReadFile(file&,buffer#,1024,Addr(dwRead&),0)

        dwTotalRead& = dwTotalRead& + dwRead&
        dwRead& = 0

    endwhile

    ~CloseHandle(file&)
    Print Int(dwTotalRead&  1024),KB gelesen
    Print
    dispose buffer#

endproc

Cls
declare id&
var thread& = ~CreateThread(0,0,ProcAddr(WriteThreadProc,1),0,0,Addr(id&))
Print Thread-ID:,id&
Print Thread-Handle:,thread&
Print
~WaitForSingleObject(signal&,~INFINITE)
~CloseHandle(signal&)
TestProc pipe$
~CloseHandle(thread&)
dispose data#
Color 0,15
Print Taste zum Beenden.
WaitKey
End

HTH

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
21.04.2008  
 




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

4.058 Views

Untitledvor 0 min.
Jörg Sellmeyer12.06.2018
Ernst12.05.2014

Themeninformationen



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