다음을 통해 공유


/error switch

/error 스위치는 생성된 스텁이 런타임에 수행할 오류 검사 유형을 결정합니다.

참고

이 기능은 더 이상 사용되지 않으며 더 이상 지원되지 않습니다. /strong 스위치를 사용하는 것이 좋습니다.

 

midl /error { allocation | stub_data | ref | bounds_check | none | all }

스위치 옵션

할당

midl_user_allocate 메모리 부족 오류를 나타내는 NULL 값을 반환하는지 여부를 확인합니다.

stub_data

서버 쪽에서 구분되지 않는 예외를 catch하고 클라이언트에 다시 전파하는 스텁을 생성합니다.

Ref

런타임에 검사 실행하는 코드를 생성하여 NULL 참조 포인터가 클라이언트 스텁에 전달되지 않도록 하고 있는 경우 RPC_X_NULL_REF_POINTER 예외가 발생합니다.

bounds_check

전송 길이 사양에 대해 적합하고 다양한 배열의 크기를 확인합니다.

없음

오류 검사를 수행하지 않습니다.

모든

모든 오류 검사를 수행합니다. MIDL 버전 5.0에서 적용되며 기본 컴파일러 스위치입니다.

설명

/error 스위치는 생성된 스텁 파일이 수행할 오류 검사 수를 선택합니다. MIDL 버전 5.0부터 적용되며 기본 설정은 /error all입니다.

검사되는 열거형 오류(기본적으로 모든 버전의 MIDL)는 긴 열거 형 형식(32비트 정수)과 짧은 열 거형 형식( 거형의 네트워크 데이터 표현) 및 열거형의 식별자 수가 32,767을 초과하는 경우 발생하는 잘림 오류입니다.

메모리 액세스 오류 검사(모든 버전의 MIDL에서도 기본적으로)는 마샬링 코드에서 버퍼의 끝을 초과하는 포인터와 크기가 0보다 작은 규칙 배열에 대한 것입니다. /error bounds_check 플래그를 사용하여 다른 잘못된 배열 범위를 검사.

/error 할당을 지정할 때 스텁에는 midl_user_allocate 0을 반환할 때 예외를 발생시키는 코드가 포함됩니다.

/error stub_data 옵션을 사용하면 경계를 해제하는 동안 클라이언트 데이터가 서버와 충돌하지 않도록 방지하여 보다 강력한 비마할링 작업 처리 방법을 효과적으로 제공합니다.

Windows 2000에서 적용되는 기본 런타임 NDR 마샬링 엔진은 이러한 검사의 대부분을 수행합니다. 즉, 스텁 생성의 완전히 해석된 모드(/Oi, /Oif) 중 하나를 사용하는 경우 다른 오류 검사 옵션을 선택하면 성능에 현저한 영향을 미치지 않습니다.

예제

midl /error allocation filename.idl

midl /error none filename.idl

추가 정보

일반 MIDL 명령줄 구문

/강력한