小编Bra*_*out的帖子

C#WriteFile()停止在USB驱动器上的扇区242写入

我编写了下面的代码,将0xFF写入USB存储设备上的所有字节.由于某种原因,WriteFile()调用在扇区242开始出错.我在两个独立的USB存储设备上完成了这个操作,然后在十六进制编辑器中检查设备.扇区242似乎是FAT16格式化设备上文件分配表的开始,以及NTFS设备上引导区域的开始.我确信它在这些确切的位置错误并不是巧合,但是我不知道如何改变这种行为.我在WriteFile失败时收到的HRESULT是-2147024891,即E_ACCESSDENIED.有谁知道可能导致问题的原因是什么?

注意:如果您要在本地系统上运行此代码,请非常小心,因为我已经硬编码了USB设备的物理设备ID.请务必使用您尝试写入的设备更新deviceId变量.你不想破坏你的硬盘.

    public enum EMoveMethod : uint
    {
        Begin = 0,
        Current = 1,
        End = 2
    }

    [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    static extern uint SetFilePointer([In] SafeFileHandle hFile, [In] long lDistanceToMove, [Out] out int lpDistanceToMoveHigh, [In] EMoveMethod dwMoveMethod);

    [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    static extern SafeFileHandle CreateFile(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile);

    [DllImport("kernel32", SetLastError = true)]
    internal extern static int ReadFile(SafeFileHandle handle, byte[] bytes, int numBytesToRead, out …
Run Code Online (Sandbox Code Playgroud)

c# file-io deviceiocontrol

8
推荐指数
1
解决办法
5292
查看次数

可以优化此SQL查询以更快地运行吗?

我有一个SQL查询(对于SQL Server 2008 R2)需要很长时间才能完成.我想知道是否有更好的方法吗?

SELECT @count = COUNT(Name)
FROM Table1 t
WHERE t.Name = @name AND t.Code NOT IN (SELECT Code FROM ExcludedCodes)
Run Code Online (Sandbox Code Playgroud)

Table1中有大约90万行,并由Name和Code索引.ExcludedCodes只有大约30行.

这个查询在一个存储过程中被调用大约40k次,程序完成所需的总时间是27分钟.我相信这是我最大的瓶颈,因为它查询了大量的行和次数它做到了.

因此,如果您知道优化此方法的好方法,我们将不胜感激!如果它无法优化那么我想我坚持了27分钟......

编辑

我改变了NOT IN,以NOT EXISTS它削减时间降低到10:59,让孤独是我的一个巨大的增益.我仍然会尝试按照下面的建议进行group by语句,但是这需要完全重写存储过程并且可能需要一些时间......(正如我之前所说,我不是最好的SQL,但它正在启动在我身上成长.^^)

sql t-sql optimization sql-server-2008

4
推荐指数
1
解决办法
2726
查看次数

在 SharpPCap 如何找到设备的 IP 地址?

我正在使用 WinPCapDevice 并且已经对其进行了初始化。我只是希望能够从该设备获取 IP,但我无法在任何地方找到如何提取设备的 IP 地址。如果没有办法做到这一点,那么是否有另一种方法来获取 WinPCapDevice 的 IP 地址,以便我可以根据 IP 地址列表对其进行检查?

这是我正在谈论的一小段代码。

        IPHostEntry host;
        host = Dns.GetHostEntry(Dns.GetHostName());

        foreach (IPAddress ip in host.AddressList)
        {
            if (ip.AddressFamily.ToString() == "InterNetwork")
            {

                localIPAddress = ip.ToString();
                //Want to check if my WinPCapDevice device's IP is equal to ip
            }
        }
Run Code Online (Sandbox Code Playgroud)

c# sharppcap

3
推荐指数
1
解决办法
3980
查看次数

使用 JAVA 等效的 OpenSSL 命令

所以我有一个非常基本的 openssl 命令提供给我openssl smime -encrypt -binary -aes-256-cbc -in $inPath -out $encryptedPath -outform DER $pubCert,这个命令也可以正常工作并输出一个加密文件。我需要在 java 应用程序中使用此命令的等效项,最好不要调用进程并使用 openssl 本身(只是因为我觉得这可能是不好的做法)。

我已经研究了很多,似乎没有任何等效的东西可以找到。我尝试了几件事,但大多数似乎都不起作用。奇怪的是......我能够使用我编写的代码获得一个简单的“Hello World”字符串来加密(尽管我不相信它会正确加密它,因为我将密码设置为“RSA”而不是“ AES") 但是当字节数组来自一个文件时,它默默地失败了,只写了 0 个字节。现在这就是我的代码的样子。

  Cipher aes = Cipher.getInstance("RSA");
  CertificateFactory certF = CertificateFactory.getInstance("X.509");
  File public_cert = new File( getClass().getClassLoader().getResource("public.crt").getFile());
  FileInputStream certIS = new FileInputStream(public_cert);
  X509Certificate cert = (X509Certificate) certF.generateCertificate(certIS);
  certIS.close();
  aes.init(Cipher.ENCRYPT_MODE, cert);

  File tarGz = new File("C:\\volatile\\generic.tar.gz");
  FileInputStream fis = new FileInputStream(tarGz);
  byte[] tarGzBytes = FileUtils.readFileToByteArray(tarGz);
  tarGzBytes = "Hello World".getBytes();
  ByteArrayInputStream bais = new ByteArrayInputStream("Hello World".getBytes());
  File encFile = …
Run Code Online (Sandbox Code Playgroud)

java encryption openssl certificate

1
推荐指数
1
解决办法
1248
查看次数