<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[DateiStream mit Assembler unter WIN NT(XP)]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie schon der Titel sagt möchte ich gerne mit einer Art Stream in eine Datei schreiben. Also Datei erstellen und so Funktioniert und Hinein schreiben auch schon. Das alles mit den Funktionen aus der Win API32 CreateFile und WriteFile.<br />
Wie kann ich mir aber eine Art Stream schaffen? Gibt es da eine Funktion in der API für oder eine andere Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229435/dateistream-mit-assembler-unter-win-nt-xp</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 05:37:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229435.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Dec 2008 18:11:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Thu, 11 Dec 2008 18:11:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie schon der Titel sagt möchte ich gerne mit einer Art Stream in eine Datei schreiben. Also Datei erstellen und so Funktioniert und Hinein schreiben auch schon. Das alles mit den Funktionen aus der Win API32 CreateFile und WriteFile.<br />
Wie kann ich mir aber eine Art Stream schaffen? Gibt es da eine Funktion in der API für oder eine andere Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629018</guid><dc:creator><![CDATA[secondsun*gmx.de]]></dc:creator><pubDate>Thu, 11 Dec 2008 18:11:01 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Thu, 11 Dec 2008 19:57:10 GMT]]></title><description><![CDATA[<p>Worum genau geht es hier, bzw. was hat das mit Assembler zu tun?<br />
&quot;Stream&quot; ist ein recht abstrakter Begriff, bzw. Konstrukt (in C++ Klassen).<br />
Willst du eine C++ (Stream-)Klasse in Assembler implementieren? Oder hast du Fragen zur Verwendung von WinAPI-Funktionen in Assembler?<br />
Fuer alles andere waere dein Thema woanders besser aufgehoben (zB. im WinAPI-Forum).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629110</guid><dc:creator><![CDATA[Nobuo T]]></dc:creator><pubDate>Thu, 11 Dec 2008 19:57:10 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Fri, 12 Dec 2008 10:11:23 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ja es geht schon um Assembler. Rufe die API Funktionen mit invoke auf..Obwohl.vielleicht hast du recht und es gehört wirklich ins API Forum. Also ich suche einfach nur eine Funktion mit der ich in eine Datei schreiben kann. Aber nicht irgendwie sondern ich möchte immer text hinten dran hängen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629330</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Fri, 12 Dec 2008 10:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Fri, 12 Dec 2008 10:55:34 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-2713.html" rel="nofollow">Nobuo T</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-17.html" rel="nofollow">Assembler</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629362</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 12 Dec 2008 10:55:34 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Fri, 12 Dec 2008 10:57:55 GMT]]></title><description><![CDATA[<p>Dann oeffne die Datei doch einfach, gehe mit SetFilePointer ans Ende und schreibe normal mit WriteFile rein. Sehe da irgendwie nicht die Schwierigkeit...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629364</guid><dc:creator><![CDATA[Nobuo T]]></dc:creator><pubDate>Fri, 12 Dec 2008 10:57:55 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Fri, 12 Dec 2008 11:24:27 GMT]]></title><description><![CDATA[<p>Jede Datei die in Windows erzeugt wird ist ein &quot;Daten-Stream&quot;... :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629378</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 12 Dec 2008 11:24:27 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Fri, 12 Dec 2008 16:51:12 GMT]]></title><description><![CDATA[<pre><code class="language-asm">.586
.model flat,stdcall
option casemap:none

   include C:\masm32\include\windows.inc
   include C:\masm32\include\user32.inc
   include C:\masm32\include\kernel32.inc
   include C:\masm32\include\shlwapi.inc
   includelib C:\masm32\lib\user32.lib
   includelib C:\masm32\lib\kernel32.lib
   includelib C:\masm32\lib\shlwapi.lib
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.data

Datei       db &quot;kernel32.dll&quot;,0
Daten	      db &quot;QWERTZUIOPÜSDFGHJKLÖÄYXCVBNM&quot;,0
MSGCaption  db &quot;Information&quot;,0
MSGCreate   db &quot;Die Datei konnte nicht erstellt werden&quot;,0
MSGWrite    db &quot;Die Datei konnte nicht befüllt werden&quot;,0 
MSGErstellt db &quot;Die Datei wurde erstellt. Befüllung läuft....&quot;,0
MSGEnde     db &quot;Die Datei wurde gefüllt&quot;,0
MSGZeiger   db &quot;Der Zeiger konnte nicht bewegt werden&quot;,0
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.data?

Bytes    db ?
Handle   dd ? 
Pointer  dd ?
Point    dd ?

;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.code
start:
    xor     eax, eax
    xor     ebx, ebx
    invoke  CreateFile, addr Datei, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0
    cmp     eax, INVALID_HANDLE_VALUE
    je      NotCreate
    mov     Handle, eax
    invoke  MessageBox, NULL, addr MSGErstellt, addr MSGCaption, MB_OK
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Write:
    call    SetFilePos
    invoke  MessageBox, NULL, addr Point, addr MSGCaption, MB_OK
    invoke  WriteFile, Handle, addr Daten, 28, addr Bytes, NULL
    cmp     eax, 0
    jz     NotWrite    
    inc     ebx
    cmp     ebx, 3
    jne     Write

    invoke  MessageBox, NULL, addr MSGEnde, addr MSGCaption, MB_OK 
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Exit:
    invoke  CloseHandle, Handle
    invoke  ExitProcess, NULL
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NotCreate:
    invoke  MessageBox, NULL, addr MSGCreate, addr MSGCaption, MB_OK
    jmp Exit
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NotWrite:
    invoke  MessageBox, NULL, addr MSGWrite, addr MSGCaption, MB_OK
    jmp Exit   
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NoPointer:
    invoke  MessageBox, NULL, addr MSGZeiger, addr MSGCaption, MB_OK
    jmp Exit
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SetFilePos:
    invoke  SetFilePointer, Handle, 0, Point, FILE_END
    cmp     eax, INVALID_SET_FILE_POINTER
    je      NoPointer
    mov     Pointer, eax
    ret
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end start
</code></pre>
<p>Eigentlich sollte ih damit an das Ende einer Datei schreiben können. Also wenn man sich den Sprung zum SetFilePos wegdenkt. Aber bei der 2 Runde(von 3) gibt der mir eine Exeption. Wieso?<br />
Und das mit dem SetFilePointer funktioniert auch nicht so ganz. Folgendes habe ich vor:</p>
<p>Der string soll 3 mal hintereinander in eine Datei geschrieben werden OHNE den Text zu überschreiben. Also quasi append. Aber das will nicht so wie ich es gerne hätte.</p>
<p>Dann habe ich es mit SetFilePoint versucht(den Code stimmt nicht mit dem getesteten Code überein) aber wenn ich den Zeiger ans Ende setzen will bekomme ich einen Fehler:-(</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629581</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Fri, 12 Dec 2008 16:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Fri, 12 Dec 2008 17:01:55 GMT]]></title><description><![CDATA[<p>Korriiert (funktioniert aber immer noch nicht)</p>
<pre><code class="language-asm">.586
.model flat,stdcall
option casemap:none

   include C:\masm32\include\windows.inc
   include C:\masm32\include\user32.inc
   include C:\masm32\include\kernel32.inc
   include C:\masm32\include\shlwapi.inc
   includelib C:\masm32\lib\user32.lib
   includelib C:\masm32\lib\kernel32.lib
   includelib C:\masm32\lib\shlwapi.lib
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.data

Datei       db &quot;kernel32.dll&quot;,0
Daten	      db &quot;QWERTZUIOPÜSDFGHJKLÖÄYXCVBNM&quot;,0
MSGCaption  db &quot;Information&quot;,0
MSGCreate   db &quot;Die Datei konnte nicht erstellt werden&quot;,0
MSGWrite    db &quot;Die Datei konnte nicht befüllt werden&quot;,0 
MSGErstellt db &quot;Die Datei wurde erstellt. Befüllung läuft....&quot;,0
MSGEnde     db &quot;Die Datei wurde gefüllt&quot;,0
MSGZeiger   db &quot;Der Zeiger konnte nicht bewegt werden&quot;,0
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.data?

Bytes    db ?
Handle   dd ? 
Pointer  dd ?
Point    dd ?

;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.code
start:
    xor     eax, eax
    xor     ebx, ebx
    invoke  CreateFile, addr Datei, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0
    cmp     eax, INVALID_HANDLE_VALUE
    je      NotCreate
    mov     Handle, eax
    invoke  MessageBox, NULL, addr MSGErstellt, addr MSGCaption, MB_OK
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Write:
    ;call    SetFilePos
    ;invoke  MessageBox, NULL, addr Point, addr MSGCaption, MB_OK
    invoke  WriteFile, Handle, addr Daten, 28, addr Bytes, NULL
    cmp     eax, 0
    jne     NotWrite    
    inc     ebx
    cmp     ebx, 3
    jne     Write

    invoke  MessageBox, NULL, addr MSGEnde, addr MSGCaption, MB_OK 
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Exit:
    invoke  CloseHandle, Handle
    invoke  ExitProcess, NULL
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NotCreate:
    invoke  MessageBox, NULL, addr MSGCreate, addr MSGCaption, MB_OK
    jmp Exit
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NotWrite:
    invoke  MessageBox, NULL, addr MSGWrite, addr MSGCaption, MB_OK
    jmp Exit   
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NoPointer:
    invoke  MessageBox, NULL, addr MSGZeiger, addr MSGCaption, MB_OK
    jmp Exit
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SetFilePos:
    invoke  SetFilePointer, Handle, 0, Point, FILE_END
    cmp     eax, INVALID_SET_FILE_POINTER
    je      NoPointer
    mov     Pointer, eax
    ret
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end start
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1629585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629585</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Fri, 12 Dec 2008 17:01:55 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Sat, 13 Dec 2008 15:27:20 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich kenne mich mit 586 asm leider net so aus, aber den pointer aufs ende der Datei also praktisch auf EOF zu setzen war noch nie eine gute idee, probier es doch mal mit EOF-1,</p>
<pre><code class="language-asm">cmp     eax, 0
    jne     NotWrite    
    inc     ebx
    cmp     ebx, 3
    jne     Write
</code></pre>
<p>als Counter ungeignet wenn es nicht die gleichen register sind <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-asm">mov ebx,3
...
counter:
tst ebx              //test if zero
brne Write_string    //brunch if not equal, return after finish
dec ebx              //decrement ebx
jmp counter          //jump to label counter
Exit:
</code></pre>
<p>Vielleicht konnte ich Dir helfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629691</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sat, 13 Dec 2008 15:27:20 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Sat, 13 Dec 2008 10:06:47 GMT]]></title><description><![CDATA[<p>also daran wird es irgendwie nicht gelegen haben. haben den code mal ein bisschen umgebaut:</p>
<pre><code class="language-asm">.data?

Bytes    db ?
Handle   dd ? 
Pointer  dd ?

;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.code
start:
    xor     eax, eax
    xor     ebx, ebx
    invoke  CreateFile, addr Datei, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0
    cmp     eax, INVALID_HANDLE_VALUE
    je      NotCreate
    mov     Handle, eax
    invoke  MessageBox, NULL, addr MSGErstellt, addr MSGCaption, MB_OK
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Write: 
    invoke  WriteFile, Handle, addr Daten, 28, addr Bytes, NULL
    cmp     eax, 0
    jz      NotWrite
    invoke  SetFilePointer, Handle, 0, 0, FILE_END
    inc     ebx
    cmp     ebx, 3
    jne     Write

    invoke  MessageBox, NULL, addr MSGEnde, addr MSGCaption, MB_OK 
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Exit:
    invoke  CloseHandle, Handle
    invoke  ExitProcess, NULL
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NotCreate:
    invoke  MessageBox, NULL, addr MSGCreate, addr MSGCaption, MB_OK
    jmp Exit
</code></pre>
<p>Was mir aber aufgefallen ist, ist folgendes. wenn ich das im debugger laufen lasse pusht der bei der 2 Runde nicht mehr den Handle der datei für die Func SetFilePointer auf den Stack sondern 0.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629838</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Sat, 13 Dec 2008 10:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Sat, 13 Dec 2008 15:50:04 GMT]]></title><description><![CDATA[<p>Der typische Rückgabewert in form des Handles besagt doch normalerweise das alles glatt gelaufen ist, ist der Rückgabewert 0 so ist meist ein Fehler aufgetreten. In diesem Fall schätze ich mal das es sich um einen Zugriffsfehler handelt, ruf mal GetLastError + MsgBox danach auf, unter<br />
<a href="http://msdn.microsoft.com/en-us/library/ms681381.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms681381.aspx</a><br />
findest Du dann die Fehlerbeschreibung.</p>
<p>Hier habe ich noch ein schööönes Beispiel für file io in masm32 für Dich<br />
<a href="http://www.masm32.com/board/index.php?topic=2389.0" rel="nofollow">http://www.masm32.com/board/index.php?topic=2389.0</a></p>
<p>Vlt hilft Dir das ja weiter, greeetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1629971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1629971</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sat, 13 Dec 2008 15:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to DateiStream mit Assembler unter WIN NT(XP) on Mon, 15 Dec 2008 10:22:19 GMT]]></title><description><![CDATA[<p>Super!!!!!!!!!<br />
Das hat geholfen:-)</p>
<p>Danke für deine Antwort und alle anderen natürlich auch;-)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630672</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Mon, 15 Dec 2008 10:22:19 GMT</pubDate></item></channel></rss>