Ich habe eine HTTPSystemDefinitions.cs-Datei im C # -Projekt, die im Grunde die älteren Windows-ISAPI für den Verbrauch durch verwalteten Code beschreibt.
Dies umfasst den vollständigen Satz von Strukturen, die für die ISAPI relevant sind, nicht alle oder die vom Code verbraucht werden. Bei der Kompilierung verursachen alle Feldmitglieder dieser Strukturen eine Warnung wie die folgende: -
Das Warnfeld 'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader' wird niemals zugewiesen und hat immer den Standardwert null
oder
Warnung Das Feld 'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.HttpStatus' wird niemals verwendet
Können diese mit deaktiviert werden #pragma warning disable
? Wenn ja, wie lauten die entsprechenden Fehlernummern? Wenn nicht, kann ich noch etwas tun? Denken Sie daran, dass ich nur weiß, was ich für diese Datei tun soll. Es ist wichtig, dass ich Warnungen wie diese aus anderen Dateien sehe.
Bearbeiten
Beispielstruktur: -
struct HTTP_FILTER_PREPROC_HEADERS
{
//
// For SF_NOTIFY_PREPROC_HEADERS, retrieves the specified header value.
// Header names should include the trailing ':'. The special values
// 'method', 'url' and 'version' can be used to retrieve the individual
// portions of the request line
//
internal GetHeaderDelegate GetHeader;
internal SetHeaderDelegate SetHeader;
internal AddHeaderDelegate AddHeader;
UInt32 HttpStatus; // New in 4.0, status for SEND_RESPONSE
UInt32 dwReserved; // New in 4.0
}
[StructLayout(LayoutKind.Sequential)]
sicherstellen, dass das Speicherlayout korrekt ist (in der aktuellen Implementierung ist es sogar ohne dieses Attribut, aber AFAIK ist nicht garantiert). Wenn ich mich richtig erinnere, erkennt der C # -Compiler das Vorhandensein dieses Attributs und unterdrückt diese Warnungen automatisch, da er weiß, dass Felder für die Interop vorhanden sein müssen. (Ich könnte mich irren und daher als Kommentar statt als Antwort posten).
StructLayout
. Es scheint sauberer zu sein, als die Warnungen selbst zu unterdrücken.