jjzjj

shared-storage

全部标签

windows - 使用 Share-Delete 打开文件是否允许其他人写入?

FileShare枚举提供各种标志,例如读取、写入、删除...。通常我会认为共享文件删除只允许删除而不能做其他事情(比如阅读)。但是,我依稀记得Windows只区分文件的只读访问权限和完全访问权限,因此实际上为删除而共享也允许写入文件。遗憾的是,这是很多年前的事了,我既没有找到原始来源,也没有找到任何相关信息。是否有关于实际行为的可靠规范?它取决于操作系统还是FS? 最佳答案 查看CreateFileFunction的文档.FILE_SHARE_DELETE:Enablessubsequentopenoperationsonafil

c++ - OpenCL/GL 互操作 : write_imagef to shared gltexture is all white (1, 1,1,1)

我正在尝试使用OpenCL编写光线追踪器。但是,我遇到了一些麻烦。我想在OpenGL和OpenCL之间共享纹理内存,以避免不必要的内存来回复制。我的程序运行良好,我在每次调用GL和CL后进行检查,没有发现任何错误。如标题中所述,使用write_imagef写入内核中的纹理会在每个channel中产生1.0。我怀疑纹理格式有问题,但我一直在互联网上寻找有效的纹理格式,但我看不出有什么问题。我尝试了write_imageui和write_imagef以及纹理格式的不同组合,但没有成功。内核程序:__kernelvoidDraw(__global__write_onlyimage2d_tim

windows - 有没有办法获得对以独占访问方式打开的文件的读取访问权限,即 FILE_SHARE_NONE

如果不采取肮脏和令人讨厌的方式,我相信这在用户模式下是不允许的,即使使用SE_BACKUP_NAME。我认为肮脏和令人讨厌的事情:找出哪个进程拥有句柄并编写代码以在该进程中运行并关闭句柄。读取/解析MFT/FAT表使用内核驱动 最佳答案 是的,有一种方法,尽管它可能不适合您的需要;它不脏也不讨厌,但它很重,也就是说,它的编码并不简单,如果您只是试图读取单个文件,它会产生不成比例的系统负载。但是,如果您需要这样做,这是我所知道的唯一合理且安全的解决方案:请参阅VolumeShadowCopyService上的MSDN文档.现在大多数备

windows - SetConsoleActiveScreenBuffer 使 ReadConsole 返回 ERROR_SHARING_VIOLATION

当我使用创建的缓冲区调用SetConsoleActiveScreenBuffer()时,它似乎使ReadConsole停止使用ERROR_SHARING_VIOLATION。我检查了句柄权限,据我所知,它们是正确的。如果我注释掉SetConsoleActiveScreenBuffer行,输入将完美运行。我可能在这里做错了什么?我还尝试过使用ReadFile而不是ReadConsole,并使用CreateFile而不是GetStdHandle获取输入缓冲区。两种方式,都会出现同样的错误。#includeintmain(){void*oldScreenBuffer;void*screenB

c - 警告 LNK4092 : shared writable section contains relocations

我使用VisualStudio2008,对此警告有疑问。在我们的一个库中,我们设置了“固定基地址”标志(/FIXED)并定义了一个固定基地址。我们用命令声明一个共享部分#pragmacomment(linker,"/SECTION:FOO,RWS")#pragmadata_seg("FOO")当我删除/FIXED标志时,我收到警告LINK:warningLNK4092:sharedwritablesection'FOO'containsrelocations;imagemaynotruncorrectly我知道,有了这个标志,从可执行文件加载时,dll可能会被重新定位。现在我不明白。为

c++ - 在 Linux 上 boost windows_shared_memory

您好,我需要在Linux上构建一个项目,但它使用“boost/interprocess/windows_shared_memory.hpp”有什么方法可以在linux上运行它,或者我必须重写这段代码?谢谢 最佳答案 我认为你只需要使用#include而不是boost/interprocess/windows_shared_memory.hpp。这将处理Windows和Linux。 关于c++-在Linux上boostwindows_shared_memory,我们在StackOverfl

windows - 用于 64 位 Windows 和 "no shared cipher"的 OpenSSL

我刚刚为64位Windows编译并安装了OpenSSL。我已经使用以下命令创建了一个自签名证书和一个私钥:opensslreq-x509-newkeyrsa:4096-keyoutkey.pem-outcert.pem-days10000-nodes我现在正在测试"SimpleTLSServer"example在带有Firefox的OpenSSLWiki上找到,并进行了一些修改以支持Winsock,但我一直收到错误11216:error:1417A0C1:SSLroutines:tls_post_process_client_hello:nosharedcipher:ssl\state

Windows 安装程序 : can two different installer share the same componet

我有两个安装程序-一个用于64位Windows,另一个用于32位Windows。32位安装程序安装32位可执行文件和DLls,而64位安装程序安装64位exe和dll以及32位的。32位组件由两个安装程序共享。WindowsInstaller是否明确允许这种情况?谢谢。 最佳答案 是的,这是受支持的。只需确保32位组件在两个安装程序中具有相同的名称和GUID。这样就为它们使用了引用计数。 关于Windows安装程序:cantwodifferentinstallersharethesame

windows - 域兼容性 : where should shared data be written?

我们编写的应用程序在XP中运行良好,但在迁移到Vista和Windows7时遇到了严重的问题,这可能是由于用户数据的写入位置。用例是这样的:个人用户需要登录机器并使用它来获取数据。主管用户需要能够从各个用户的肩膀上看到并验证他们是否正确地执行了他们的工作。这些主管还需要检查系统日志以确保系统正常运行。我们在XP中完成这些任务的方法是直接写入C:\驱动器上的文件夹。也许这是不好的做法,也许不是,但基本上系统的所有用户都需要能够将此数据作为共享数据进行访问。在该程序的某些安装中,IT环境根本不安全,计算机只有一个用户,然后每个人分别登录到我们的程序。在该程序的其他安装中,IT人员是能干的,

c++ - 单例 : C++ shared dll

我正在创建一组共享单个dll的dll。共享库有一个单例。运行时,一些操作系统加载的库会生成我的单例的新实例。我如何才能强制所有使用我的dll的库和程序使用始终我的单例实例? 最佳答案 您不能只在多个进程之间共享您的单例实例。但您可以为此目的使用共享内存:以下示例演示了DLL入口点函数如何使用文件映射对象来设置可由加载DLL的进程共享的内存。共享DLL内存仅在加载DLL时持续存在。应用程序可以使用SetSharedMem和GetSharedMem函数来访问共享内存。http://msdn.microsoft.com/en-us/lib