Neues Thema starten

TSE Export und Archivieren

 Hallo,

das Beispielprogramm ist wirklich extrem hilfreich.
Für die Export und Archivierungsaufgaben als TARball sind ja leider keine Programmteile/ beispiele zu sehen. Auch die html Doku gibt da wenig her. Wird es da noch etwas geben oder habe ich das nur übersehen?


Vielen Dank

Stefan


2 Personen haben diese Frage

Ich schliesse mich dem Vorredner an.
Insbesondere würden mich die C# DllImports für die Funktionen und das Callback interessieren.

ich füge mal was ein, bekomme aber einen AccessViolation Error im letzten Block:

Snippet

public delegate uint WormExportTarCallback(IntPtr chunk, int chunkLength, ref IntPtr callbackData);
 
[DllImport("WormAPI.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
private static extern int worm_export_tar(IntPtr context, WormExportTarCallback callback, IntPtr callbackData);


Snippet
 using (fs = File.Create("C:\\temp\\test.tar"))
 {
 
 int result = worm_export_tar(worm_context, MyWormExportTarCallback, Ptr);
 if (result != 0)
 {
 }
 }
 
}
 
 
public uint MyWormExportTarCallback(IntPtr chunk, int chunkLength, ref IntPtr callbackData)
{
 
 byte[] array = new byte[chunkLength];
 Marshal.Copy(chunk, array, 0, chunkLength);
 
 fs.Write(array, 0, chunkLength);
 
 //string s = System.Text.Encoding.ASCII.GetString(array, 0, array.Length);
 
 
 
 return 0;
}
vielleicht kann das ja mal jemand ausprobieren.

Hallo,

Dein Snippet habe ich nach vb.net übersetzt und es wird eine TAR Datei erstellt (hängt an).
Nun ist die TSE so gut wie leer und ich kann nicht sagen wie es aussieht wenn die voll ist. Ist mein erster Callback...und muss erstmal verstehen wie das funktioniert. Also 1000 Dank für das snippet


Ich habe ein Modul mit den Wormklassen. Im WormAccess habe ich die Deklaration


Public fs As IO.FileStream

Public Delegate Function WormExportTarCallback(ByVal chunk As IntPtr, ByVal chunkLength As Integer, ByRef callbackData As IntPtr) As UInteger

 <DllImport("WormAPI.dll", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Ansi)>
Private Shared Function worm_export_tar(ByVal context As IntPtr, ByVal callback As WormExportTarCallback, ByVal callbackData As IntPtr) As Integer
End Function


Ebenfalls als Member von WormAccess

Public Function TarStart() As Int32
    Dim ptr As IntPtr
    Dim result As Integer = worm_export_tar(worm_context, AddressOf MyWormExportTarCallback, ptr)
    If result <> 0 Then
       '??? ToDo
   End If
   Return result
End Function

Private Function MyWormExportTarCallback(ByVal chunk As IntPtr, ByVal chunkLength As Integer, ByRef callbackData As IntPtr) As UInteger
    Dim array As Byte() = New Byte(chunkLength - 1) {}
    Marshal.Copy(chunk, array, 0, chunkLength)
    fs.Write(array, 0, chunkLength)
    'TODO
    Return 0
 End Function


Der Aufruf dann zum Test per Button. Referenz auf WormAccess muss vorhanden sein, hier myWorm

myWorm.fs = IO.File.Create("C:\Temp\xyz.tar")
myWorm.TarStart()
myWorm.fs.Close()


Gruß Stefan


ps. könnte etwas mehr los sein im Forum




tar
(31 KB)
Anmelden oder Registrieren um einen Kommentar zu veröffentlichen