| |
|
|
- page 1 - |
|
Jac de Lad | allô Community!
avec qui API CreateFile peux on chacun la quantité verschiedener Fichiers erstellen. je cherche une Possibilité une Dossier quasi im RAM trop erstellen um ensuite mittels einer DLL-Funktion puis zuzugreifen, quelque chose avec cela trop faire et qui Dossier anschließend wieder trop effacer. avec cela serait je une temporäre Dossier entourer, quoi erstens plus rapide ist et zweitens simple plus beau. Kennt sich quelqu'un avec cela aus? je viens avec qui Aider pas bien sûr, il y a cela certains paramètre avec des centaines Opportunités...
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 ▲ |
|
|
|
|
| |
|
- page 1 - |
|
| string a&,0=Blub |
|
|
| |
|
|
|
Jac de Lad | je hab mir im MSDN qui APIs angesehen, mais je viens avec cela pas bien sûr. la hâte du eventuell un 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 pas - qui pipeUnit raspelt vieles hin-et-her sodass cet à peine zeigt comme simple allez... |
|
|
| |
|
|
|
Jac de Lad | c'est mal. quand même merci, je exposition mich la fois plus um. |
|
|
| 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 |
je cherche une Possibilité une Dossier quasi im RAM trop erstellen um ensuite mittels einer DLL-Funktion puis zuzugreifen, quelque chose avec cela trop faire et qui Dossier anschließend wieder trop effacer.
Hört sich pour mich à comment un stinknormaler Speicherbereich. Übergib simple une aiguille sur den grenier à qui Dll-Funktion, z.B. NeueFunktion(bereich#) |
|
|
| |
|
|
|
| Stimmt, il brauchs oui garnicht prozessübergreifend, sei car qui DLL fonctionne dans einem anderen Prozess... |
|
|
| |
|
|
|
Andreas Miethe
| Frank Abbing
Frank Abbingje cherche une Possibilité une Dossier quasi im RAM trop erstellen um ensuite mittels einer DLL-Funktion puis zuzugreifen, quelque chose avec cela trop faire et qui Dossier anschließend wieder trop effacer. Hört sich pour mich à comment un stinknormaler Speicherbereich. Übergib simple une aiguille sur den grenier à qui Dll-Funktion, z.B. NeueFunktion(bereich#)
Wird pas marcher ! So comment je cela verstanden habe, soll une Dossier, qui seulement im Ram liegt, avec einem Dateinamen angesprochen volonté.
Beispiel:
une EXE wird mittels Datengenerator dans qui Exe eingebunden. là habe je mon EXE im Speicherbereich. maintenant versuch la fois avec qui Kernel32.Dll per CreateProcess() cela Ding zum courir trop kriegen. là wird ne...aucune Speicherbereich mais un Dateiname erwartet. toujours si une Dll-Funktion une aiguille sur une Dateinamen erwartet, et en gibt es une la quantité, wird cela so pas marcher.
s'il te plaît berichtige mich si je là faux 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 |
s'il te plaît berichtige mich si je là faux liege !
Du liegst là sûrement pas faux. qui l'affaire avec dem Dateinamen habe je bewußt aussen avant gehalten, weil je en ausgegangen était, dass Jac qui Dll selber erzeugt. Pour cette fand je qui technologie sur qui Bereiche viel sinnvoller. cela allez mais avec einer fremden Dll pas.
mais je suis sûrement, dass aussi une Exedatei aus dem grenier gestartet volonté peux. Immerhin allez cela oui aussi avec Dlls (Memorymodule) et cet sommes oui aussi Exedateien. comment De toute façon, alles dans Allem ist iFs Solution vorzuziehen. je suis sûrement, il liefert Jac encore une kurzen Democode en supplément. |
|
|
| |
|
|
|
Andreas Miethe
| allô Frank,
ist une entier autre Geschichte, si le Dll selbst geschrieben wird. en vais je mais pas aus.
Jac
mais comment peux je qui Dossier nutzen, si le Funktion qui DLL une aiguille sur une Dateinamen nécessaire? 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 ▲ |
|
|
|
| |
|
- page 2 - |
|
|
Jac de Lad | non, non, non.
Folgendes:
une DLL xyz nécessaire pour une opération une Dateinamen (meinetwegen wird qui Dossier geladen et sous einem anderen Format wieder gespeichert). je erzeuge qui Dossier mais seulement temporär, weil Profan qui Dossier x seulement dans einem anderen Format erzeugen peux. je veux eh bien cet temporäre Dossier tourner autour de, weil es mir trop lente ist, dass qui sur qui Festplatte erstellt wird. Deswegen cherche je pour einer Possibilité, dass qui Dossier quand même erstellt wird, mais qui Ausgabe dans den RAM umgeleitet wird. qui Dossier muss naturellement quand même sous einem Dateinamen ansprechbar son, là sonst qui DLL xyz pas plus allez.
Wisst son maintenant quoi je mon? 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
non, non, non. Folgendes: une DLL xyz nécessaire pour une opération une Dateinamen (meinetwegen wird qui Dossier geladen et sous einem anderen Format wieder gespeichert). je erzeuge qui Dossier mais seulement temporär, weil Profan qui Dossier x seulement dans einem anderen Format erzeugen peux. je veux eh bien cet temporäre Dossier tourner autour de, weil es mir trop lente ist, dass qui sur qui Festplatte erstellt wird. Deswegen cherche je pour einer Possibilité, dass qui Dossier quand même erstellt wird, mais qui Ausgabe dans den RAM umgeleitet wird. qui Dossier muss naturellement quand même sous einem Dateinamen ansprechbar son, là sonst qui DLL xyz pas plus allez. Wisst son maintenant quoi je mon? Jac
une Possibilité, qui mir justement einfällt, wäre peut-être CreateNamedPipe(). Solche Objekte bekommen une Namen pour dem Schema \.pipepipename et laisser sich avec CreateFile() ouvrir, sodass on vous höchstwahrscheinlich à qui Funktion comme via ihres Dossier-Namens transfert pourrait. cela schwierige à qui l'affaire ist allerdings, dass on sich dans dem aufrufenden Prozess um cela décrire qui Pipe kümmern muss - très schwierig, car cela ganze devrait parallèle trop dem Funktionaufruf geschehen, alors dans einem eigenen Fil ablaufen (quoi avec Profan2Cpp wohl marcher serait). malheureusement habe je im Moment extrem wenig Zeit, sodass je ne...aucune Beispiel liefern peux, mais je werde dans den prochain Tagen la fois quelque chose ausprobieren...
peut-être hat mais quelqu'un encore une bessere, i.e. einfachere concept...
MfG
Sebastian |
|
|
| |
|
|
|
Sebastian König | So, ici ist maintenant la fois un Beispiel. Im Prinzip funktioniert es - jedenfalls chez mir. qui Procédure TestProc est un Dummy pour qui DLL-Funktion: elle ouvre qui Dossier sur ihren Namen et liest den le contenu, jusqu'à rien plus zum Lesen disponible ist. malheureusement liegt ici (höchstwahrscheinlich) aussi qui grand Einschränkung des Konzepts: cela ganze funktioniert wohl seulement, si cela Lesen sur cet Art et Weise stattfindet et pas irgendwie zunächst qui Dateigröße ermittelt et ensuite alles sur einem gelesen wird. Einen Versuch ist mais peut-être quand même Wert... KompilierenMarqueSéparation $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
Fin
HTH
Sebastian |
|
|
| |
|
|