Windows API DuplicateHandle() http://msdn.microsoft.com/en-us/library/ms724251(VS.85).aspx 需要复制 对象句柄以及原始进程和其他进程的句柄您想在其中使用重复的句柄。
我假设如果我有两个不相关的进程,只要我有所需的句柄,我就可以在任一进程中调用 DuplicateHandle() 吗?
我的问题是关于使用管道在两个进程之间进行通信以通过事件实现这一点。
在第一个过程中我 CreateEvent()。现在我想在第二个进程中使用 WaitForSingleObject() 。
如果我尝试在第一个进程中复制句柄,我需要首先通过管道将第二个进程句柄发送到第一个进程,复制句柄,然后将句柄发送到第二个进程?
或者,我可以首先将第一个进程句柄和事件句柄发送到第二个进程,然后在那里复制它。
我有什么理由应该选择一个而不是另一个吗?
为了添加一个皱纹,事件句柄实际上是从实际调用第一个进程(这是一个 CGI 应用程序)的父进程继承的。如果该事件句柄是使用 HANDLE_DO_NOT_DUPLICATE(类似的东西)创建的,那么我实际上可以使用 DuplicateHandle() 为第二个进程复制它吗?
回复:
好吧,我可以在第一个进程中创建一个新的 NAMED 事件,并按照建议在第二个进程中找到它,但我试图复制在第一个进程的父进程中创建的事件并将其转发给第二个进程。此事件不是命名事件,因此我需要使用 DuplicateHandle()。
我正在为 IPC 使用管道。我意识到 DuplicateHandle() 必须在第一个进程中调用,因为事件句柄在发送到第二个进程时脱离了上下文。
hProcPseudo = GetCurrentProcess()
//Then call either:
lpRealHandle = OpenProcess( PROCESS_DUP_HANDLE, 0, hProcPseudo )
//This fails with GetLastError= 87 - The parameter is incorrect ???
// same thing with PROCESS_ALL_ACCESS ??
//OR
lRet = DuplicateHandle( hProcPseudo, hProcPseudo, hProcPseudo, lpRealHandle, DUPLICATE_SAME_ACCESS, 0, 0 )
//then I can Duplicate my …
Run Code Online (Sandbox Code Playgroud) 我做了一个窗口服务,它基本上是在我的机器上读取一个临时文件,将其读取到数据库然后删除它.我已经在onStart
方法中编写了这些操作的代码,因此我需要在需要它时再次重新启动服务,但我真正需要的是服务应该自动感知文件夹中文件的创建然后工作在上面.
那么我应该将这个特定代码放在我的Windows服务中?
我正在尝试从FpML(Finanial产品标记语言)4.5版生成Java类.生成了大量代码,但我无法使用它.尝试序列化一个简单的文档,我得到这个:
javax.xml.bind.MarshalException
- with linked exception: [com.sun.istack.SAXException2: unable
to marshal type
"org.fpml._2008.fpml_4_5.PositionReport"
as an element because it is missing an
@XmlRootElement annotation]
Run Code Online (Sandbox Code Playgroud)
实际上没有类有@XmlRootElement注释,所以我可以做错什么?我将xjc(JAXB 2.1)指向fpml-main-4-5.xsd,然后包含所有类型.
我为我的应用程序的P&D创建了一个标准的MSI安装程序,它使用以下组件:
安装程序工作得非常好,没有任何问题.当用户尝试使用MSI安装程序在现有应用程序上再次安装应用程序时,会出现此问题.目前,它提供了2个选项"修复"和"删除"的屏幕.这两个选项都不起作用并破坏了所安装的应用程序.
我想要的是跳过这个屏幕并显示类似MessageBox的内容,说已经安装了应用程序.因为我不是必须向用户提供修复选项.至少我应该能够隐藏或以某种方式不提供修复选项.
对我有任何帮助或建议?所以,到目前为止,我已经尝试了很多东西,比如使用ORCA添加NotRepair属性等等.但是没有一个能够工作.
鉴于日期,2009/04/30,我希望在其中一行中检索所有日期<= 2009/04/30和> = 2009/04/30.sql语句是这样的:
select dateColumn from someTable where dateColumn <= '2009/4/30'
select dateColumn from someTable where dateColumn >= '2009/4/30'
Run Code Online (Sandbox Code Playgroud)
上面的两个语句运行但第一个语句返回2009/04/30以下的所有日期,它似乎排除日期,即使它出现在数据库中.知道为什么会这样吗?我如何比较sql中DateTime对象的日期部分?
我需要一个非常非常快速的一对一算法.该算法不需要是牢不可破的.合理的强度足够但它必须闪电般快速.我将在硬件中实现它.区域也是一个问题,所以它不应该使用太多的逻辑.
它应该是一个函数f_N(x),其输入是一个N位数,其输出是一个N位数.N是常数,可能在20-70之间.该功能必须是一对一的.(即可逆,意味着解密是可能的.解密速度无关紧要.)
我需要在3ns以下加密,每秒大约333M输入.例如,DES每秒大约需要50Mbits.我每秒需要333M 输入.
到目前为止,我已经使用了大约6轮的Feistel密码.这似乎需要大约3ns.
建议?
更多笔记
有一些问题所以我会解释.我需要将密钥放入哈希表.标准方法是对输入键进行哈希处理,并将结果用作表的索引.表中的每一行都必须存储原始密钥. 信息理论告诉我们,表中的行实际上并不需要一样宽的输入键,而是宽的输入键少的位数在表的地址.例如:
在CPU上整数通常是相同的宽度是愚蠢的,但我在硬件中这样做.
x%128是一个易于破解的哈希.实际上,如果输入键仅在前几位中有所不同,那么您将在意外时打破哈希.我想要一个不会在事故中被打破的哈希,甚至可能难以故意破坏.我也试过LFSR.LFSR很快但两个相等长度的LFSR生成线性相关的哈希结果.(如果f(x)和g(x)给出两个不同多项式的相同散列,则f(x + 1)和g(x + 1)很容易相关.)
因此,我需要一个具有N位输入和V位,H位输出(V + H = N)的函数,其中很难找到两个长度为N的输入,这样两者都将输出相同的H.加密适合于因为它使输出留下与输入相同的长度,并且很难反转.加密以外的东西也可能有用,虽然看起来我想要的几乎就是加密的定义.
很抱歉没有解释所有这些.希望这能澄清事情.
为了只允许运行应用程序的单个实例,我正在使用互斥锁.代码如下.这是正确的方法吗?代码中是否有任何缺陷?
当用户第二次尝试打开应用程序时,如何显示已在运行的应用程序.目前(在下面的代码中),我只是显示另一个实例已在运行的消息.
static void Main(string[] args)
{
Mutex _mut = null;
try
{
_mut = Mutex.OpenExisting(AppDomain.CurrentDomain.FriendlyName);
}
catch
{
//handler to be written
}
if (_mut == null)
{
_mut = new Mutex(false, AppDomain.CurrentDomain.FriendlyName);
}
else
{
_mut.Close();
MessageBox.Show("Instance already running");
}
}
Run Code Online (Sandbox Code Playgroud) 我正在阅读Heads First C#(它非常有趣且用户友好),但我想知道是否有人有一个有用的比喻来描述名称空间,类,方法,属性等如何"融合在一起"?
类是父类,方法是小孩等,还是更复杂?
一个名字空间可以是一个房子,一个类是一个房间(浴室)和一个方法可以在那个房间里做什么(洗涤等)和属性是做这项活动时可以做的,使用肥皂,热水...
......我会得到我的外套.
由于jquery,由于某些奇怪的原因,我收到错误"对象预期",并且这不会"提交"表单或将数据输入数据库.
没有jquery,数据可以输入数据库.但现在却没有.
我使用jquery主要用于验证asp.net控件.
roosteronacid,验证工作完全正常,id属性也相同.提交只是没有执行服务器端代码,我无法弄清楚是什么问题.
编辑:
这是jquery代码:
<script type="text/javascript">
$(document).ready(function() {
// add custom validation methods
$.validator.addMethod('phone', function(value, el, params) {
return this.optional(el) || /^[0-9,+,(), ,]{1,}(,[0-9]+){0,}$/.test(value);
}, 'Please enter a valid phone number');
$.validator.addMethod('numbers', function(value, el, params) {
return this.optional(el) || /^[0-9]+$/.test(value);
}, 'Invalid entry. Only Numeric is allowed.');
$.validator.addMethod('domainurl', function(value, el, params) {
return this.optional(el) || /^(http\:\/\/(?:www\.)?[a-zA-Z0-9]+(?:(?:\-|_)[a-zA-Z0-9]+)*(?:\.[a-zA-Z0-9]+(?:(?:\-|_)[a-zA-Z0-9]+)*)*\.[a-zA-Z]{2,4}(?:\/)?)$/.test(value);
}, 'Please enter a valid domain url');
$.validator.addMethod('selectone', function(value, element) {
return this.optional(element) || (value.indexOf("none") == -1);
}, 'Please select an option.');
$("#form1").validate({ …
Run Code Online (Sandbox Code Playgroud) 我经常需要阅读具有相当简单结构的大XML文件(> 100 MB).我想使用emacs,但它不能很好地支持大文件.我想也许我可以使用一个java应用程序,可以为我做SAX或StAX解析,并为我提供所有必要的操作(例如搜索).在emacs和外部Java应用程序之间进行通信的"正确方法"是什么?
c# ×3
c++ ×1
cryptography ×1
database ×1
elisp ×1
emacs ×1
encryption ×1
fpml ×1
hardware ×1
installer ×1
ipc ×1
java ×1
jaxb ×1
jquery ×1
mutex ×1
namespaces ×1
object ×1
oop ×1
option ×1
repair ×1
sql ×1
sql-server ×1
submit ×1
validation ×1
web-services ×1
winapi ×1
xjc ×1