发布时间 : 星期五 文章操作系统实验报告更新完毕开始阅读
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);