Gelegentlich zeigt Ihr Computer möglicherweise eine schwerwiegende Fehlermeldung an, die besagt, dass Flash Builder kaum installiert ist. Dieser Fehler kann viele Gründe haben.
Genehmigt: Fortect
Präsentation
Ich habe kürzlich an einer kleinen Anwendung gearbeitet, die sich normalerweise mit aktiven DFÜ-Verbindungen befasste. Das DFÜ-Netzwerk muss vom Windows-Remotezugriffsdienst (RAS) bereitgestellt werden und wird hauptsächlich für die Verbindung mit dem Internet über ein Modem verwendet. Ich habe versucht, normalerweise die Funktion RasEnumConnections
zu verwenden, wenn Sie aktive DFÜ-Verbindungen einrichten müssen, um eine generische Übernahme für die weitere Verarbeitung zu erhalten. Leider hat die Funktion unabhängig von einfachen Compilereinstellungen in Win2k Professional immer 632 rasconn
ausgegeben, was “ungültige Umrissgröße” bedeutet. Beim Durchsuchen des Internets und der CodeProject-Webseiten stellte ich fest, dass viele von uns denselben Effekt bemerkten und es daher keine Problemumgehung gab. Das Ziel dieses Artikels ist es, diesen stressigen Fehler weitestgehend zu beheben.
Um herauszufinden, warum die Funktion das jetzt nicht konnte, habe ich Schritt für Schritt alle Interna dieser Funktion durchgesehen und festgestellt, dass die Operation andere Rahmenspezifikationen RASCONN
erwartet (dh die Strukturversion ). aber um Sie zu erhalten, war der flache Wert sizeof (RASCONN)
. Beste Übereinstimmungen seit 0x53c war. Ich habe diese Tatsachenfunktion verwendet, um die Funktion auszutricksen, indem ich 0x53c als Größe unserer Struktur RASCONN
vorschlug. Es funktionierte! Der folgende Code ist ein sehr Programm, das eine DFÜ-Verbindung auflistet und beendet.
Fortect ist das weltweit beliebteste und effektivste PC-Reparaturtool. Millionen von Menschen vertrauen darauf, dass ihre Systeme schnell, reibungslos und fehlerfrei laufen. Mit seiner einfachen Benutzeroberfläche und leistungsstarken Scan-Engine findet und behebt Fortect schnell eine breite Palette von Windows-Problemen - von Systeminstabilität und Sicherheitsproblemen bis hin zu Speicherverwaltung und Leistungsengpässen. Der Dumme ist, Beispielsweise sieht der gemäß dem MSDN-Aufruf für RasEnumConnections geschriebene Code wie folgt aus: RasConn.dwSize = cb Sizeof (RASCONN); Gibt zur Laufzeit immer ERROR_INVALID_SIZE (632) zurück. Also habe ich auch gegoogelt, jemand von Said Code behebt diesen Nachteil. Es ist notwendig, RasConn.dwSize tatsächlich auf 0x53c zu schreiben. Auf einer anderen Seite sollte es nach Wunsch 0x19c aussehen und ich habe es versucht. Aber ich verstehe nicht warum? Eine andere MSDN-Erklärung ist, dass Sie WINVER je nach Version überschreiben und dann zusätzlich neu kompilieren möchten, um auf verschiedenen Windows-Versionen zu arbeiten. EINZIGARTIGE Ausführungsform gefunden #if (WINVER> impliziert 0x400) Dann betrage die Größe unterschiedlicher WINVER, Der Win2k-RasEnumConnections-Code wird dann häufig gerundet, um eine bestimmte Gesamtgröße von 0x2B4 und 0x19c zu verarbeiten, und für andere Größen wird der Fehler 632 gefunden. Der Win2003 RasEnumConnections-Austausch kann diese vier Größen verarbeiten, und danach wird Fehler 632 nur zurückgegeben, wenn die oben genannten fast vier Größen überhaupt nicht verfügbar sind. Wenn ich so darüber nachdenke, habe ich alles. Ich habe VS2003 verwendet, um aDieses Paket hat WINVER nicht definiert. Standardmäßig ist der Compiler zweifellos auf 0x501 eingestellt, also bedeutet sizeof (RASCONN) 0x2c0, und ich führe das Programm unter zweitausend aus und profitiere von Fehler 632. Wenn also jemand die Versionsinformationen nicht verwenden möchte, schreiben Sie einfach RasConn . dwSize für 0x19c später. und alles kann überall verwendet werden. Genehmigt: Fortect
dwSize
bei 0x53c gleich zu machen. Beachten Sie, dass der größte Teil von 0x53c nicht so lang ist wie sizeof (RASCONN)
, sodass der Speicher nicht beschädigt werden kann.
RASCONN RasConn;
DWORD cb;
Joins DWORD = 0;
= DWORD nRet = RasEnumConnections (& RasConn, & db, & Connections);
DWORD dwSize;
AVA HRASCONN hrasconn;
SYMBOL szEntryName [RAS_MaxEntryName + 1];
CHAR szDeviceType [RAS_MaxDeviceType + zwei];
SYMBOL szDeviceName [RAS_MaxDeviceName + spezifisch];
# endif
#if (WINVER> = 0x401)
CHAR szPhonebook [MAX_PATH]; DWORD DWORD
dwSubEntry;
#endif
#if (WINVER> ist gleich 0x500)
GUID guidEntry;
#endif
#if (WINVER> bedeutet 0x501)
DWORD dwFlags;
FLÜSSIG FLÜSSIG;
#endif
;
WINDOWSNT4.0 (0x400) 0x19c
0x2A4
windows9x / me WINDOWS2k 0x2B4
WINDOWSxp 2003 0x2C0