通过调用CreateFile和ReadFile等API函数说明此问题,代码参考MSDN:

http://msdn2.microsoft.com/zh-cn/library/2d9wy99d(vs.80).aspx

C#调用API函数示例usingSystem;
C#调用API函数示例
usingSystem.Collections.Generic;
C#调用API函数示例
usingSystem.Linq;
C#调用API函数示例
usingSystem.Text;
C#调用API函数示例
C#调用API函数示例
namespaceApiTest
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
classFileReader
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
constuintGENERIC_READ=0x80000000;
C#调用API函数示例
constuintOPEN_EXISTING=3;
C#调用API函数示例System.IntPtrhandle;
C#调用API函数示例
C#调用API函数示例[System.Runtime.InteropServices.DllImport(
"kernel32",SetLastError=true)]
C#调用API函数示例
staticexternunsafeSystem.IntPtrCreateFile
C#调用API函数示例(
C#调用API函数示例
stringFileName,//filename
C#调用API函数示例
uintDesiredAccess,//accessmode
C#调用API函数示例
uintShareMode,//sharemode
C#调用API函数示例
uintSecurityAttributes,//SecurityAttributes
C#调用API函数示例
uintCreationDisposition,//howtocreate
C#调用API函数示例
uintFlagsAndAttributes,//fileattributes
C#调用API函数示例
inthTemplateFile//handletotemplatefile
C#调用API函数示例
);
C#调用API函数示例
C#调用API函数示例[System.Runtime.InteropServices.DllImport(
"kernel32",SetLastError=true)]
C#调用API函数示例
staticexternunsafeboolReadFile
C#调用API函数示例(
C#调用API函数示例System.IntPtrhFile,
//handletofile
C#调用API函数示例
void*pBuffer,//databuffer
C#调用API函数示例
intNumberOfBytesToRead,//numberofbytestoread
C#调用API函数示例
int*pNumberOfBytesRead,//numberofbytesread
C#调用API函数示例
intOverlapped//overlappedbuffer
C#调用API函数示例
);
C#调用API函数示例
C#调用API函数示例[System.Runtime.InteropServices.DllImport(
"kernel32",SetLastError=true)]
C#调用API函数示例
staticexternunsafeboolCloseHandle
C#调用API函数示例(
C#调用API函数示例System.IntPtrhObject
//handletoobject
C#调用API函数示例
);
C#调用API函数示例
C#调用API函数示例
publicboolOpen(stringFileName)
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
//opentheexistingfileforreading
C#调用API函数示例
handle=CreateFile
C#调用API函数示例(
C#调用API函数示例FileName,
C#调用API函数示例GENERIC_READ,
C#调用API函数示例
0,
C#调用API函数示例
0,
C#调用API函数示例OPEN_EXISTING,
C#调用API函数示例
0,
C#调用API函数示例
0
C#调用API函数示例);
C#调用API函数示例
C#调用API函数示例
if(handle!=System.IntPtr.Zero)
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
returntrue;
C#调用API函数示例}

C#调用API函数示例
else
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
returnfalse;
C#调用API函数示例}

C#调用API函数示例}

C#调用API函数示例
C#调用API函数示例
publicunsafeintRead(byte[]buffer,intindex,intcount)
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
intn=0;
C#调用API函数示例
fixed(byte*p=buffer)
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
if(!ReadFile(handle,p+index,count,&n,0))
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
return0;
C#调用API函数示例}

C#调用API函数示例}

C#调用API函数示例
returnn;
C#调用API函数示例}

C#调用API函数示例
C#调用API函数示例
publicboolClose()
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
returnCloseHandle(handle);
C#调用API函数示例}

C#调用API函数示例}

C#调用API函数示例
C#调用API函数示例
classProgram
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
staticintMain(string[]args)
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
if(args.Length!=1)
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例System.Console.WriteLine(
"Usage:ReadFile<FileName>");
C#调用API函数示例
return1;
C#调用API函数示例}

C#调用API函数示例
C#调用API函数示例
if(!System.IO.File.Exists(args[0]))
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例System.Console.WriteLine(
"File"+args[0]+"notfound.");
C#调用API函数示例
return1;
C#调用API函数示例}

C#调用API函数示例
C#调用API函数示例
byte[]buffer=newbyte[128];
C#调用API函数示例FileReaderfr
=newFileReader();
C#调用API函数示例
C#调用API函数示例
if(fr.Open(args[0]))
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例
//AssumethatanASCIIfileisbeingread.
C#调用API函数示例
System.Text.ASCIIEncodingEncoding=newSystem.Text.ASCIIEncoding();
C#调用API函数示例
C#调用API函数示例
intbytesRead;
C#调用API函数示例
do
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例bytesRead
=fr.Read(buffer,0,buffer.Length);
C#调用API函数示例
stringcontent=Encoding.GetString(buffer,0,bytesRead);
C#调用API函数示例System.Console.Write(
"{0}",content);
C#调用API函数示例}

C#调用API函数示例
while(bytesRead>0);
C#调用API函数示例
C#调用API函数示例fr.Close();
C#调用API函数示例
return0;
C#调用API函数示例}

C#调用API函数示例
else
C#调用API函数示例C#调用API函数示例
...{
C#调用API函数示例System.Console.WriteLine(
"Failedtoopenrequestedfile");
C#调用API函数示例
return1;
C#调用API函数示例}

C#调用API函数示例
C#调用API函数示例}

C#调用API函数示例}

C#调用API函数示例}

C#调用API函数示例

特别要注意的是,由于代码中用到了unsafe代码,因此,编译的时候需要在项目属性中勾选允许编译Unsafe的选项:

C#调用API函数示例

否则会报:

Unsafe code may only appear if compiling with /unsafe

的错误。

相关文章:

  • 2021-08-22
  • 2021-12-16
  • 2021-08-08
  • 2021-11-04
  • 2021-06-10
猜你喜欢
  • 2021-07-19
  • 2021-07-14
  • 2021-12-07
  • 2022-12-23
  • 2022-02-01
  • 2021-11-02
相关资源
相似解决方案