操作系统实验报告

发布时间 : 星期五 文章操作系统实验报告更新完毕开始阅读

int Sub(int x,int y) { return x-y; //减法定义 }

代码(二)

// CallDllAddress.cpp : Defines the entry point for the console application. //

#include \

//#include \#include \#ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif

// The one and only application object

//CWinApp theApp;

//using namespace std;

int main(int argc, TCHAR* argv[], TCHAR* envp[]) { int s; int nRetCode = 0; typedef int (*pAdd)(int x,int y); typedef int (*pSub)(int x,int y); HMODULE hDll; pAdd add; pSub sub; hDll=LoadLibrary(\ //加载动态链接库文件 if(hDll==NULL) { printf(\ return nRetCode;

} else printf(\ add=(pAdd)GetProcAddress(hDll,\ //得到动态链接库中函数Add()的内部地址 s=(6,2); //显式调用 printf(\ sub=(pSub)GetProcAddress(hDll,\ //得到动态链接库中函数Sub()的内部地址 s=(6,2); //显式调用 printf(\ FreeLibrary(hDll); //释放动态链接库 return nRetCode; }

代码(三)

// CallDll.cpp : Defines the entry point for the console application. //

#include \

//#pragma comment(lib,\

extern \extern \int main(int argc, char* argv[]) { int x=7; int y=6; int add=0; int sub=0; printf(\ add=Add(x,y); sub=Sub(x,y); //隐式调用动态链接库 printf(\ return 0; }

五、总结

本实验主要采用隐式和显式两种调用方式加载动态链接库,与以往的实验有一定的不

同点,在调用之前要先编译好动态链接库,在隐式调用中,要将*.LIK 文件,拷贝到隐式文件夹中,并在vc++中对数据库进行连接。

实验六

采用高速缓存实现文件读/写

一、实验目的

(1)了解Windows系统文件高速缓存的概念。 (2)熟悉Windows系统文件读/写相关API。

(3)掌握采用缓冲方式实现文件读/写相关参数的设置。

二、实验内容

建立一个函数,使用该函数将源文件source.txt中的内容读出,再写到目标文件sequential.txt中去。

三、实验要求

采用高速缓存方式完成文件的读/写。 四、参考实验代码

#include \#include \#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif

DWORD BufferSize =1024; char buf[1024];

void FileReadWrite_Sequential_Scan(char* source,char* destination); int main(int argc, TCHAR* argv[], TCHAR* envp[]) {

int nRetCode = 0;

}

void FileReadWrite_Sequential_Scan(char* source,char* destination) {

HANDLE handle_src,handle_dst;

DWORD NumberOfByteRead,NumberOfByteWrite; BOOL cycle; char *buffer; buffer=buf; //建立文件

handle_src=CreateFile(source,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_FLAG_SEreturn nRetCode;

printf(\

FileReadWrite_Sequential_Scan(\

QUENTIAL_SCAN,NULL);

handle_dst=CreateFile(destination,GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FIL

E_FLAG_SEQUENTIAL_SCAN,NULL);

if (handle_src==INVALID_HANDLE_VALUE||handle_dst==INVALID_HANDLE_VALUE) { }

cycle=TRUE; while (cycle) {

NumberOfByteRead=BufferSize; //读文件

if (!ReadFile(handle_src,buffer,BufferSize,&NumberOfByteRead,NULL)) printf(\exit(1);

联系合同范文客服:xxxxx#qq.com(#替换为@)