기본적으로 관리 코드에서 사용하기 위해 이전 Windows ISAPI를 설명하는 C # 프로젝트에 HTTPSystemDefinitions.cs 파일이 있습니다.
여기에는 전부가 아니거나 코드에서 사용되는 ISAPI와 관련된 전체 구조 집합이 포함됩니다. 컴파일시 이러한 구조의 모든 필드 멤버는 다음과 같은 경고를 발생시킵니다.
경고 필드 'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader'는 할당되지 않으며 항상 기본값이 null입니다.
또는
경고 'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.HttpStatus'필드는 사용되지 않습니다.
로 비활성화 할 수 있습니까 #pragma warning disable
? 그렇다면 해당 오류 번호는 무엇입니까? 내가 할 수있는 다른 것이 없다면? 이 파일에 대해이 작업을 수행하는 작업 만, 다른 파일에서 이러한 경고를받는 것이 중요합니다.
편집하다
예제 구조체 :-
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)]
메모리 레이아웃이 올바른지 확인해야합니다 (현재 구현에서는이 속성이 없어도되지만 AFAIK는 보장되지 않습니다). 올바르게 기억하면 C # 컴파일러는이 특성의 존재를 감지하고 interop을 위해 필드가 있어야한다는 것을 알고 있으므로 이러한 경고를 자동으로 억제합니다. (나는 이것에 대해 틀릴 수 있으므로 답변 대신 댓글로 게시합니다).
StructLayout
. 경고 자체를 억제하는 것보다 깨끗해 보입니다.