2009-12-21 4 views
6

Muszę przekazać ULONG_PTR w niebezpieczny kod w C#.C# ULONG_PTR Równoważny

Rozumiem, że powodem dla ULONG_PTR jest dopuszczenie pojedynczej bazy kodów dla 32-bitowych i 64-bitowych systemów operacyjnych.

Czy jest to przypadek dla C# 's UIntPtr? Czy mogę być pewny, że przekazując parametr .Net UIntPtr jako parametr ULONG_PTR?

Dzięki!

Odpowiedz

6

Od MSDN:

typu IntPtr jest zgodny z CLS, podczas gdy typ UIntPtr nie jest. Tylko typ IntPtr jest używany we wspólnym środowisku wykonawczym języka . Typ UIntPtr jest umieszczono głównie w celu utrzymania symetrii architektonicznego z IntPtr typu

Oba typy są zdolne do przechowywania w 32-bitowe lub 64-bitowe wskaźniki. Preferowanym rodzajem jest IntPtr.

2

Na podstawie opisu MSDN nim powiedziałbym, że powinno być:

Typ UIntPtr ma być liczbą całkowitą, której wielkość jest od platformy. Oznacza to, że instancja tego typu ma być 32-bitowymi na 32-bitowym sprzęcie i systemach operacyjnych oraz 64-bitowymi na 64-bitowym sprzęcie i systemach operacyjnych.