Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net net,将枚举值作为函数参数传递_Vb.net - Fatal编程技术网

Vb.net net,将枚举值作为函数参数传递

Vb.net net,将枚举值作为函数参数传递,vb.net,Vb.net,这编译时没有错误,但当我运行此代码部分时,会出现一些奇怪的错误: 检测到FATAlexecutionEngineer错误 消息:运行时遇到致命错误。错误地址位于线程0xd7c上的0x792062fb。错误代码为0xc0000005。此错误可能是CLR或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括COM互操作或PInvoke的用户封送错误,这可能会损坏堆栈 我尝试以下方法: Public Enum PipePolicyType SHORT_PACKET_TE

这编译时没有错误,但当我运行此代码部分时,会出现一些奇怪的错误:

检测到FATAlexecutionEngineer错误 消息:运行时遇到致命错误。错误地址位于线程0xd7c上的0x792062fb。错误代码为0xc0000005。此错误可能是CLR或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括COM互操作或PInvoke的用户封送错误,这可能会损坏堆栈

我尝试以下方法:

    Public Enum PipePolicyType
        SHORT_PACKET_TERMINATE = 1
        AUTO_CLEAR_STALL = 2
        PIPE_TRANSFER_TIMEOUT = 3
        IGNORE_SHORT_PACKETS = 4
        ALLOW_PARTIAL_READS = 5
        AUTO_FLUSH = 6
        RAW_IO = 7
        RESET_PIPE_ON_RESUME = 9
    End Enum

...
...

        Dim a As UInt32 = 3000

        SetPolicy(1, PIPE_TRANSFER_TIMEOUT, a)

...
...
Public Sub SetPolicy(ByVal ep As Integer, ByVal PolicyType As PipePolicyType, ByVal PolicyValue As UInt32)


end sub

怎么了?

您需要使用PipePolicyType.PIPE\u TRANSFER\u TIMEOUT调用它

Public Class Form1
    Public Sub SetPolicy(ByVal ep As Integer, ByVal PolicyType As PipePolicyType, ByVal PolicyValue As UInt32)

    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        Dim a As UInt32 = 3000

        SetPolicy(1, PipePolicyType.PIPE_TRANSFER_TIMEOUT, a)
    End Sub
End Class

Public Enum PipePolicyType
    SHORT_PACKET_TERMINATE = 1
    AUTO_CLEAR_STALL = 2
    PIPE_TRANSFER_TIMEOUT = 3
    IGNORE_SHORT_PACKETS = 4
    ALLOW_PARTIAL_READS = 5
    AUTO_FLUSH = 6
    RAW_IO = 7
    RESET_PIPE_ON_RESUME = 9
End Enum

好吧,我在别的地方发现了问题,我不明白。我的枚举根本没有问题,一些包装器中出现了一些奇怪的错误,无法管理:

    Dim PUnmanagedDetailedInterfaceDataStructure As IntPtr = IntPtr.Zero
    PUnmanagedDetailedInterfaceDataStructure = Marshal.AllocHGlobal(StructureSize)
这是我几天前缩短的,就像这样

    Dim PUnmanagedDetailedInterfaceDataStructure As IntPtr = Marshal.AllocHGlobal(StructureSize)

第二次申报有什么问题

用SetPolicy(1,3,a)试试,看看是否有错误。也可以试试
SetPolicy(1,PipePolicyType.PIPE\u TRANSFER\u TIMEOUT,a)
如果你能指出这是一个你正在调用的Win32函数,实际上没有调用任何东西(要测试的注释),但我打算调用winusb\u SetPolicy()。现在,最初导入的const可以正常工作,但如下所示:WinUsb_SetPipePolicy(hwinusinterface,ep,&H3,4,timeout)和我尝试用一些人类可读的constsSetPolicy(1,3,a)替换参数将给我:重载解析失败,因为没有缩小转换就无法调用可访问的“SetPolicy”:。。。有两个函数的PolicyValue为boolean或uint32I标记为good,因为它是完美的,感谢您的努力。我在别的地方发现了这个问题(见下文)