C#コードでネイティブdll(WNSMP32.dll)の次の関数を使用する必要があります。
SNMPAPI_STATUS SnmpStartupEx( _Out_ smiLPUINT32 nMajorVersion,...);
//Considering just one for purpose of discussion
このために、私はdllimport宣言を次のように持っています
[DllImport("wsnmp32.dll")] internal static extern
Status SnmpStartupEx(out IntPtr majorVersion, ...);
//Considering just one for purpose of discussion
私は次のように関数を使用しています
IntPtr majorVersion = Marshal.AllocHGlobal(sizeof(UINT32))
status = SnmpStartupEx(out majorVersion, out minVersion,
out level, out translateMode, out retransmitMode )
メモリの割り当て後、IntPtrの値を出力しています。
<<<DEBUG OUTPUT>>> IntPtr Value = 112235522816
ただし、を呼び出した後、IntPtrが変更されていることがわかりました。
<<<DEBUG OUTPUT>>> IntPtr after calling SnmpStartupEx
<<<DEBUG OUTPUT>>> IntPtr Value = 111669149698
- 呼び出しの前に、Marshal.AllocHGlobalを介してメモリを割り当てる必要がありますか?
- 呼び出し後にIntPtrのアドレスを変更することは有効ですか?