2
우리가 예를 들어 다음과 같은 승리의 API 호출을 직접 선택 :P/호출 32 비트 및 64 비트 시스템에서
BOOL MessageBeep(UINT uType); // from User32.dll
입력 매개 변수가 모두 32 비트가 될 수있는 경고음 유형을 지정하는 UINT입니다 및 64 비트 정수. 우리가 호출하는 Windows 버전에 따라 달라집니다 (또는 잘못 되었습니까?).
나는 P를 원하는 경우/C 번호에서 메시지 경고음을 호출, 그래서 내가 같이 DllImport 선언을 적용
[DllImport("User32.dll")]
static extern Boolean MessageBeep(UInt32 beepType);
윌 윈도우 64에서이 코드를 C#을 사용할 수 있습니까?
- 그렇다면 64 비트 정수가 필요한 반면 호출에 32 비트 정수를 호출하는 것이 좋습니다. (이 경우 내가 맞다고 가정 할 때)?
- 만약 아니라면, C#에서와 같이 적절한 플랫폼 독립적 인 P/Invoke 선언이 어떻게 나타나야합니까?
왜 DWORD 비트는 종속적이며 UINT가 아닌가? 내가 읽은 C 데이터 유형 문서에 반하는 것 같습니다. MSDN의 Windows 데이터 형식 페이지 : http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx DWORD : typedef unsigned long DWORD; UINT : typedef 부호없는 int UINT; – user256890
당신 말이 맞아요. 나는'HANDLE '을 의미했다. – SLaks
답변을 연장하기 위해 32/64 비트 안전 코딩에서 다음 MSDN 권장 사항을 발견했습니다. http://msdn.microsoft.com/en-us/library/aa384242(VS.85).aspx – user256890