EnglischFranzösischSpanisch

OnWorks-Favicon

pidlp - Online in der Cloud

Führen Sie pidlp im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl pidlp, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


pidl - Ein in Perl geschriebener IDL-Compiler

ZUSAMMENFASSUNG


pidl – Hilfe

pidl [--outputdir[=OUTNAME]] [--includedir DIR...] [--parse-idl-tree] [--dump-idl-tree]
[--dump-ndr-tree] [--header[=AUSGABE]] [--python[=AUSGABE]] [--ndr-parser[=AUSGABE]]
[--client] [--server] [--warn-compat] [--leise] [--verbose] [--template]
[--ws-parser[=AUSGABE]] [--diff] [--dump-idl] [--tdr-parser[=AUSGABE]]
[--samba3-ndr-client[=AUSGABE]] [--samba3-ndr-server[=AUSGABE]] [--typelib=[AUSGABE]]
[ .idl]...

BESCHREIBUNG


pidl ist ein in Perl geschriebener IDL-Compiler, der darauf abzielt, einigermaßen kompatibel mit dem Midl . zu sein
Compiler. IDL ist die Abkürzung für "Interface Definition Language".

pidl kann Stubs für DCE/RPC-Servercode, DCE/RPC-Clientcode und Wireshark generieren
Dissektoren für DCE/RPC-Verkehr.

IDL-Compiler wie pidl nehmen die Beschreibung einer Schnittstelle als Eingabe und verwenden sie, um
Generieren Sie C-Code (obwohl Unterstützung für andere Sprachen später hinzugefügt werden kann), der diese verwenden kann
Schnittstellen, hübsche Druckdaten, die über diese Schnittstellen gesendet werden, oder sogar Wireshark . generieren
Dissektoren, die Daten analysieren können, die von diesen Schnittstellen über das Kabel gesendet werden.

pidl nimmt IDL-Dateien im gleichen Format, das von midl verwendet wird, und konvertiert sie in eine .pidl-Datei
(die die interne Darstellung der Schnittstelle von pidl enthält) und kann dann generieren
welche Ausgabe Sie benötigen. .pidl-Dateien sollten nur für Debugging-Zwecke verwendet werden. Schreiben
Ihre Schnittstellendefinitionen im .idl-Format.

Das Ziel von pidl ist es, einen IDL-Compiler zu implementieren, der während der Entwicklung des RPC verwendet werden kann
Subsystem in Samba (sowohl für Marshalling/Unmarshalling als auch für Debugging-Zwecke).

OPTIONAL


--help
Liste der verfügbaren Optionen anzeigen.

--Version
Pidl-Version anzeigen

--outputdir AUSSENNAME
Ausgabedateien in das angegebene Verzeichnis schreiben. Standardmäßig wird das aktuelle Verzeichnis verwendet.

--inklusiveir DIR
Fügen Sie dem vom Präprozessor verwendeten Suchpfad DIR hinzu. Diese Option kann angegeben werden
mehrmals.

--parse-idl-Baum
Lesen Sie die interne Baumstruktur aus Eingabedateien, anstatt davon auszugehen, dass sie IDL enthalten.

--dump-idl
Generieren Sie eine neue IDL-Datei. Die Datei erhält den Namen OUTNAME.idl.

--Header
Generieren Sie eine C-Header-Datei für die angegebene Schnittstelle. Dateiname ist standardmäßig OUTNAME.h.

--ndr-parser
Generieren Sie eine C-Datei und einen C-Header mit NDR-Parsern. Der Dateiname für den Parser
ist standardmäßig ndr_OUTNAME.c. Der Header-Dateiname ist der Parser-Dateiname mit dem
Erweiterung von .c auf .h geändert.

--tdr-parser
Generieren Sie eine C-Datei und einen C-Header mit TDR-Parsern. Der Dateiname für den Parser
ist standardmäßig tdr_OUTNAME.c. Der Header-Dateiname ist der Parser-Dateiname mit dem
Erweiterung von .c auf .h geändert.

--typelib
Typinformationen in die angegebene Datei schreiben.

--Server
Generieren Sie Boilerplate für den RPC-Server, der die Schnittstelle implementiert. Dateinamen
ist standardmäßig ndr_OUTNAME_s.c.

--Vorlage
Generieren Sie Stubs für einen RPC-Server, der die Schnittstelle implementiert. Ausgabe wird geschrieben
zu stdout.

--ws-Parser
Generieren Sie einen Wireshark-Dissektor (in C) und eine Header-Datei. Der Dissektor-Dateiname
ist standardmäßig packet-dcerpc-OUTNAME.c, während der Header-Dateiname standardmäßig ist
Paket-dcerpc-OUTNAME.h.

Pidl liest zusätzliche Daten aus einer Wireshark-Konformitätsdatei, falls vorhanden. So ein
Die Datei sollte denselben Speicherort wie die IDL-Datei haben, jedoch mit der Erweiterung cf lieber
als idl. Weitere Informationen zum Format finden Sie unter Parse::Pidl::Wireshark::Conformance
Datei.

--diff
Parsen einer IDL-Datei, Generieren einer neuen IDL-Datei basierend auf den internen Datenstrukturen und
Überprüfen Sie, ob es Unterschiede zur ursprünglichen IDL-Datei gibt. Nützlich zum Debuggen
pidl.

--dump-idl-Baum
Weisen Sie pidl an, die interne Baumdarstellung einer IDL-Datei auf die Festplatte zu kopieren. Sinnvoll
zum Debuggen von pidl.

--dump-ndr-tree
Weisen Sie pidl an, den internen NDR-Informationsbaum, den es aus der IDL-Datei generiert hat, zu speichern an
Scheibe. Nützlich für das Debuggen von pidl.

--samba3-ndr-client
Generieren Sie Client-Aufrufe für Samba3, die in rpc_client/ platziert werden. Anstatt auszurufen
zum Code in rpc_parse/ von Samba3, wird stattdessen der NDR-Code von Samba4 aufgerufen.

--samba3-ndr-server
Generieren Sie Serveraufrufe für Samba3, die in rpc_server/ platziert werden. Anstatt anzurufen
zum Code in rpc_parse/ von Samba3, wird stattdessen der NDR-Code von Samba4 aufgerufen.

IDL SYNTAX


IDL-Dateien werden immer mit dem C-Präprozessor vorverarbeitet.

So ziemlich alles in einer Schnittstelle (die Schnittstelle selbst, Funktionen, Parameter) kann
haben Attribute (oder Eigenschaften, wie auch immer Sie sie nennen). Attribute werden immer vorangestellt
das Element, für das sie gelten, und wird von eckigen Klammern ([]) umgeben. Mehrere Attribute
werden durch Kommas getrennt; Argumente für Attribute werden in Klammern angegeben.

Eine Liste der von pidl unterstützten Attribute finden Sie im Abschnitt KOMPATIBILITÄT.

Kommentare im C-Stil können verwendet werden.

KONFORMANT ARRAYS
Ein konformes Array ist eines, das auf [*] oder [] endet. Die seltsamen Dinge über konform
Arrays sind, dass sie nur als letztes Element einer Struktur auftreten können (es sei denn, es gibt a
Zeiger auf das konforme Array) und die Array-Größe erscheint vor dem
strukturieren sich auf dem Draht.

Also in diesem Beispiel:

typedef-Struktur {
langes abc;
lange zählen;
langes Foo;
[size_is(count)] long s[*];
} Struct1;

es sieht so aus:

[Größe_ist] [abc] [Anzahl] [foo] [s...]

Das erste [size_is]-Feld ist die Zuweisungsgröße des Arrays und steht vor dem Array
Elemente und noch vor der Strukturausrichtung.

Beachten Sie, dass Größe_ist() kann sich auf eine Konstante beziehen, aber das ändert nichts am Draht
Darstellung. Es macht das Array nicht zu einem festen Array.

midl.exe würde das obige Array als folgenden C-Header schreiben:

typedef-Struktur {
langes abc;
lange zählen;
langes Foo;
langes s[1];
} Struct1;

pidl geht einen anderen Ansatz und schreibt es so:

typedef-Struktur {
langes abc;
lange zählen;
langes Foo;
lang *s;
} Struct1;

VIELFÄLTIG ARRAYS
Ein variierendes Array sieht so aus:

typedef-Struktur {
langes abc;
lange zählen;
langes Foo;
[size_is(count)] long *s;
} Struct1;

Auf dem Draht sieht das so aus:

[abc] [Anzahl] [foo] [PTR_s] [Anzahl] [s...]

FIXED ARRAYS
Ein festes Array sieht so aus:

typedef-Struktur {
langes s[10];
} Struct1;

Die NDR-Darstellung sieht aus wie 10 separate lange Deklarationen. Die Array-Größe ist
nicht auf dem Draht kodiert.

pidl unterstützt auch "Inline"-Arrays, die nicht Teil des IDL/NDR-Standards sind. Diese sind
so deklariert:

typedef-Struktur {
uint32 foo;
uint32-Zählung;
uint32-Leiste;
langes s[Anzahl];
} Struct1;

Dies sieht so aus:

[foo] [count] [bar] [s...]

Feste Arrays sind eine Erweiterung, die hinzugefügt wurde, um einige der seltsamen eingebetteten Strukturen in zu unterstützen
Sicherheitsbeschreibungen und Spools.

Dieser Abschnitt ist keineswegs vollständig. Siehe die OpenGroup- und MSDN-Dokumentation für
zusätzliche Information.

KOMPATIBILITÄT MIT MITTEL


Vermisst Funktionen in pidl
Die folgenden MIDL-Features sind (noch) nicht in pidl implementiert oder werden mit einem
inkompatible Schnittstelle:

· Asynchrone Kommunikation

· Typelibs (.tlb-Dateien)

· Datagramm-Unterstützung (ncadg_*)

Unterstützte Attribute und Aussagen
in, out, ref, length_is, switch_is, size_is, uuid, case, default, string, unique, ptr,
pointer_default, v1_enum, Objekt, Helpstring, Bereich, lokal, call_as, Endpunkt,
switch_type, progid, coclass, iid_is, represent_as, send_as, import, include,
cpp_quote.

PIDL spezifische immobilien
Öffentlichkeit
Die Eigenschaft [public] einer Struktur oder Union ist eine pidl-Erweiterung, die die
generierte Pull/Push-Funktionen nicht statisch sein. Auf diese Weise können Sie Typen deklarieren, die
kann zwischen Modulen verwendet werden. Wenn Sie [public] nicht angeben, dann Pull/Push-Funktionen
für andere als Top-Level-Funktionen werden statisch deklariert.

kein Druck
Die Eigenschaft [noprint] ist eine pidl-Erweiterung, mit der Sie angeben können, dass pidl
keine ndr_print_*()-Funktion für diese Struktur oder Union generieren. Dies wird verwendet, wenn
Sie möchten eine eigene Druckfunktion definieren, die eine Struktur schöner druckt.
Ein gutes Beispiel ist die Verwendung von [noprint] auf dom_sid, die das hübsche Drucken von . ermöglicht
SIDs.

Wert
Die Eigenschaft [value(expression)] ist eine Pidl-Erweiterung, mit der Sie die
Wert eines Feldes, wenn es auf den Draht gelegt wird. Dies ermöglicht Felder, die immer a . haben
bekannter Wert, der automatisch ausgefüllt wird, wodurch die API programmierfähiger wird
freundlich. Der Ausdruck kann ein beliebiger C-Ausdruck sein.

relativ
Die Eigenschaft [relative] kann auf einem Zeiger bereitgestellt werden. Wenn es verwendet wird, erklärt es die
Zeiger als spulenloser "relativer" Zeiger, d. h. er erscheint auf dem Draht als
ein Versatz innerhalb der aktuellen Kapselungsstruktur. Das ist nicht normal
IDL/NDR, aber es ist eine sehr nützliche Erweiterung, da es die manuelle Codierung vieler vermeidet
komplexe Strukturen.

Unterkontext (Länge)
Gibt an, dass eine Größe von Länge Bytes gelesen werden sollen, gefolgt von einem Blob dieser Größe,
die als NDR geparst werden.

Unterkontext() ist jetzt veraltet und sollte nicht in neuem Code verwendet werden. Verwenden Sie stattdessen
repräsentieren_as() or send_as().

Flagge
Geben Sie boolesche Optionen an, die hauptsächlich für NDR-Optionen auf niedriger Ebene verwendet werden. Mehrere Optionen können sein
angegeben mit | Charakter. Beachten Sie, dass Flags von Unterstrukturen vererbt werden!

diskriminierungsfrei
Die Eigenschaft [nodiskriminant] einer Union bedeutet, dass die übliche uint16-Diskriminierung
Feld am Anfang der Vereinigung auf dem Draht entfällt. Das ist normalerweise nicht erlaubt
in IDL/NDR, wird aber für einige spoolss-Strukturen verwendet.

Zeichensatz (Name)
Geben Sie an, dass das Array oder die Zeichenfolge den angegebenen Zeichensatz verwendet. Wenn dieses Attribut ist
angegeben, kümmert sich pidl um die Konvertierung der Zeichendaten aus diesem Format in
das Hostformat. Häufig verwendete Werte sind UCS2, DOS und UTF8.

Ungestützt MITTEL immobilien or Aussagen
aggregierbar, appobject, async_uuid, bindbar, control, defaultbind, defaultcollelem,
defaultvalue, defaultvtable, dispinterface, displaybind, dual, Eintrag, first_is,
helpcontext, helpfile, helpstringcontext, helpstringdll, versteckt, idl_module, idl_quote,
id, unmittelbarbind, importlib, includelib, last_is, lcid, lizensiert, max_is, Modul,
ms_union, no_injected_text, nicht durchsuchbar, nicht erstellbar, nicht erweiterbar, odl, oleautomation,
optional, pragma, propget, propputref, propput, schreibgeschützt, angefordert, eingeschränkt, retval,
Quelle, Uidefault, Usesgetlasterror, Vararg, Vi_progid, Wire_marshal.

Beispiele:


# Generieren eines Wireshark-Parsers
$ ./pidl --ws-parser -- atsvc.idl

# Generieren eines TDR-Parsers und -Headers
$ ./pidl --tdr-parser --header -- regf.idl

# Generieren eines Samba3-Clients und -Servers
$ ./pidl --samba3-ndr-client --samba3-ndr-server --dfs.idl

# Generieren eines Samba4-NDR-Parsers, -Clients und -Servers
$ ./pidl --ndr-parser --ndr-client --ndr-server --samr.idl

Verwenden Sie pidlp online mit den onworks.net-Diensten


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

  • 1
    FreeRTOS Echtzeit-Kernel (RTOS)
    FreeRTOS Echtzeit-Kernel (RTOS)
    FreeRTOS ist eine marktführende Echtzeit
    Betriebssystem (RTOS) für
    Mikrocontroller und klein
    Mikroprozessoren. Frei verteilt
    unter der MIT-Open-Source-Lizenz ...
    FreeRTOS Real Time Kernel (RTOS) herunterladen
  • 2
    Avogadro
    Avogadro
    Avogadro ist ein fortschrittliches Molekül
    Editor für den plattformübergreifenden Einsatz
    in Computerchemie, Molekular
    Modellierung, Bioinformatik, Materialien
    Wissenschaft und ...
    Avogadro herunterladen
  • 3
    XMLTV
    XMLTV
    XMLTV ist eine Reihe von Programmen, die verarbeitet werden müssen
    TV-Listen (tvguide) und Hilfe bei der Verwaltung
    Ihre TV-Anzeige, Speichern von Einträgen in einem
    XML-basiertes Format. Es gibt Dienstprogramme zu
    tun...
    XMLTV herunterladen
  • 4
    streikr
    streikr
    Strikr Free Software-Projekt. Artefakte
    veröffentlicht unter einem "intent based"
    Doppellizenz: AGPLv3 (Community) und
    CC-BY-NC-ND 4.0 international
    (Werbung)...
    Laden Sie strikr herunter
  • 6
    GIFLIB
    GIFLIB
    giflib ist eine Bibliothek zum Lesen und
    gif-bilder schreiben. Es ist API und ABI
    kompatibel mit libungif, das in war
    breite Verwendung während der LZW-Komprimierung
    Algorithmus war ...
    Laden Sie GIFLIB herunter
  • Mehr »

Linux-Befehle

Ad