Articles of 指针

如何通过一个mmap映射内存指针来立即刷新写入?

在双ARM处理器系统(准确地说是Xilinx Zynq)上使用/ dev / mem和mmap时,我看起来像是一个caching问题。 我的configuration是不对称的,一个处理器运行Linux,另一个处理器运行裸机应用程序。 它们通过不在Linux虚拟内存空间的RAM块进行通信(它被devicetree文件排除)。 当我的用户空间Linux应用程序使用从mmap()返回的指针写入内存时,第二个处理器可能需要从100 ms到超过一秒的时间才能检测到已更改的内存内容。 在对/ dev / mem的open()调用中,我试图指定O_RDRW,O_SYNC和O_DIRECT,但是O_DIRECT导致打开失败,所以我删除了O_DIRECT。 我认为O_SYNC应该保证在write()调用返回之前将数据写入内存,但是我使用内存指针而不是通过write()写入。 在mmap()调用中,我看不到任何可能解决caching问题的参数。 我已经尝试在写入内存后调用fsync(fd)和fdatasync(),但是这并没有改变行为。 什么DID似乎工作是在内存写入后立即产生这个命令:sync; 回声3 / proc / sys / vm / drop_caches 通过映射的内存指针立即刷新写入最简单的方法是什么?

Linux内核代码中的“current”

当我正在浏览下面的Linux字符驱动程序代码块时,我发现printk的结构指针是current的。 我想知道current指向什么结构及其完整的元素。 这个结构的目的是什么? ssize_t sleepy_read (struct file *filp, char __user *buf, size_t count, loff_t *pos) { printk(KERN_DEBUG "process %i (%s) going to sleep\n", current->pid, current->comm); wait_event_interruptible(wq, flag != 0); flag = 0; printk(KERN_DEBUG "awoken %i (%s)\n", current->pid, current->comm); return 0; }

如何在C上设置鼠标光标位置?

我如何在Linux下使用C程序在X窗口中设置鼠标光标的位置? 谢谢:)(如WIN中的setcursorpos()) 编辑:我试过这段代码,但不起作用: #include <curses.h> main(){ move(100, 100); refresh(); }

获取进程的基地址

我想访问一个进程的某个地址。 但为此,我需要首先获取进程的基地址。 我正在使用一个工具,看看我是否真的做对了。 该工具显示我需要以下内容: "app.exe"+0x011F9B08 = 0x119F8300 我以为我可以通过OpenProcess()获得进程的基地址,但是这给了我: 0x0000005c作为结果。 我不认为这是对的? 至less,不是我所需要的。 我认为我需要的基地址是: 0x119F8300 – 0x011F9B08 = 0x107FE7F8 <– base? 这是我的代码: hWindow = FindWindow(NULL, lpWindowName); if(hWindow) { GetWindowThreadProcessId(hWindow, &dwProcId); if(dwProcId != 0) { // hProcHandle -> 0x0000005c hProcHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcId); } else { return 0; } } 我怎样才能得到我打开过程的基地址?

在C ++中传递函数指针

我想做这个简单的代码工作。 #include <iostream> #include <windows.h> void printSome (int i) { std::cout << i << std::endl; } void spawnThread (void (*threadName)(int i)) { CreateThread ( 0, // default security attributes 0, // use default stack size (LPTHREAD_START_ROUTINE)threadName, // thread function name (LPVOID)i, // argument to thread function 0, // use default creation flags 0 // returns […]

HALF_PTR Windows数据types

VS文档指出 一个指针的大小的一半。 在包含指针和两个小字段的结构中使用。 究竟是什么types,如何使用?

是否有可能从应用程序访问内存到另一个? 怎么样?

标题有点困惑。 但是,我试图做的是一些事情: 我有一个应用程序中的button(来自TButton类Button1)。 我想获得这个button的指针值,并从第二个应用程序检查它的属性。 有人可以说是否有可能? 如果不是,解释为什么? 韩国社交协会。 重新开放,因为我在互联网上获得其他信息。 如果我使用的东西? ReadProcessMemory 示例: http : //www.codeproject.com/KB/threads/int64_memsteal.aspx http://forum.cheatengine.org/viewtopic.php?p=4150408&sid=2358f118bab9f54b032d99377aed0545

使用MapViewOfFile,指针最终走出内存空间

所有, 我正在使用MapViewOfFile在内存中保存文件的一部分。 有一个stream指向这个文件,并写入它,然后倒带。 我使用指向映射文件的开始的指针,并阅读,直到我得到作为最终字符的空字符。 int fd; yyout = tmpfile(); fd = fileno(yyout); #ifdef WIN32 HANDLE fm; HANDLE h = (HANDLE) _get_osfhandle (fd); fm = CreateFileMapping( h, NULL, PAGE_READWRITE|SEC_RESERVE, 0, 4096, NULL); if (fm == NULL) { fprintf (stderr, "%s: Couldn't access memory space! %s\n", argv[0], strerror (GetLastError())); exit(GetLastError()); } bp = (char*)MapViewOfFile( fm, FILE_MAP_ALL_ACCESS, 0, […]