小编Car*_*ory的帖子

微软是否有可能在未来的版本中逐步淘汰Win32 API?

我喜欢使用Win32,即使在.Net,MFC和touch时代.我的同事告诉我,在未来的Windows版本(Windows 9之后)中可能无法使用Win32 API,因为Microsoft可能会弃用它.

但是,这对我来说似乎是不可能的,因为Windows本身使用了这么多的API.如果他们摆脱了低级别的Win32 C库,操作系统本身就会停止工作,他们将不得不重新编写操作系统的大部分(更不用说所有可能被破坏的代码).

无论如何,我对这些东西知之甚少,是否有人对这是否不可能有任何技术上的了解?

另外,请注意我不会问Windows 将来是否弃用低级API,我知道这是推测性的.我的具体问题是,假设他们愿意,微软可以做到这一点是多么可行.

windows api winapi operating-system

8
推荐指数
1
解决办法
3240
查看次数

如何在C应用程序中使用我的C++ DLL?

环境是Windows,MS Visual Studio 2012.如何在C(而不是C++)应用程序中使用我用C++编写的DLL库?在我的DLL中,我使用了名称空间,类等.例如,我写了两个简单的项目:

  • DLL项目
  • EXE项目(使用DLL)

两者都是用C++编写的.任何人都可以向我展示一个用C编写的类似应用程序,它使用C++库吗?

谢谢.

c c++ dll visual-studio

7
推荐指数
1
解决办法
1879
查看次数

C++ LoadLibrary ERROR_NOACCESS"对内存位置的访问无效."

好吧,所以我有一个情况,我调用LoadLibrary我写的DLL.对LoadLibrary的此调用将返回错误#998或ERROR_NOACCESS"对内存位置的无效访问".

有问题的DLL在一种配置中使用MFC,而在另一种配置中不使用; 只有MFC配置有这个问题.它曾经工作,但我不知道我改变了什么:我实际上转向了非MFC版本,并且一直在修补它,我不知道我能做些什么影响了MFC版本.

我不太了解DLL.原来的加载代码实际上是给我的,我没有改变它.以下是该代码:

// submodule loading
#ifndef MFC
// Project uses standard windows libraries, define an entry point for the DLL to handle loading/unloading
BOOL WINAPI DllMain(HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
{
    _MESSAGE("DllMain called.");
    switch(dwReason)
    {
    case DLL_PROCESS_ATTACH:    // dll loaded
        hModule = (HMODULE)hDllHandle;  // store module handle
        _MESSAGE("Attaching Submodule ..."); 
        break;
    case DLL_PROCESS_DETACH:    // dll unloaded
        _MESSAGE("Detaching Submodule ...");      
        break;
    }   
    return true;
}
#else
// Project uses MFC, we define …
Run Code Online (Sandbox Code Playgroud)

c++ windows dll loadlibrary

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

Fluent Validation 与默认的 .NET 数据注释相比有何优势

FluentValidation 库相对于 .NET System.ComponentModel.DataAnnotations 有什么优势?

它是否提供更灵活的验证,因为它没有在属性上进行注释(静态字段验证),例如根据另一个属性值验证属性?

asp.net-mvc fluentvalidation data-annotations

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

替换SAS中的缺失值

如何用SAS中的零替换所有缺失值?我有一个文本文件,我转储到SAS处理一些地理数据,但每当它有一个缺失的值,它会打破操作.有没有办法在不指定每个字段的情况下改变它?我有200多个.

我这样做的方式是:

data geo_cali_north;
set geo_cali_north;
if polar_data eq . then 0;
if lat_xvar eq . then 0;
run;
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免为每个领域做到这一点?

etl sas

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

从Print Spooler API获取打印作业的用户域名

如何根据打印的作业ID获取进行打印的用户的域名?

我可以从例如通过GetJob检索的JOB_INFO_2获取用户名,但JOB_INFO_#结构中没有一个包含用户的域名.

我可以使用打印服务器的域名IPGlobalProperties.GetIPGlobalProperties().DomainName,但这可能与用户的域名不同,因此它不是一个可靠的解决方案.

.net c# winapi print-spooler-api

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

针对时间影响的bug(显然)的调试策略

我对python缺乏经验,所以我发现自己不知道如何处理这个bug.我继承了一个python应用程序,主要只是将文件和文件夹从一个地方复制到另一个地方.所有文件和文件夹都在本地计算机上,并且用户具有完全管理权限,因此此处没有网络或安全问题.

我发现很多文件无法从一个目录复制到另一个目录,除非我以某种方式减慢代码速度.如果我只是运行该程序它失败了,但是如果我单步执行调试器或print向复制循环添加语句,它就会成功.差异似乎是循环的时间或在内存中移动的东西.

我以前在编译语言中看到过这种错误,它通常表示竞争条件或内存损坏.但是,只有一个线程并且没有与其他进程的交互,因此竞争条件似乎是不可能的.内存损坏仍然存在,但我不确定如何用python调查这种可能性.

这是有问题的循环.如您所见,它相当简单:

def concat_dirs(dir, subdir):
    return dir + "/" + subdir

for name in fullnames:
    install_name = concat_dirs(install_path, name)
    dirname = os.path.dirname(install_name)
    if not os.path.exists(dirname): 
        os.makedirs(dirname)
    shutil.copyfile(concat_dirs(java_path, name), install_name)
Run Code Online (Sandbox Code Playgroud)

该循环通常无法复制文件,除非我使用调试器单步执行或shutil.copyfile在行后添加此语句.

    print "copied ", concat_dirs(java_path, name), " to ", install_name
Run Code Online (Sandbox Code Playgroud)

如果我在调试中添加该语句或逐步执行,则循环可以完美且一致地工作.我很想对声明说"足够好",print但我知道这只是掩盖了一个潜在的问题.

我不是要你调试我的代码,因为我知道你不能; 我要求调试策略.我该如何找到这个bug?

python python-2.7

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

避免ansi C中的SD卡损坏

我目前正在开发用于数据记录的嵌入式Linux设备.Linux设备插入CANbus并将流量写入SD卡.

SD卡有时会损坏并以只读方式安装.需要避免这种行为.

文件系统是FAT(SD卡应该可以被Windows系统读取).

嵌入式设备可以随时断电,因此我需要一种安全的方法从我的C程序写入SD卡.

由于我不是真的进入C,我依赖一个名为"candump"的程序,它基本上以这种格式将canmessages打印到stdout:

<0x006> [8] 77 00 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)

我的C程序基本上打开了candump程序,从stdout读取,添加时间戳并删除不必要的字符:

1345836055.520 6 7700000000000000


while(running)
{
    if (filename != NULL)
    {
        fp_log = fopen(filename, "a");
        if (!fp_log) 
        {
            perror("fopen");
            exit (EXIT_FAILURE);
        }  
    }  

    fgets(line, sizeof(line)-1, fp);

    /* reset the row_values so they are always correctly initialized */
    row_identifier = 0;

    if (strchr(line,'<') != NULL)
    {
        /* creating a buffer char to store values for casting char to int*/
        buffer_ident[0] = line[4];
        buffer_ident[1] = line[5];

        /* …
Run Code Online (Sandbox Code Playgroud)

c file-io can-bus sd-card embedded-linux

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

SQL脚本需要很长时间才能运行

我目前正在使用Microsoft Enterprise Library Data Access 5.0来执行存储过程.

Database myDatabase = DatabaseFactory.CreateDatabase();
using (DbCommand command = myDatabase.GetStoredProcCommand("myStoredProc"))
{
   //Add parameters here
   using (IDataReader dataReader = myDatabase.ExecuteReader(command))
   {
      while (dataReader.Read())
      {
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

一切正常但运行需要很长时间.当我打开SQL事件探查器时,我可以看到存储过程大约需要50秒才能运行.但是,如果我从Profiler中获取相同的脚本并在SQL Management Studio中运行它,则返回所有行只需要大约480毫秒.

有没有人遇到过这个问题?为什么会有很大的不同?

c# sql enterprise-library

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

如何从Windows服务调用我的DLL?

我创建了ac#库文件,它将转到本地路径,例如(c:\ test.txt)找到文件并上传到ftp服务器.

为了测试我只是从控制台应用程序调用dll,但我如何作为Windows服务运行,这将持续运行?

我想运行这个dll作为服务来监视c:\文件夹,如果任何文件像"test.txt"那样上传.

提前致谢

c# windows service file-monitoring

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