草庐IT

计数类DP

全部标签

windows - assembly 计数程序

我是汇编的新手,我正在尝试编写一个计数达到10,000并退出的程序。我正在使用fasm`include'include/win32ax.inc'.dataincharDB?numwrittenDD?numreadDD?outhandleDD?inhandleDD?strFormatDB"Number%d",0strBuffRB64.codestart:;setupconsoleinvokeAllocConsoleinvokeGetStdHandle,STD_OUTPUT_HANDLEmov[outhandle],eaxinvokeGetStdHandle,STD_INPUT_HANDL

COM 引用计数

美好的一天。什么是初始化COM接口(interface)引用计数的正确方法?我看到很多例子,其中引用计数被初始化为1,但也看到了设置为0的例子。什么是差异? 最佳答案 您必须这样设置它,以便在调用最后一个Release()时对象自行处理。这通常意味着当您创建对象时,在您处理指向请求该对象的调用者的对象指针之前,它的引用计数必须为1。您是将引用计数器初始化为零然后调用AddRef()(在将指针移交给调用方之前)还是将其初始化为1而不是调用AddRef()通常由您决定。 关于COM引用计数,

windows - 我可以使用寄存器作为循环计数器吗?

既然函数的调用约定规定了保留哪些寄存器,那么寄存器可以用作循环计数器吗?我一开始以为ecx寄存器是用来做循环计数器的,后来发现我用的一个stdcall函数并没有保留的值>ecx,我不这么认为。是否有保证(至少通过大多数使用的调用约定)被保留的寄存器?注意:我对使用堆栈变量作为循环计数器没有问题,我只是想确保这是唯一的方法。 最佳答案 您可以使用任何通用寄存器,偶尔也可以使用其他寄存器作为循环计数器(当然不是堆栈指针☺)。要么你使用一个手动循环,即替换...looplabel……与……decebpjnzlabel...无论如何都更快(

c++ - tchar 安全函数——UTF-8 常量的计数参数

我正在将一个库从char移植到TCHAR。根据MSDN,该片段的计数参数是多字节字符数,而不是字节数。那么,我做对了吗?我在VC9中的项目属性显示“使用unicode字符集”,我认为这是正确的,但我不知道这会如何影响我的计数参数。_tcsncmp(access,TEXT("ftp"),3);//ordoiwant_tcsnccmp?“仅在Windows平台上受支持,_mbsncmp和_mbsnbcmp是strncmp的多字节版本。_mbsncmp最多比较count个多字节字符,_mbsnbcmp最多比较count个字节。它们都使用当前的多字节代码页。_tcsnccmp和_tcsncmp

c++ - 从 C++ 公开的 Windows 性能计数器总是在 perfmon.exe 中产生 "Can' t 负载计数器

我正在尝试使用v2.0ofWindowsPerformanceCounters公开性能数据.我相信我已正确按照说明进行操作,但perfmon.exe总是对我的计数器集说“无法加载计数器”。这是我存储在名为PerformanceCounters.xml的文件中的list我通过运行创建一个.h和.rc文件:ctrppPerformanceCounters.xml-oPerformanceCounters.h-rcPerformanceCounters.rc这是我的测试代码:#include"PerformanceCounters.h"int_tmain(intargc,_TCHAR*arg

windows - Typepref 命令在运行远程命令时没有给出有效的计数器

我深陷其中。我正在尝试执行以下批处理命令,该命令在与远程服务器位于同一网络上的我的系统上成功运行,typeperf"\192.168.1.247\Processor(_Total)\%ProcessorTime"-sc2但是如果我尝试在同一网络上的另一台远程服务器上运行相同的命令,typeperf"\192.168.1.241\Processor(_Total)\%ProcessorTime"-sc2这给了我错误:没有有效的计数器。请让我知道可能是什么问题以及可能的解决方案。问候,苏沃git 最佳答案 尝试使用此命令刷新WMI:wi

c# - 设备进入休眠状态后 C# 计时器是否继续计数?

我使用C#创建了一个Windows服务,需要添加一个计时器,在此期间服务将处于空闲状态,并且应该仅在空闲超时发生后才开始处理。如果设备进入休眠状态,计时器会重新开始还是继续? 最佳答案 做了一点体操并确定了一个我认为可行的解决方案usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Threading;usingSystem.Diagnostics;namespaceTest{classProgram{staticvoidMain(strin

c++ - 递减原子计数器 - 但 <only> 在一个条件下

我想在这方面实现一些东西:inlinevoidDecrementPendingWorkItems(){if(this->pendingWorkItems!=0)//makesurewedon'tunderflowandgetaveryhighnumber{::InterlockedDecrement(&this->pendingWorkItems);}}我怎样才能做到这两个操作作为一个block都是原子的,而不使用锁? 最佳答案 你可以直接查看InterlockedDecrement()的结果如果它恰好是负数(或者Interlock

windows - 在 Windows cmd 脚本中添加计数器值

我的脚本与此类似:cdsetcounter=1for/r%%fin(*)do(echoTaskcompletedforfile>>C:\logcounter++)我不知道如何使用实际的counter值。如果我使用counter或%counter%它只是回显相同的字符串。在这种情况下,我应该如何修改counter行? 最佳答案 如果要计算数学表达式,SET必须与/A一起使用。您还需要首先通过在第一行键入SETLOCALENABLEDELAYEDEXPANSION来启用延迟扩展。**FOR**循环内的评估直到最后一次迭代发生才完成。但是

windows - Windows 中 dll 的默认加载计数是 0x0000ffff 吗?

使用windbg,通过!dlls命令获取带有加载计数的dll列表。观察到许多加载的dll的加载计数为0x0000ffff。这是默认值吗?那还有别的意思吗?0x00262fa8:C:\WINDOWS\system32\ole32.dllBase0x774e0000EntryPoint0x774fd0b9Size0x0013d000Flags0x80084006`LoadCount0x0000ffffTlsIndex0x00000000LDRP_STATIC_LINKLDRP_IMAGE_DLLLDR**strongtext**P_ENTRY_PROCESSEDLDRP_PROCESS_A