Laden...
M
Benutzerbeschreibung

Forenbeiträge von marsgk Ingesamt 1.439 Beiträge

29.07.2009 - 21:26 Uhr

Ich muss von dem AutoResetEvent Handle ein pointer erzeugen den ich dann an FT_SetEventNotification übergebe.

Nein, du musst nur deine Deklaration von FT_SetEventNotification ändern 😉
Letzten Parameter auf SafeWaitHandle ändern und entsprechend das SafeWaitHandle vom AutoResetEvent übergeben.

29.07.2009 - 14:14 Uhr

So ganz verstehe ich dein Problem nicht. Die RegisterDeviceNotification Funktion sollte doch erst dann anschlagen, wenn sich dein Device korrekt angemeldet hat.

29.07.2009 - 14:12 Uhr

for (int i = 0; i < binOut01.Length; i++) {
    binOut01[i] += '0';
}
string myString = enc.GetString(binOut01);

29.07.2009 - 14:06 Uhr

Du musst das Handle des AutoResetEvents(=>Property SafeWaitHandle) als letzten Parameter an die FT_SetEventNotification Funktion übergeben.

28.07.2009 - 09:39 Uhr

Schau dir mal die RegisterDeviceNotification Funktion an. Damit kannst du die generischen WM_DEVICECHANGED-Events auf Devices mit einer bestimmten InterfaceClass-Guid eingrenzen.

25.07.2009 - 23:40 Uhr

Pack alle Strings einer Datenquelle in ein Dictionary bzw. HashSet und überprüfe dann für jeden String aus der anderen Datenquelle, ob dieser im HashSet vorhanden ist.
Dürfte bedeutend schneller gehen.

24.07.2009 - 10:48 Uhr

Flac-Dateien verwenden leider einen anderen Metadaten-Container.

24.07.2009 - 10:43 Uhr

Mit der Bitmap.LockBits - Methode liefert dir einen IntPtr auf die erste ScanLine im Bild.
Und diesen übergibst du einfach an deine Delphi-Methode.

24.07.2009 - 10:34 Uhr

Stichwort =>CustomActions

24.07.2009 - 10:16 Uhr

Eventuell liegt es an den bools. Diese können 1 - 4 Bytes an Platz belegen. Schau dir die genaue Definition im Header-File an und setz das entsprechende MarshalAs-Attribut.

24.07.2009 - 10:09 Uhr

Schau dir mal die AnimateWindow Funktion an.

23.07.2009 - 09:00 Uhr

=>SetupAPI

23.07.2009 - 08:58 Uhr

Wobei MD5 nichts mit Verschlüsselung zu tun hat...

19.07.2009 - 15:03 Uhr

Hallo,

Allein das User Manual vom AT91SAM7S und das ARM Architecture Reference Manual haben zusammen knapp 2000 Seiten, also nichts was man mal so nebenbei macht.
Du kannst ja mit dem Z80 (Sega, GameBoy) anfangen ist sicher einfacher.

19.07.2009 - 14:50 Uhr

Du kannst mit dem USB Host Controller Driver per DeviceIOControl kommunizieren.
Hier eine Liste mit den User Mode IOCTLs:
http://msdn.microsoft.com/en-us/library/aa476228.aspx
IOCTL_USB_HCD_DISABLE_PORT hört sich sehr vielversprechend an.

19.07.2009 - 02:00 Uhr

Vergiss es wieder, selbst wenn du es schaffst die ARMv4T Architektur zu emulieren - was sicher nicht einfach wird, da mehrere Interrupts, zwei Befehlssätze, Coprozessor Interface, ... - so musst du, um mehr als nur simple Zähl-Schleifen zu emulieren, die Peripherals (Interrupt Controller, Power Controller, Timer, Serielle Interfaces, USB, ADC, ...) ebenfalls nachbilden.
Und selbst wenn du das alles schaffst, so musst du dir noch was einfallen lassen um die externe Hardware(Motoren, Sensoren, ...) mit deinem Emulator zu verbinden/steuern.

19.07.2009 - 01:25 Uhr

Für solche Zwecke gibt es das System.Diagnostics.ConditionalAttribute.

17.07.2009 - 13:51 Uhr

Schaut ja mal nicht so verkehrt aus.

Übergibst du auch den richtigen ADevice-Wert an die Funktion?
Ansonsten zeig mal die Header-Datei der Dll her.

17.07.2009 - 13:45 Uhr

@diana
Du musst dein x64 msi natürlich auf auch auf einem 64-Bit Betriebssystem ausführen, ansonsten wirst du auch im Log bis auf die Fehlermeldung nicht viel zu sehen bekommen.
Nein die Windows Installer Version ist nicht so wichtig, VS stellt hier keine großen Anforderungen, und falls doch würdest du beim Starten der Installation sofort eine Fehlermeldung bekommen.

17.07.2009 - 11:19 Uhr

Log doch mal die Installation mit(msiexec /i foo.msi /l*v log.txt), damit du den Fehler eingrenzen kannst.

16.07.2009 - 13:43 Uhr

Du hast die Datei test ja bereits geöffnet(FileStream Response = File.Create("test")), sobald du versuchst die Datei ein zweites mal zu öffnen, schlägt dies natürlich fehl.

16.07.2009 - 13:19 Uhr

Ich verstehe dein Problem nicht. KlasseA ist doch - unabhängig vom Typ T - sowieso immer ein Referenztyp. Somit kannst du immer auf null vergleichen.

15.07.2009 - 21:32 Uhr

Habe bestimmt schon 4h gegoogelt und nichts gefunden...?

Wo und wie hast du denn da gesucht...
=>http://msdn.microsoft.com/en-us/library/ms682512%28VS.85%29.aspx

15.07.2009 - 08:30 Uhr

Btw.: Vergiss nicht das SafeHandle in einen using Block zu tun, bzw. am Ende deiner Methode zu schließen(SafeHandle.Close()).

Du kannst auch mal folgende Deklaration ausprobieren, dann ersparst du dir das manuelle anlegen von Byte-Arrays:


[DllImport("Kernel32.dll", SetLastError = true)]
private static extern bool DeviceIoControl(SafeFileHandle hDevice,
        uint dwIoControlCode,
        [In][MarshalAs(LPWStr)]string InBuffer,
        int nInBufferSize,
        [Out][MarshalAs(LPStr)]StringBuilder OutBuffer,
        int nOutBufferSize,
        out int pBytesReturned,
        IntPtr overlapped
    );

14.07.2009 - 22:53 Uhr

Hallo!

Probier einmal folgende Deklaration:


[DllImport("Kernel32.dll", SetLastError = true)]
private static extern bool DeviceIoControl(SafeFileHandle hDevice,
        uint dwIoControlCode, 
        [In] byte[] InBuffer,
        int nInBufferSize,
        [Out] byte[] OutBuffer,
        int nOutBufferSize,
        out int pBytesReturned,
        IntPtr overlapped
    );

Aufruf:


byte[] inBuffer = Encoding.Unicode.GetBytes("Hello World\0");
byte[] outBuffer = new byte[4096];
int bytesReturned;

if (!DeviceIoControl(handle, myIOCtl, inBuffer, inBuffer.Length, outBuffer, outBuffer.Length, out bytesReturned, IntPtr.Zero)) {
    throw new Win32Exception(Marshal.GetLastError());
}
string result = Encoding.Default.GetString(outBuffer, 0, bytesReturned);

08.07.2009 - 14:07 Uhr

Log die Installation einmal mit(msiexec /i foo.msi /l*v log.txt), vielleicht bekommst du da mehr raus.

08.07.2009 - 12:34 Uhr

Die Idee mit dem Webservice hatte ich auch gerade, ist sicher eine gute und einfache Möglichkeit.

Danke

08.07.2009 - 12:11 Uhr

Hallo,

wir wollen uns in userer Firma von Verisign ein Code Singing Zertifikat zulegen. Da dieses Zertifikat mehrere Entwickler verwenden sollen, stellt sich mir die Frage, wie wir das Zertifikat verteilen sollen.
Was ich vermeiden möchte ist, dass jeder Entwickler eine lokale Kopie des Zertifikates hat, da mir das zu unsicher ist.
Ist es möglich das Zertifikat auf einem "Server" zu speichern und die Entwickler können zum Signieren der Programme auf diesen Server zugreifen, bzw. der Server signiert die Programme?

Grüße,
Georg

05.07.2009 - 02:08 Uhr

... warum sollte es nicht gehen? Oben wurde doch schon gesagt, wie es gehen würde.

Man kann zwar eine zweite AppDomain erstellen, diese läuft aber im selben Prozess wie der eigentliche Loader.
Kurzum mit .Net und oder der WinAPI ist es nicht ohne weiteres möglich einen zweiten Prozess zu erzeugen ohne die auszuführende Anwendung zumindest temporär auf der Festplatte zu speichern.

03.07.2009 - 12:50 Uhr

Ein Service ist eben keine Form und hat dementsprechend auch keine Invoke Methode.

03.07.2009 - 12:14 Uhr

Das geht mit .Net nicht.
Du kannst dir natürlich deinen eigenen Loader oder ähnliches schreiben. Die Frage ist nur wie viel Aufwand du investieren möchtest.
Such einfach mal nach Software Protection, PE Loader

03.07.2009 - 09:48 Uhr

Properties.Resources.ResourceManager.GetObject("variable car");

02.07.2009 - 22:59 Uhr

Vista wird mit Version 4.0 ausgeliefert. Du kannst auch einfach bei Start->Ausführen msiexec eingeben, dann bekommst du die Version angezeigt.
Ich habe bisher mit dem VS Setup Projekt auch nur schlechte Erfahrungen in Bezug auf Vista gemacht, und bin deshalb auf WIX umgestiegen.
Log die Installation unter Vista mit(msiexec /i foo.msi /l*v log.txt), eventuell erfährst du dann, warum keine Shortcuts angelegt werden.

02.07.2009 - 12:17 Uhr

Ah, das habe ich übersehen.

Warum hast du Parameter va4 als double deklariert? Laut Beschreibung sollte es ein int sein.
Bei bool musst du aufpassen kann 8 bzw. 32 Bits haben, meistens aber 32.

02.07.2009 - 11:41 Uhr

Und wie sieht deine C# Deklaration aus?

02.07.2009 - 10:57 Uhr

Zeig doch mal die Definition der C Funktion und wie du bisher versucht hast diese einzubinden.
Vermutlich stimmen die Parameter nicht überein und deshalb hat .Net die Funktion nicht gefunden.

02.07.2009 - 10:36 Uhr

Ja, weil er vermutlich eine falsche CallingConvention verwendet.

02.07.2009 - 10:20 Uhr

Kanst ansonsten auch direkt über die Adresse (0x00005170) die funktion aufrufen. Benutze die Marshal Klasse um den Zeiger in ein Delegate zu legen.

Das ist nicht nötig, einfach bei DllImport das EntryPoint Feld auf den exakten Namen setzten.

02.07.2009 - 10:11 Uhr

Was hast du beim DllImport als CallingConvention angegeben? Bin mir jetzt nicht sicher, ob .Net das auflösen kann.
Wie sieht es mit den anderen Funktionen aus, welche die Dll exportiert, sehen die ähnlich aus?
Ansonsten beim DllImport mit Entrypoint den exakten Namen, wie ihn dir DependencyWalker anzeigt verwenden.

02.07.2009 - 09:58 Uhr

Steht da auch nur "TrickyFunktion" oder etwas in der Art "?TrickyFunction@@xxx"?

02.07.2009 - 09:39 Uhr

Hallo,

EntryPointNotFoundException bedeutet der Name "TrickyFunction" wurde in der Dll nicht exportiert.
Wenn es sich um eine C++ Dll Handelt hat der Entwickler vermutlich vergessen ein extern "C" vor die Funktion zu schreiben.
Schau dir mit z.B. Dependency Walker an, welche Funktionen die Dll exportiert.

23.06.2009 - 11:59 Uhr

Danke für eure Antworten.

Joomla! ist mir schon etwas zu mächtig.
WordPress klingt ganz interessant, werde ich einmal ausprobieren.
Bei DokuWiki bin ich mir nicht sicher, ob mir die Struktur(=Wiki) gefällt, aber danke für den Hinweis.

23.06.2009 - 11:55 Uhr

Die ServiceController-Klasse bietet warum auch immer keine Möglichkeit Dienste zu erstellen.
Da musst du leider die WinAPI bemühen.
=>Service Functions

23.06.2009 - 10:57 Uhr

Hallo!

Ich suche ein einfaches Content-Management-System auf PHP/MySQL Basis um meine Projekte, die derzeit nur auf meiner Festplatte, liegen zu veröffentlichen.
Das CMS sollte einfach zu installieren und zu bedienen sein. Ich brauche auch keine Features wie Foren, Zugriffskontrolle, Benutzerverwaltung, etc.

Vielen Dank

18.06.2009 - 22:47 Uhr

Bietet .NET eine solche Datenstruktur oder muss ich mir diese selbst bauen?

Die .Net Klassenbibliothek bietet die Queue<T> Klasse, welche als Ringpuffer implementiert ist. Allerdings ist diese Klasse in der Funktionalität sehr eingeschränkt. So gibt es keine (performante) Möglichkeit auf ein beliebiges Objekt im Puffer zuzugreifen. Dadurch ist die Queue Klasse als Backend für die ListView im VirtualMode nicht geeignet.
Allerdings ist ein Ringpuffer - wie JAck30lena bereits gesagt hat - sehr schnell implementiert(siehe Wikipedia).

Grüße

18.06.2009 - 14:05 Uhr

Die SDK Dokumentation die - zumindest der Version 3 von WIX - beiliegt ist schon sehr gut.

18.06.2009 - 10:05 Uhr

*.Net Remoting mit IPC-Channel *Oder Pipes direkt benutzen *WM_COPYDATA wenn der andere Prozess eine GUI hat *Files *...

Wenn du deine Anforderungen genauer beschreibst, kann man dir sicher besser helfen.

17.06.2009 - 22:48 Uhr

Hallo!
*Speichere deine Daten in einer geeigneten Datenstruktur. Ein Ringpuffer mit fester Kapazität dürfte hier am geeignetsten sein. *Verwende die ListView im VirtualMode.

Damit habe ich bisher sehr gute Erfahrungen gemacht, auch bei sehr vielen Einträgen(mehrere tausend Einträge pro Sekunde, bis max. 1000000 Einträge gespeichert).

Grüße

17.04.2009 - 15:43 Uhr

Dein Verständnis vom Stack ist etwas falsch. Um eine Variable zu lesen, muss der Compiler kein Push/Pop einfügen. Dein Programm kann wahlfrei auf sämtliche Stackpositionen zugreifen, da der Stack ja auch nur im normalen Arbeitsspeicher liegt.

Edit: Ok, du meinst den Evaluation Stack, da arbeitet man mit load and pop. Aber natürlich wird dieser zur Laufzeit in entsprechenden Maschinencode umgewandelt.

17.04.2009 - 15:30 Uhr

Wieso sollte der Platz ein anderer sein? Vermutlich wird die Variable sowieso weg optimiert und nur in einem Register gehalten.