小编c00*_*0fd的帖子

锁定块内的异常

比方说,如果我在C#代码上有以下块:

public class SynchedClass
{
    public void addData(object v)
    {
        lock(lockObject)
        {
            //Shall I worry about catching an exception here?

            //Do the work
            //arr.Add(v);
        }
    }
    private List<object> arr = new List<object>();
    private object lockObject = new object();
}
Run Code Online (Sandbox Code Playgroud)

我应该尝试捕获lock块内的异常吗?(我主要担心的是锁内部可能会引发异常,这会阻止锁被"解锁".)

.net c# locking exception

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

需要澄清将路径转换为长Unicode路径或以\\?\开头的路径

首先,让我问一个修辞问题 - 微软,为什么\\?\要让我们在前面添加路径以允许它们长达32,767个字符?为什么不直接使用它们并扩展API上内部缓冲区的大小?对不起,我只是在发泄我的沮丧......

好的,现在我的实际问题,如果我有一条路径,如何将其转换为接受32,767个字符长度的格式?请注意,我对该路径一无所知 - 它可以是相对路径,绝对本地路径,网络共享等.换句话说,它可以是Microsoft发明的众多路径格式中的任何一种.

起初,它似乎是一个直接的命题,\\?\在开头添加,对吧?那么,如果该路径已经转换为扩展格式怎么办?我尝试阅读这个,从该页面的大小和底部的评论数量,你可以看到事情并不像看起来那么简单.

c++ windows unicode winapi path

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

使用C++在Windows上调暗屏幕

我一直在寻找从我的程序中调整Windows平台上的屏幕.我知道有一个允许这样的SetMonitorBrightness API,但对我来说问题是能够在Windows XP上调暗屏幕(该API不支持)以及桌面计算机上的调暗屏幕也会很好.

所以我做了一些研究,发现这个实用程序似乎在没有问题的情况下使我的屏幕在Windows XP桌面上变暗.我试图联系作者,了解他们如何实现调光器,但我没有收到他们的回复.

所以我很想知道这个网站上的开发人员,当你不支持SetMonitorBrightness API时,你认为他们如何设法调暗屏幕?

PS.我是一名新手开发者,我自己也在尝试为我们的小企业编写节能计划.它是一个非营利组织,我们没有资金聘请Windows开发人员为我们这样做.我们的大多数计算机都是Windows XP桌面,因此您可以看到我无法使用SetMonitorBrightness API,因为它在Web上被广泛记录.

提前致谢.

c++ windows winapi monitor screen-brightness

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

用于C语言加密的快速伪随机数发生器

我使用以下代码生成用于加密目的的伪随机数序列,但后来我在某处读到它可能不是很安全.有人可以给我一个更好的生成器的C实现 - 主要目标是这个方法快速.例如,我做了一些研究并遇到了Blum Blum Shub方法,它会通过执行pow(N)计算完全扼杀性能.

PS.请不要引用没有C/C++代码的维基百科文章.我正在寻找我在下面展示的C或C++代码示例.

#define ROL(v, shift) ((((v) >> ((sizeof(v) * 8) - (shift))) | ((v) << (shift))))

ULONGLONG uiPSN = doSeed();   //64-bit unsigned integer

for(int i = 0; i < sizeOfArray; i++)
{
    uiPSN = uiPSN * 214013L + 2531011L;
    uiPSN = ROL(uiPSN, 16);

    //Apply 'uiPSN'
}
Run Code Online (Sandbox Code Playgroud)

c c++ random cryptography

10
推荐指数
2
解决办法
1万
查看次数

taskkill实用程序的退出代码是什么?

在我的MSI安装程序自定义操作处理程序(使用C++完成)中,我无法获得SE_DEBUG_NAME权限以便能够打开和终止进程,因此我不得不求助于使用该taskkill实用程序:

taskkill /f /pid 1230
Run Code Online (Sandbox Code Playgroud)

我需要知道的是taskkill能够看到过程是否终止的返回码以及它可能没有的原因.

我能够在Windows 8机器上通过实验获得以下内容:

0 = success
1 = access denied
128 = no such process
Run Code Online (Sandbox Code Playgroud)

这些是官方文件吗?

c++ windows winapi taskkill

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

如何从使用"Project Centennial converter"转换为UWP的Win32应用程序访问Windows.Services.Store命名空间以启用应用内购买?

我有一个在VS 2008中开发的原生C++/MFC应用程序,没有.NET的东西,我使用Project Centennial转换器转换为UWP应用程序.所以现在我有一个.appx包在Windows 10 v 1607中作为UWP应用程序运行.

我的下一个目标是在提交到Windows应用商店之前添加应用内购买支持.

问题是如何从本机C或C++代码从纯Win32应用程序访问Windows.Services.Store命名空间?

winapi windows-10 uwp desktop-bridge

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

"nop dword ptr [rax + rax]"x64汇编指令有什么作用?

我正在尝试理解x64编译器完成的程序集优化.

我在Windows 8.1上Release使用Visual Studio 2008 SP1IDE 编译了一个小型C++项目.

其中一行包含以下汇编代码:

B8 31 00 00 00   mov         eax,31h
0F 1F 44 00 00   nop         dword ptr [rax+rax]
Run Code Online (Sandbox Code Playgroud)

这是一个截图:

在此输入图像描述

据我所知nop本身是do nothing,但我从来没有用那种操作见过它.

有人可以解释它是做什么的吗?

assembly x86-64 cpu-architecture visual-studio nop

10
推荐指数
2
解决办法
2945
查看次数

我可以先在一个t-SQL事务中选择SELECT然后删除记录吗?

我无法弄清楚这是否是可接受的操作.我需要从SQL Server 2008数据库中选择记录然后删除它们,所有这些都是ASP.NET代码中的单个事务.请注意,.NET代码必须能够检索首先选择的数据.

这样的东西:

SELECT * FROM [tbl] WHERE [id] > 6;
DELETE FROM [tbl] WHERE [id] > 6
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用SQL Fiddle,但如果我这样做:

SELECT * FROM [tbl]
Run Code Online (Sandbox Code Playgroud)

我得到了完整的表格,好像没有删除任何内容.

编辑按照下面的要求,这里是检索记录的完整.NET代码:

string strSQLStatement = "SELECT * FROM [tbl] WHERE [id] > 6;" +
    "DELETE FROM [tbl] WHERE [id] > 6";

using (SqlCommand cmd = new SqlCommand(strSQLStatement, connectionString))
{
    using (SqlDataReader rdr = cmd.ExecuteReader())
    {
        while(rdr.Read())
        {
            //Read values
            val0 = rdr.GetInt32(0);
            val3 = rdr.GetInt32(3);
            //etc.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2008

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

如何"安全地"将文件夹删除到回收站中

我正在寻找一种方法将文件夹(包含子文件夹)放入具有以下条件的回收站:

  1. 它必须以静默方式完成 - 没有任何 Windows UI.

  2. 永远不能永久删除该文件夹.如果无法将其放入回收站,我希望API失败.

  3. CopyFileEx那样获取进程的回调例程.

到目前为止,我能够想出这个:

SHFILEOPSTRUCT sfo = {0};
sfo.wFunc = FO_DELETE;
sfo.pFrom = L"K:\\test del from USB\0";     //Folder on a USB stick
sfo.fFlags = FOF_ALLOWUNDO |
     FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR |
     FOF_WANTNUKEWARNING;

int res = SHFileOperation(&sfo);
BOOL bFullSuccess = res == 0 && !sfo.fAnyOperationsAborted;
Run Code Online (Sandbox Code Playgroud)

哪个位于USB闪存驱动器上的文件夹可怕失败,即尽管有标志,它仍被永久删除FOF_ALLOWUNDO.

所以我是不是做对了,或者SHFileOperation API是非常错误的!

知道如何做我上面概述的内容吗?

编辑:我实现了IRecycleBinManager::WillRecycle@Denis Anisimov建议的方法,但显然更多.这是我的C++版本.我需要的方法的第一个接口定义:

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("5869092D-8AF9-4A6C-AE84-1F03BE2246CC")
    IRecycleBinManager : public IUnknown
    {
    public: …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi recycle-bin windows-shell

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

我的Google Chrome扩展程序的HTML页面国际化

我发现了一个非常简单的方法实现的翻译我的谷歌Chrome扩展的(或定位),但似乎只适用于.json,cssjs文件.

但是如何html在弹出窗口或选项窗口中本地化我的内容?

html javascript google-chrome internationalization google-chrome-extension

9
推荐指数
4
解决办法
4909
查看次数