小编Ben*_*min的帖子

ASLR会导致Dlls加载缓慢吗?

在MSVC中,Base Address Randomizaiton是默认选项.(自VS2005起?)

所以,我不再手动重新设置dll的基地址.

但是当我使用VS2003时,我重新调整了我的所有dll以提高加载性能.

如果我使用ASLR选项,加载性能总是会降低吗?
(我可以获得其他好处)

windows dll visual-studio aslr

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

你什么时候使用大括号扩展?

我明白支撑膨胀是什么.
但我不知道我在哪里使用它.

你什么时候使用它?
请给我一些方便的例子.

谢谢.

bash brace-expansion

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

WoW64仿真层做什么?

在此输入图像描述

所有WoW64应用程序都通过WoW64仿真层.
我想知道这一层发生了什么.(特别是它们如何转换地址空间)

请给我一些重点.

windows dll 64-bit wow64

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

如何编译Duff的设备代码?

我理解为什么Duff的设备比普通的循环代码更快,可以展开但没有优化.但我无法理解代码是如何编译的.
我想这是关于切换语法的一个技巧.但不是了.

怎样才能做到,而句子中存在开关句子?很奇怪.
有没有人可以解释这个?

编辑: 另一个问题.为什么duff使用8?它可能是16,65536或其他什么.因为代码大小?还有其他原因吗?例如,缓存或流水线操作的好处.

c c++ switch-statement duffs-device

6
推荐指数
2
解决办法
1663
查看次数

为什么数据没有在进程退出时刷新到文件?

int main(int argc, char *argv[])
{
    FILE *fp = fopen("a.txt", "wt");

    fprintf(fp, "AAAA");

    // No flush. and No close
    raise(SIGTERM);

    exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

result: No data has written to a.txt

我预计这很好.因为系统将关闭文件句柄,然后文件系统驱动程序刷新其处理程序中的未刷新数据.但事实并非如此.我在EXT4,ubuntu 11.10上测试了这段代码

问:我认为所有文件系统必须在他的密切处理中刷新未刷新的数据.
Posix没有规则?

PS此代码在NTFS,Win7上运行良好(刷好)

int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE h = CreateFile(L"D:\\a.txt", GENERIC_READ|GENERIC_WRITE,
        0, 0, OPEN_ALWAYS, 0, 0);
    BYTE a[3];
    memset(a, 'A', 3);
    DWORD dw;
    WriteFile(h, (PVOID)a, 3, &dw, 0);

    TerminateProcess(GetCurrentProcess(), 1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:
我用系统调用再次测试它write.而且它很好.

int main(int argc, char** argv)
{
    int fd = …
Run Code Online (Sandbox Code Playgroud)

c windows file-io posix

6
推荐指数
2
解决办法
2348
查看次数

PATH_NOT_FOUND 和 NAME_NOT_FOUND 有什么区别

在Win32层,我们经常会遇到ERROR_PATH_NOT_FOUNDERROR_NAME_NOT_FOUND.

When does WinAPI(eg CreateFileW, RemoveDirectoryW) return these values? And What's the difference?

If I write a file system driver, when do I set STATUS_OBJECT_PATH_NOT_FOUND or STATUS_OBJECT_NAME_NOT_FOUND?

How do you determine?

I'm so confused. Is there anyone who can explain clearly?
Or are there any documents explain this? I couldn't find them.

Thanks in advance.

windows filesystems winapi

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

NTFS元数据中包含哪些信息?

我想知道NTFS元数据中包含哪些信息.
但我无法在任何地方找到论文.

我猜元数据有文件名,大小和属性等
.NTFS元数据是否也有短路径名称?
NTFS元数据中包含哪些信息?

你知道一个好的网站或关于此的网页吗?如果你这样做,请告诉我.

谢谢.

windows filesystems ntfs

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

为什么Microsoft选择stdcall作为他们的API约定?

有充分的理由吗?

他们的内部函数(未导出)是否也是stdcall约定?

windows winapi calling-convention stdcall

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

如何刷新 Windows 资源管理器

在此处输入图片说明

网络卷的名称可以更改。
我把名字改成了脊椎盘
在此处输入图片说明

在此处输入图片说明

要更改网络名称,我会

  • 在注册表中写入新名称。
  • 使用DefineDosDeviceW 之类的功能附加我的网络卷。在这个时候,Windows 资源管理器在我的猜测中读取了注册表。
  • SHChangeNotify(SHCNE_DRIVEADD, SHCNF_PATH, root, NULL); // 为了确定。
  • SendMessageTimeout(HWND_BROADCAST, WM_DEVICECHANGE, message, (LPARAM)(&dbv), - SMTO_ABORTIFHUNG, 200, &dwResult); //再次确定!

它有效,但有时即使我使用 SHChangeNotify 和 WM_DEVICECHANGE 也无效。有时,新名称不会应用到 Windows 资源管理器中。
但是,如果我终止 Explorer 并重新执行,则会应用该名称。

我正在寻找一个刷新Windows资源管理器的界面。(语法正确吗?对不起,我不能很好地表达这句话。)
有没有合适的功能?资源管理器应重新读取注册表并刷新。

windows com winapi windows-explorer windows-shell

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

WriteFile 函数的 lpNumberOfBytesWritten 参数

MSDN 说,

当写入缓冲区空间不足的非阻塞字节模式 管道句柄时,WriteFile 返回 TRUE,且 *lpNumberOfBytesWritten < nNumberOfBytesToWrite。

对于文件或套接字(不是管道),当我同步调用该函数时, *lpNumberOfBytesWritten 可以小于 nNumberOfBytesToWrite (并且结果为 TRUE)。

如果是这样,为什么(以及何时)相应的驱动程序会像这样完成 IRP?

当我看到下面的代码时,我总是担心“如果 *lpNumberOfBytesWritten < BytesToWrite 会怎样?”

BOOL fOk = WriteFile(hFileOrSocket, ...); // Synchronously
if (fOk)
{
  // It assumes everything is fine
}
Run Code Online (Sandbox Code Playgroud)

我不需要担心这个吗?

sockets windows filesystems file-io winapi

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