yuntianao 2017-09-30 01:07 采纳率: 0%
浏览 1216

这段代码如何从C#转到VB.Net

[StructLayout(LayoutKind.Sequential)]
protected struct SHARE_INFO_1
{
[MarshalAs(UnmanagedType.LPWStr)]
public string shi1_netname;
[MarshalAs(UnmanagedType.U4)]
public uint shi1_type;
[MarshalAs(UnmanagedType.LPWStr)]
public string shi1_remark;
}
[DllImport("Netapi32.dll", EntryPoint = "NetShareEnum")]
protected static extern int NetShareEnum(
[MarshalAs(UnmanagedType.LPWStr)] string servername,
[MarshalAs(UnmanagedType.U4)] uint level,
out IntPtr bufptr,
[MarshalAs(UnmanagedType.U4)] int prefmaxlen,
[MarshalAs(UnmanagedType.U4)] out uint entriesread,
[MarshalAs(UnmanagedType.U4)] out uint totalentries,
[MarshalAs(UnmanagedType.U4)] out uint resume_handle
);
private string[] NetShareList(string server)
{

        IntPtr buffer;
        uint entriesread;
        uint totalentries;
        uint resume_handle;

        //-1应该是获取所有的share,返回0表示成功
        if (NetShareEnum(server, 1, out buffer, -1, out entriesread, out totalentries, out resume_handle) == 0)
        {
            Int32 ptr = buffer.ToInt32();
            ArrayList alShare = new ArrayList();
            for (int i = 0; i < entriesread; i++)
            {

                SHARE_INFO_1 shareInfo = (SHARE_INFO_1)Marshal.PtrToStructure(new IntPtr(ptr), typeof(SHARE_INFO_1));
                if (shareInfo.shi1_type == 0)//Disk drive类型
                {
                    alShare.Add(shareInfo.shi1_netname);
                }
                ptr += Marshal.SizeOf(shareInfo);
            }
            string[] share = new string[alShare.Count];
            for (int i = 0; i < alShare.Count; i++)
            {
                share[i] = alShare[i].ToString();
            }
            return share;
        }
        else
            return null;

    }
  • 写回答

1条回答 默认 最新

  • yuntianao 2017-09-30 02:15
    关注
    <StructLayout(LayoutKind.Sequential)>
    Protected Structure SHARE_INFO_1
        <MarshalAs(UnmanagedType.LPWStr)> _
        Public shi1_netname As String
        <MarshalAs(UnmanagedType.U4)> _
        Public shi1_type As System.UInt32
        <MarshalAs(UnmanagedType.LPWStr)> _
        Public shi1_remark As String
    End Structure
    
    <DllImport("Netapi32.dll", EntryPoint:="NetShareEnum")> _
    Protected Shared Function NetShareEnum(<MarshalAs(UnmanagedType.LPWStr)> ByVal servername As String, <MarshalAs(UnmanagedType.U4)> ByVal level As UInteger, ByRef bufptr As IntPtr, _
                                           <MarshalAs(UnmanagedType.U4)> ByVal prefmaxlen As Integer, <MarshalAs(UnmanagedType.U4)> ByRef entriesread As UInteger, _
                                           <MarshalAs(UnmanagedType.U4)> ByRef totalentries As UInteger, <MarshalAs(UnmanagedType.U4)> ByRef resume_handle As UInteger) As Integer
    End Function
    
    
    Private Function NetShareList(ByVal server As String) As String()
        Dim buffer As IntPtr
        Dim entriesread As UInteger
        Dim totalentries As UInteger
        Dim resume_handle As UInteger
        '-1应该是获取所有的share,返回0表示成功
        If (NetShareEnum(server, 1, buffer, -1, entriesread, totalentries, resume_handle) = 0) Then
            Dim ptr As Integer = buffer.ToInt32
            Dim alShare As ArrayList = New ArrayList()
            For i As Integer = 0 To entriesread - 1
                Dim shareInfo As SHARE_INFO_1 = DirectCast(Marshal.PtrToStructure(New IntPtr(ptr), GetType(SHARE_INFO_1)), SHARE_INFO_1)
                If (shareInfo.shi1_type = 0) Then    'Disk drive类型
                    alShare.Add(shareInfo.shi1_netname)
                End If
                ptr += Marshal.SizeOf(shareInfo)
            Next
            Dim share As String() = New String(alShare.Count) {}
            For i As Integer = 0 To alShare.Count - 1
                share(i) = alShare(i).ToString()
            Next
            Return share
        Else
            Return Nothing
        End If
    End Function
        已经转换成功
    
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题