加载中…
个人资料
jackeagle
jackeagle
  • 博客等级:
  • 博客积分:0
  • 博客访问:9,573
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
访客
加载中…
博文
标签:

转载

因为看ogre

阅读  ┆ 评论  ┆ 转载原文 ┆ 收藏 
标签:

malloc/heapalloc

it

分类: windows核心编程

(1) VirtualAlloc

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2013-10-25 16:46)
标签:

两进程间传递数据

it

分类: windows核心编程


下面的例子演示了如何用内存映射文件来在两个或多个进程间传输数据

#include 'windows.h'
#include 'windowsx.h'
#include 'resource.h'

//函数声明
BOOL CALLBACK MyDialogProc(HWND hwndDlg,UINT message,
             WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE, LPSTR  lpCmdLine,int nShowCmd)
{
 //显示对话框
 DialogBox(hInstance,MAKEINTRESOURCE(IDD_MMFSHARE),NULL,MyDialogProc);
 return 0;
}

//对话框的回调函数
BOOL CALLBACK MyDialogProc(HWND hwndDlg,UINT message,
         WPARAM wParam,LPARAM lParam)
{
 static HANDLE s_hFileMap;
 switch(message)
 {
 case WM_INITDIALOG:
  {
   //在编辑框中写入些数据
   Edit_SetText(GetDlgItem(h

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

用内存映射文件来处理

it

分类: windows核心编程



#include 'stdafx.h'
#include 'windows.h'

int _tmain(int argc, _TCHAR* argv[])
{
 //先打开文件
 HANDLE hFile = CreateFile(TEXT('d:\\1.txt'),GENERIC_READ,FILE_SHARE_READ,NULL,
    OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,NULL);
 //获得文件的大小
 DWORD dwFileSize = ::GetFileSize(hFile,NULL);

 //创建文件映射对象
 //在这里的访问权限要写PAGE_READONLY 如果你写PAGE_READWRITE 会出现拒绝访问错误
 //你的句柄的值将为NULL
 HANDLE hFileMap= CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);

 CloseHandle(hFile);

 DWORD dwOffset = 0;
 DWORD dwNumber = 0;
 SYSTEM_INFO sif;

 //获得系统信息(主要获得分配粒度)
 //MapViewOfFile要求文件的偏移量为分配粒度的整数倍
 GetSystemInfo(&sif);
 while(dwFileSize>0)
 {
  DWORD dwBytesInBlock

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2013-10-25 08:55)
标签:

filereverse问题

it

分类: windows核心编程

#include 'windows.h'
#include 'windowsx.h'
#include 'Resource.h'
#include 'tchar.h'
#include 'commdlg.h'


下面用内存映射文件技术实现了对文件中的内容进行倒转
先介绍下小知识
UNICODE字节顺序标记(Byte-order Mark or BOM)
BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记,
在UTF-16里本来是FF FE,变成UTF-8就成了EF BB BF。这个标记是可选的,
因为UTF8字节没有顺序,所以它可以被用来检测一个字节流是否是UTF-8编码的。
微软做这种检测,但有些软件不做这种检测,而把它当作正常字符处理。
微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节,
windows上面的notepad等程序就是根据这三个字节来确定一个文本文件是ASCII的
还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件
做个这样的标记。也就是说一个UTF-8文件可能有BOM,
也可能没有BOM,那么怎么区分呢?三种方法。1,用UltraEdit-32打开文件,
切换到十六进制编辑模式,察看文件头部是否有EF BB BF。

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2013-10-25 07:32)
标签:

istextunicode()

it

分类: windows核心编程

对于需要打开文本文件并进行处理的大多数应用程序(比如编译器)而言,如果应用程序能够在打开一个文件之后,分辨此文件包含的是ANSI字符,还是Unicode字符,将是多么惬意而方便啊!由AdvApi32.dll导出、在WinBase.h中声明的IsTextUnicode函数有助于进行这种分辨:

 

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2013-10-24 21:10)
标签:

内存映射文件

it

分类: windows核心编程

使用内存映射文件:

(1)    

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

createfile

createfilemapping

it

分类: windows核心编程

#include 'stdafx.h'
#include 'windows.h'


int _tmain(int argc, _TCHAR* argv[])
{
 //创建文件内核对象
 HANDLE hFile = CreateFile(TEXT('D:\\hello.txt'),GENERIC_READ|GENERIC_WRITE,
    FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
 
 //创建文件映射对象
 HANDLE hFileMap = CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,100,NULL);

 //关闭文件映射对象和文件内核对象
 CloseHandle(hFileMap);
 CloseHandle(hFile);
 return 0;
}

 

当运行文件后,会在D盘创建一个文件该文件的大小是100字节

当给CreateFileMapping传入PAGE_READWRITE,如果在函数指定的字节数大于文件的大小则会增加文件的大小

当传入的是PAGE_READONLY或PAGE_WRITECOPY则指定的大小必须不大于文件在磁盘上的实际大小,因为我们不能给文件追加任何数据

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

转载

分类: windows核心编程
原文地址:虚拟地址与虚拟内存作者:morphling

    学生不才,这个虚拟地址与虚拟内存的问题困惑的我很长的时间,现在写一下最近看过一些资料后的理解吧,肯定存在不完整或者不正确的地方,希望大家可以纠正,如果能给你带来一些新知识,或者帮您复习了一下旧知识,我感到非常荣幸,下面开始,以32位的i386 CPU看。

    首先先来看看我一直以来认识的错误的地方。

    在最开始看书的时候,我知道程序在运行时,不是全部加入内存当中的,当然,这个现在依旧正确,在有了虚拟地址空间这个

阅读  ┆ 评论  ┆ 转载原文 ┆ 收藏 
(2013-10-24 15:00)
标签:

applicationinstance

it

分类: windows核心编程

#include 'windows.h'

#include

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有