CA2149: 투명한 메서드는 네이티브 코드를 호출해서는 안 됩니다.
항목 | 값 |
---|---|
RuleId | CA2149 |
범주 | Microsoft.Security |
주요 변경 내용 | 주요 변경 |
원인
메서드가 P/Invoke와 같은 메서드 스텁을 통해 네이티브 함수를 호출합니다.
참고 항목
이 규칙은 더 이상 사용되지 않습니다. 자세한 내용은 사용되지 않는 규칙을 참조하세요.
규칙 설명
이 규칙은 P/Invoke 등을 통해 네이티브 코드를 직접 호출하는 투명 메서드에 적용됩니다. 이 규칙을 위반하면 수준 2 투명도 모델에서 MethodAccessException이 발생하고, 수준 1 투명도 모델에서 UnmanagedCode에 대한 전체 요청이 발생합니다.
위반 문제를 해결하는 방법
이 규칙의 위반 문제를 해결하려면 네이티브 코드를 호출하는 메서드를 SecurityCriticalAttribute 또는 SecuritySafeCriticalAttribute 특성으로 표시합니다.
경고를 표시하지 않는 경우
이 규칙에서는 경고를 표시해야 합니다.
예제
using System;
using System.Runtime.InteropServices;
namespace TransparencyWarningsDemo
{
public class CallNativeCodeClass
{
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool Beep(uint dwFreq, uint dwDuration);
public void CallNativeMethod()
{
// CA2149 violation - transparent method calling native code
Beep(10000, 1);
}
}
}
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기