Mam plik HTTPSystemDefinitions.cs w projekcie C #, który zasadniczo opisuje starszy interfejs ISAPI systemu Windows do wykorzystania przez kod zarządzany.
Obejmuje to pełny zestaw struktur związanych z ISAPI, które nie są wszystkie lub które są wykorzystywane przez kod. Podczas kompilacji wszyscy członkowie pola tych struktur powodują ostrzeżenie podobne do następującego: -
Pole ostrzeżenia „UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader” nigdy nie jest przypisane do i zawsze będzie miało swoją domyślną wartość null
lub
Ostrzeżenie Pole „UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.HttpStatus” nigdy nie jest używane
Czy można je wyłączyć za pomocą #pragma warning disable
? Jeśli tak, jakie byłyby odpowiednie numery błędów? Jeśli nie, to czy mogę coś jeszcze zrobić? Pamiętaj, że ja tylko robię to dla tego pliku, ważne jest, żebym zobaczył ostrzeżenia takie jak te pochodzące z innych plików.
Edytować
Przykładowa struktura: -
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)]
należy się upewnić, że układ pamięci jest poprawny (w obecnej implementacji będzie nawet bez tego atrybutu, ale AFAIK nie jest to gwarantowane). Jeśli dobrze pamiętam, kompilator C # wykrywa obecność tego atrybutu i automatycznie pomija te ostrzeżenia, ponieważ wie, że pola muszą być dostępne dla międzyoperacyjnej. (Mogę się mylić, dlatego piszę jako komentarz zamiast odpowiedzi).
StructLayout
. Wydaje się to czystsze niż tłumienie samych ostrzeżeń.