<?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[Syntax von WriteFile()]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe Schwierigkeiten mit CreateFile() bzw WriteFile().</p>
<p>Dieses Beispiel legt zwar eine Datei an, die ist aber 0 Byte groß:</p>
<pre><code class="language-cpp">const int GB = pow(2, 30);  //Gigabyte

    string filename = &quot;:/hdbench_file&quot;;  //Name des Benchfile
    filename = partChar + filename;
    int filesize = GB;  //Größe des Benchfile
    HANDLE benchFile = CreateFile(filename.c_str(), 
                                  GENERIC_WRITE | GENERIC_READ, 
                                  FILE_SHARE_READ, 
                                  NULL, 
                                  CREATE_ALWAYS, 
                                  FILE_ATTRIBUTE_NORMAL, 
                                  NULL);
    WriteFile(benchFile, 0, filesize, NULL, NULL);
</code></pre>
<p>während dieses zwar eine Datei mit dem Inhalt 'test' erzeugt, aber es kommt '*.exe funktioniert nicht mehr':</p>
<pre><code class="language-cpp">string test = &quot;test&quot;;
    WriteFile(benchFile, test.c_str(), test.size(), NULL, NULL);
</code></pre>
<p>Also irgendwas scheine ich grundlegend falsch zu machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295802/syntax-von-writefile</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 07:59:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295802.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Nov 2011 03:24:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 03:27:07 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe Schwierigkeiten mit CreateFile() bzw WriteFile().</p>
<p>Dieses Beispiel legt zwar eine Datei an, die ist aber 0 Byte groß:</p>
<pre><code class="language-cpp">const int GB = pow(2, 30);  //Gigabyte

    string filename = &quot;:/hdbench_file&quot;;  //Name des Benchfile
    filename = partChar + filename;
    int filesize = GB;  //Größe des Benchfile
    HANDLE benchFile = CreateFile(filename.c_str(), 
                                  GENERIC_WRITE | GENERIC_READ, 
                                  FILE_SHARE_READ, 
                                  NULL, 
                                  CREATE_ALWAYS, 
                                  FILE_ATTRIBUTE_NORMAL, 
                                  NULL);
    WriteFile(benchFile, 0, filesize, NULL, NULL);
</code></pre>
<p>während dieses zwar eine Datei mit dem Inhalt 'test' erzeugt, aber es kommt '*.exe funktioniert nicht mehr':</p>
<pre><code class="language-cpp">string test = &quot;test&quot;;
    WriteFile(benchFile, test.c_str(), test.size(), NULL, NULL);
</code></pre>
<p>Also irgendwas scheine ich grundlegend falsch zu machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147234</guid><dc:creator><![CDATA[zeropage]]></dc:creator><pubDate>Tue, 22 Nov 2011 03:27:07 GMT</pubDate></item><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 06:01:08 GMT]]></title><description><![CDATA[<p>lpNumberOfBytesWritten ist ein out-Parameter, er will da also was reinschreiben. Wenn du ihm einen Nullzeiger übergibst, ist es kein Wunder, dass es kracht. <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="😉"
    /> Lege eine DWORD-Variable an und übergib ihm die Adresse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147243</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 22 Nov 2011 06:01:08 GMT</pubDate></item><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 06:55:55 GMT]]></title><description><![CDATA[<p>Ok danke. Dann klappt schon mal das untere Beispiel, aber beim oberen wird immer nur noch eine 0 Byte-Datei angelegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147252</guid><dc:creator><![CDATA[zeropage]]></dc:creator><pubDate>Tue, 22 Nov 2011 06:55:55 GMT</pubDate></item><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 07:24:25 GMT]]></title><description><![CDATA[<p>Na ja, du übergibst auch hier einen Nullzeiger. Es kracht wahrscheinlich diesmal nicht, weil der Zeiger auf 0 geprüft wird. Du sollst dort einen Puffer angeben, in dem Daten zum Schreiben sind. Probier doch mal, 10 Bytes in einem Puffer abzulegen und diese in die Datei zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147257</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 22 Nov 2011 07:24:25 GMT</pubDate></item><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 07:52:05 GMT]]></title><description><![CDATA[<p>Meinst Du so?</p>
<pre><code class="language-cpp">int filesize = GB;  //Größe des Benchfile
    int *filebuffer = new int [filesize]; 
    DWORD bytesWritten = 0;

    HANDLE benchFile = CreateFile(filename.c_str(),
                                  GENERIC_WRITE | GENERIC_READ,
                                  FILE_SHARE_READ, 
                                  NULL,
                                  CREATE_ALWAYS,
                                  FILE_ATTRIBUTE_NORMAL,
                                  NULL);
    WriteFile(benchFile, filebuffer, filesize, &amp;bytesWritten, NULL);
</code></pre>
<p>Das klappt nicht.</p>
<p>Das habe ich auch versucht:</p>
<pre><code class="language-cpp">DWORD filesize = GB;  //Größe des Benchfile
    LPCVOID *filebuffer = new LPCVOID [filesize];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2147260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147260</guid><dc:creator><![CDATA[zeropage]]></dc:creator><pubDate>Tue, 22 Nov 2011 07:52:05 GMT</pubDate></item><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 07:54:45 GMT]]></title><description><![CDATA[<p>Ich fürchte, ein Gigabyte Speicher vom Heap anzufordern könnte ein wenig die Kapazitäten des Systems sprengen (und btw sind int oder void* größer als ein Byte). Bei der Größe ist es vermutlich günstiger, die Datei stückweise zu füllen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147262</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Tue, 22 Nov 2011 07:54:45 GMT</pubDate></item><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 08:04:34 GMT]]></title><description><![CDATA[<p>Ohje, damit habe ich gar nicht gerechnet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Eben probiert, und bei 50 und 100 MB werden auch genauso große Dateien angelegt.</p>
<p>Dann danke ich erst mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147266</guid><dc:creator><![CDATA[zeropage]]></dc:creator><pubDate>Tue, 22 Nov 2011 08:04:34 GMT</pubDate></item><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 08:04:57 GMT]]></title><description><![CDATA[<p>Ich meinte 10 Bytes, nicht dass du es mit deinem GB weiter versuchst. <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="😉"
    /> Fange klein an, um zu sehen, ob generell das Schreiben funktioniert. Dann kannst du z.B. mehrere WriteFile-Anweisungen in einer Schleife ausführen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147267</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 22 Nov 2011 08:04:57 GMT</pubDate></item><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 08:19:43 GMT]]></title><description><![CDATA[<p>Jupp, wie gesagt, das ist mir gar nicht in den Sinn gekommen <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="😉"
    /> Und dazu gab es mit file.write() auch bei diesen Größen keine Probleme.</p>
<p>Aber nochmals danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147271</guid><dc:creator><![CDATA[zeropage]]></dc:creator><pubDate>Tue, 22 Nov 2011 08:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 17:08:40 GMT]]></title><description><![CDATA[<p>Habe nochmals ne Frage zu der Größe von einem Byte.</p>
<p>In beiden Fällen wird eine 10 Byte große Datei angelegt und bytesWritten ist auch 10:</p>
<pre><code class="language-cpp">int filesize = 10;  //Größe des Benchfile
    char *filebuffer = new char [filesize];  //Speicher für Benchfile reservieren
    DWORD bytesWritten = 0;

    WriteFile(benchFile, filebuffer, filesize, &amp;bytesWritten, NULL);
</code></pre>
<pre><code class="language-cpp">string text = &quot;0000000000&quot;;  //10 Zeichen
    DWORD bytesWritten = 0;

    WriteFile(benchFile, text.c_str(), text.size(), &amp;bytesWritten, NULL);
</code></pre>
<p>Das klappt auch mit beliebig anderen Größen.</p>
<p>Also kann man doch davon ausgehen, das meine Variable <em>filesize</em> als auch *<em>filebuffer</em> bytegenau ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147445</guid><dc:creator><![CDATA[zeropage]]></dc:creator><pubDate>Tue, 22 Nov 2011 17:08:40 GMT</pubDate></item><item><title><![CDATA[Reply to Syntax von WriteFile() on Tue, 22 Nov 2011 19:02:25 GMT]]></title><description><![CDATA[<p>Sorry, habe noch ne Frage. Irgendwie steige ich nicht so richtig durch die msdn-Dokumentation durch und ich bin zugegeben im Moment auch etwas ungeduldig.</p>
<p>Welcher Parameter bei CreateFile() ist dafür zuständig, ob die Datei erfolgreich angelegt wurde und was liefert er zurück? Also zB wenn ein ungültiger Partitionsbuchstabe angegeben wurde?</p>
<p>EDIT: Ok, Stichwort ist INVALID_HANDLE_VALUE</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147492</guid><dc:creator><![CDATA[zeropage]]></dc:creator><pubDate>Tue, 22 Nov 2011 19:02:25 GMT</pubDate></item></channel></rss>