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.
So ganz verstehe ich dein Problem nicht. Die RegisterDeviceNotification Funktion sollte doch erst dann anschlagen, wenn sich dein Device korrekt angemeldet hat.
for (int i = 0; i < binOut01.Length; i++) {
binOut01[i] += '0';
}
string myString = enc.GetString(binOut01);
Du musst das Handle des AutoResetEvents(=>Property SafeWaitHandle) als letzten Parameter an die FT_SetEventNotification Funktion übergeben.
Schau dir mal die RegisterDeviceNotification Funktion an. Damit kannst du die generischen WM_DEVICECHANGED-Events auf Devices mit einer bestimmten InterfaceClass-Guid eingrenzen.
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.
Flac-Dateien verwenden leider einen anderen Metadaten-Container.
Mit der Bitmap.LockBits - Methode liefert dir einen IntPtr auf die erste ScanLine im Bild.
Und diesen übergibst du einfach an deine Delphi-Methode.
Stichwort =>CustomActions
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.
Schau dir mal die AnimateWindow Funktion an.
Wobei MD5 nichts mit Verschlüsselung zu tun hat...
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.
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.
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.
Für solche Zwecke gibt es das System.Diagnostics.ConditionalAttribute.
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.
@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.
Log doch mal die Installation mit(msiexec /i foo.msi /l*v log.txt), damit du den Fehler eingrenzen kannst.
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.
Ich verstehe dein Problem nicht. KlasseA ist doch - unabhängig vom Typ T - sowieso immer ein Referenztyp. Somit kannst du immer auf null vergleichen.
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
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
);
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);
Log die Installation einmal mit(msiexec /i foo.msi /l*v log.txt), vielleicht bekommst du da mehr raus.
Die Idee mit dem Webservice hatte ich auch gerade, ist sicher eine gute und einfache Möglichkeit.
Danke
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
... 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.
Ein Service ist eben keine Form und hat dementsprechend auch keine Invoke Methode.
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
Properties.Resources.ResourceManager.GetObject("variable car");
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.
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.
Und wie sieht deine C# Deklaration aus?
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.
Ja, weil er vermutlich eine falsche CallingConvention verwendet.
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.
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.
Steht da auch nur "TrickyFunktion" oder etwas in der Art "?TrickyFunction@@xxx"?
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.
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.
Die ServiceController-Klasse bietet warum auch immer keine Möglichkeit Dienste zu erstellen.
Da musst du leider die WinAPI bemühen.
=>Service Functions
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
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
Die SDK Dokumentation die - zumindest der Version 3 von WIX - beiliegt ist schon sehr gut.
*.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.
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
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.
Wieso sollte der Platz ein anderer sein? Vermutlich wird die Variable sowieso weg optimiert und nur in einem Register gehalten.