/*
      BOOL WINAPI CryptEnumProviders(
  DWORD dwIndex,
  DWORD* pdwReserved,
  DWORD dwFlags,
  DWORD* pdwProvType,
  LPTSTR pszProvName,//
  DWORD* pcbProvName //
);*/
       [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
      public static extern bool CryptEnumProviders(uint dwIndex,  ref uint pdwReserved,
           uint dwFlags,ref uint pdwProvType,ref string pszProvName,ref uint pcbProvName);
这个函数这么声明对吗? 该如何调用.请大家给个例子.

解决方案 »

  1.   

    [DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Auto)]
    static extern bool CryptEnumProviders(
        [MarshalAs(UnmanagedType.U4)] int dwIndex,
        [MarshalAs(UnmanagedType.U4)] ref int pdwReserved,
        [MarshalAs(UnmanagedType.U4)] int dwFlags,
        [MarshalAs(UnmanagedType.U4)] ref int pdwProvType,
        StringBuilder pszProvName,
        [MarshalAs(UnmanagedType.U4)] ref int pcbProvName);
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  2.   

    3楼的,请给我写个调的例子.我见过这么声明的.但是我调的不对.
    uint pdwReserved,pdwProvType,pdwProvType
    CryptEnumProviders(0, pdwReserved, 0, ref pdwProvType, ref pszProvName, ref pdwProvType);
    请给我写个怎么调的吧.我调的老是出错!
      

  3.   

    这样试试:
    public static extern bool CryptEnumProviders(UInt32 dwIndex, IntPtr pdwReserved, UInt32 dwFlags, ref UInt32 pdwProvType, StringBuilder pszProvName, ref UInt32 pcbProvName);UInt32 pdwProvType;
    UInt32 pcbProvName = 100;
    StringBuilder pszProvName = new StringBuilder(pcbProvName);
    CryptEnumProviders(0, IntPtr.Zero, 0, ref pdwProvType, pszProvName, ref pcbProvName);
      

  4.   

    http://download.csdn.net/source/1223372
    参考 里面有调用声音API和获取计算机系统信息的 API