Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Gibt es eine limitierung an einträgen in Records? (https://www.delphipraxis.net/177740-gibt-es-eine-limitierung-eintraegen-records.html)

EWeiss 25. Nov 2013 08:42

Gibt es eine limitierung an einträgen in Records?
 
Ich hab da ein Problem in Verbindung mit C# und Delphi.

Um die Kompatibilität zwischen verschiedenen Sprachen zu erhalten sind meine Variablen als LongBool ausgelegt.
Boolean funktioniert leider bei VB nicht so kann ich hier ein Long anstelle von Boolean verwenden.

Angeblich soll bedingt durch meine DLL dieser Fehler auftreten.

Zitat:

Der Dienst "hwinterfacex64" wurde aufgrund folgenden Fehlers nicht gestartet:
Die digitale Signatur dieser Datei kann nicht überprüft werden. Möglicherweise wurde durch eine kürzlich durchgeführte Hardware- oder Softwareänderung eine falsch signierte oder beschädigte Datei oder eine Datei, bei der es sich um böswillige Software aus einer unbekannten Quelle handelt, installiert.
und die libusb0.dll welche überhaupt nicht in einen meiner DLL's verwendet wird kann nicht gefunden werden.

Kann es sein das die Einträge in einem Record limitiert sind?

gruss

jaenicke 25. Nov 2013 08:49

AW: Gibt es eine limitierung an einträgen in Records?
 
Das hat mit irgendwelchen programminternen Strukturen rein gar nichts zu tun.

Da stimmt einfach die Signatur des Dienstes oder einer seiner DLLs nicht. Ist deine DLL denn signiert?

EWeiss 25. Nov 2013 08:58

AW: Gibt es eine limitierung an einträgen in Records?
 
Zitat:

Zitat von jaenicke (Beitrag 1237284)
Das hat mit irgendwelchen programminternen Strukturen rein gar nichts zu tun.

Da stimmt einfach die Signatur des Dienstes oder einer seiner DLLs nicht. Ist deine DLL denn signiert?

Nein..
Das ist nur ein Wrapper der die Funktionen von meiner DLL weiterleitet.
Theoretisch kann ich die Classe auch direkt im Projekt einbinden.
Die DLL ist aber nötig da ein Marshalling in VB.NET nicht so ohne weiteres funktioniert. (deshalb habe ich diese auch in C# erstellt)

Damit ich nicht zwei Classen dafür schreiben muss.

Delphi!
Delphi-Quellcode:
  //Definition der Records für die variablen Parameter bei Create bzw. Execute
  //WMP: Handle des Fensters braucht nicht definiert werden, da es bereits beim init mitgegeben wird
  PBASSVIS_EXEC = ^TBASSVIS_EXEC;
  TBASSVIS_EXEC = record
    Pluginfile           : PAnsiChar; // Dateiname des Plugins
                                       // für Sonique, Winamp, BassBox
    AMP_UseOwnW1          : DWORD;    // Flag für Winamp (ownHDC)
    AMP_UseOwnW2          : DWORD;    // Flag für Winamp (ownHDCW2)
    AMP_Moduleindex      : DWORD;    // Modul-index für Winamp
    AMP_UseFakeWindow    : BOOL;     // Create a own Window for WindowMessages
    SON_ParentHandle     : HWND;     // Painthandle für Sonique
    SON_ConfigFile       : PAnsiChar; // Dateiname der Konfiguration für Sonique
    SON_Flags            : DWORD;    // Flags für Sonique
    SON_UseOpenGL        : BOOL;     // Use OpenGL instead of GDI
    SON_ViewportWidth    : integer;  // Stretch Width
    SON_ViewportHeight   : integer;  // Stretch Height
    SON_ShowPrgBar       : BOOL;     // Progressbar anzeigen
    SON_ShowFPS          : BOOL;     // Frames pro Sekunde anzeigen
    SON_UseCover         : BOOL;     // Cover anzeigen
    WMP_PluginIndex      : integer;  // Pluginindex für WMP;
    WMP_PresetIndex      : integer;  // Presetindex für WMP;
    WMP_SrcVisHandle     : HWND;     // ContainerVisHandle für WMP;
    BB_ParentHandle      : HWND;     // Parent Windowhandle
    BB_Flags             : DWORD;    // Flags für BassBox selbe wie Sonique
    BB_ShowFPS           : BOOL;     // Frames pro Sekunde anzeigen
    BB_ShowPrgBar        : BOOL;     // Progressbar anzeigen
    AIMP_PaintHandle     : HDC;      // Painthandle für Aimp2
    AIMP_Flags           : DWORD;    // Flags für Aimp2
    Width, Height        : integer;  // Fensterhöhe und Breite
    Left, Top            : integer;  // Left und Top;
  end;
c#

Code:
    [Serializable, StructLayout(LayoutKind.Sequential)]
    public sealed class BASSVIS_EXEC
    {
      [MarshalAs(UnmanagedType.LPStr)]
      public string PluginFile = string.Empty;
      public int AMP_UseOwnW1;
      public int AMP_UseOwnW2;
      public int AMP_ModuleIndex;
      public bool AMP_UseFakeWindow;
      public IntPtr SON_ParentHandle = IntPtr.Zero;
      [MarshalAs(UnmanagedType.LPStr)]
      public string SON_ConfigFile = string.Empty;
      public BASSVISFlags SON_Flags;
      public bool SON_UseOpenGL;
      public int SON_ViewportWidth;
      public int SON_ViewportHeight;
      [MarshalAs(UnmanagedType.Bool)]
      public bool SON_ShowPrgBar;
      [MarshalAs(UnmanagedType.Bool)]
      public bool SON_ShowFPS;
      [MarshalAs(UnmanagedType.Bool)]
      public bool SON_UseCover;
      public int WMP_PluginIndex;
      public int WMP_PresetIndex;
      public IntPtr WMP_SrcVisHandle = IntPtr.Zero;
      public IntPtr BB_ParentHandle = IntPtr.Zero;
      public BASSVISFlags BB_Flags;
      [MarshalAs(UnmanagedType.Bool)]
      public bool BB_ShowFPS;
      [MarshalAs(UnmanagedType.Bool)]
      public bool BB_ShowPrgBar;
      public IntPtr AIMP_PaintHandle = IntPtr.Zero;
      public BASSVISFlags AIMP_Flags;
      public int Width;
      public int Height;
      public int Left;
      public int Top;
      public BASSVIS_EXEC(string filename)
        {
            this.PluginFile = filename;
        }
    }
Habe BOOL in C# als UnmanagedType gemarshallt da scheint es vielleicht Probleme zu geben
Kann dies ein laden der hwinterfacex64.sys verhindern?
Denke mal nicht.

Nachdem ich diese drei variablen addiert habe
Delphi-Quellcode:
SON_ShowPrgBar : BOOL; // Progressbar anzeigen
SON_ShowFPS : BOOL; // Frames pro Sekunde anzeigen
SON_UseCover : BOOL; // Cover anzeigen
Scheint da irgendetwas nicht mehr zu funktionieren.
Deshalb auch die frage nach dem Limit.

gruss

EWeiss 25. Nov 2013 11:26

AW: Gibt es eine limitierung an einträgen in Records?
 
Sorry das ich das Thema so schnell nach oben hole.

Kann mir denn niemand sagen ob meine DLL (32Bit) das laden von hwinterfacex64.sys verhindert?

gruss

jaenicke 25. Nov 2013 12:30

AW: Gibt es eine limitierung an einträgen in Records?
 
Wenn das deine DLL einbindet und diese nicht signiert ist, wäre das möglich. Denn es steht ja da, dass die Signierung nicht korrekt ist.

Ob es tatsächlich deine DLL ist, die das verhindert, kann man relativ einfach im Process Monitor prüfen. Wenn deine DLL im Zuge des Starts dieses Dienstes nie angefasst wird, kann sie auch nicht die Ursache sein.

EWeiss 25. Nov 2013 12:40

AW: Gibt es eine limitierung an einträgen in Records?
 
Habe den Fehler gefunden.
Nicht bei mir sondern in der Anwendung selbst die meine DLL verwendet.

Es existiert ein Folder namens Plugin dieser sollte eigentlich nur ausschließlich für Winamp Plug-Ins verwendet werden.
Jetzt haben die da aber noch andere DLL's in einem separaten Ordner gelagert. (Für MiniDisplays)
Durch das rekursive Search Flag das auf true geschaltet wurde suchte meine DLL natürlich auch dort nach möglichen Winamp Plug-Ins.
Das hatte zur folge das DLL's geladen wurden welche dieses Interface verwenden.

Das kann dann natürlich nur ins negative gehen.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz