/////////////////////////////////////////////////////////////////////////////////////
// 函数功能:
// 列表所支持TOKEN的连接名称
// 函数参数:
// szTokenName: 输出参数,所有指定类型的TOKEN连接名称
// 不同的TOKEN之间以'\0'作为分割符
// pulTokenNameLen: 输入参数,szTokenName的缓冲区的最大长度
// 实际返回的总的连接名称的长度
// ulTokenType: 输入参数,连接类型
// pvReserved: 输入参数,保留扩展使用,目前只支持NULL
/////////////////////////////////////////////////////////////////////////////////////
long __stdcall MWTokenList(
char* szTokenName,
unsigned long * pulTokenNameLen,
unsigned long ulTokenType,
const void* pvReserved);
/////////////////////////////////////////////////////////////////////////////////////
// 函数功能:
// 连接一个TOKEN,获得TOKEN的操作句柄
// 函数参数:
// plTokenHandle: 输出参数,返回TOKEN的连接句柄
// szTokenName: 输入参数,所要连接TOKEN的连接名称,通过MWTokenList函数获得
// ulTokenMode: 输入参数,连接模式,是连接类型和共享模式的或关系
// pvReserved: 输入参数,保留扩展使用,目前只支持NULL
/////////////////////////////////////////////////////////////////////////////////////
long __stdcall MWTokenConnect(
long* plTokenHandle,
const char* szTokenName,
unsigned long ulTokenMode,
const void* pvReserved);MFC里面的调用:
unsigned long ulTokenType;
unsigned long ulTokenMode;
unsigned long ulTokenNameLen;
char szTokenName[100];
long m_lTokenHandle; lResult = MWTokenList(szTokenName,&ulTokenNameLen,ulTokenType,0); lResult = MWTokenConnect(&m_lTokenHandle,szTokenName,ulTokenMode,0); 这是我在C#里面自己定义的原型 public static extern long MWTokenList(byte[] szTokenName, ref ulong pulTokenNameLen, ulong ulTokenType, string/long pvReserved); public static extern long MWTokenConnect(ref long plTokenHandle, byte[] szTokenName, ulong ulTokenMode, string/long pvReserved);调用都有问题 请大家帮忙想方法, 感谢ing
// 函数功能:
// 列表所支持TOKEN的连接名称
// 函数参数:
// szTokenName: 输出参数,所有指定类型的TOKEN连接名称
// 不同的TOKEN之间以'\0'作为分割符
// pulTokenNameLen: 输入参数,szTokenName的缓冲区的最大长度
// 实际返回的总的连接名称的长度
// ulTokenType: 输入参数,连接类型
// pvReserved: 输入参数,保留扩展使用,目前只支持NULL
/////////////////////////////////////////////////////////////////////////////////////
long __stdcall MWTokenList(
char* szTokenName,
unsigned long * pulTokenNameLen,
unsigned long ulTokenType,
const void* pvReserved);
/////////////////////////////////////////////////////////////////////////////////////
// 函数功能:
// 连接一个TOKEN,获得TOKEN的操作句柄
// 函数参数:
// plTokenHandle: 输出参数,返回TOKEN的连接句柄
// szTokenName: 输入参数,所要连接TOKEN的连接名称,通过MWTokenList函数获得
// ulTokenMode: 输入参数,连接模式,是连接类型和共享模式的或关系
// pvReserved: 输入参数,保留扩展使用,目前只支持NULL
/////////////////////////////////////////////////////////////////////////////////////
long __stdcall MWTokenConnect(
long* plTokenHandle,
const char* szTokenName,
unsigned long ulTokenMode,
const void* pvReserved);MFC里面的调用:
unsigned long ulTokenType;
unsigned long ulTokenMode;
unsigned long ulTokenNameLen;
char szTokenName[100];
long m_lTokenHandle; lResult = MWTokenList(szTokenName,&ulTokenNameLen,ulTokenType,0); lResult = MWTokenConnect(&m_lTokenHandle,szTokenName,ulTokenMode,0); 这是我在C#里面自己定义的原型 public static extern long MWTokenList(byte[] szTokenName, ref ulong pulTokenNameLen, ulong ulTokenType, string/long pvReserved); public static extern long MWTokenConnect(ref long plTokenHandle, byte[] szTokenName, ulong ulTokenMode, string/long pvReserved);调用都有问题 请大家帮忙想方法, 感谢ing
=====================================
WORD ushort
DWORD uint
UCHAR int/byte 大部分情况都可以使用int代替,而如果需要严格对齐的话则应该用bytebyte
UCHAR* string/IntPtr
unsigned char* [MarshalAs(UnmanagedType.LPArray)]byte[]/?(Intptr)
char* string
LPCTSTR string
LPTSTR [MarshalAs(UnmanagedType.LPTStr)] string
long int
ulong uint
Handle IntPtr
HWND IntPtr
void* IntPtr
int int
int* ref int
*int IntPtr
unsigned int uint
COLORREF uint
[dllimport("dllname",CharSet=CharSet.Auto,CallingConvention=CallingConvention.Winapi]
public static extern int MWTokenList(string szTokenName, ref uint pulTokenNameLen, uint ulTokenType, IntPtr pvReserved);
[dllimport("dllname",CharSet=CharSet.Auto,CallingConvention=CallingConvention.Winapi]
public static extern int MWTokenConnect(ref int plTokenHandle, string szTokenName, uint ulTokenMode, IntPtr pvReserved);
C++ C#
char* string
传出的char* StringBuilder
short short
char byte
char[n] fixed byte[n]
结构指针 结构指针
函数指针 委托
结构体数组使用IntPtr http://topic.csdn.net/u/20090225/15/a6bc50ad-9721-4749-b189-dc4a4bc045a1.html