CreateFile, ReadFile, Write File 몇 개의 windowsAPI 함수

5042 단어 C
CreateFile 원형
HANDLE CreateFile(LPCTSTR lpFileName, //            
DWORD dwDesiredAccess, //    ( / )
DWORD dwShareMode, //    
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //         
DWORD dwCreationDisposition, //    
DWORD dwFlagsAndAttributes, //    
HANDLE hTemplateFile //        
);

반환 값: HANDLE 형식 정의 \ # typedef void * HANDLE INVALIDHANDLE_VALUE 가 오 류 를 표시 하면 GetLastError () 의 값 을 설정 합 니 다. 작업 에 성공 하면 속성 CREATE 를 설정 합 니 다.ALWAYS 또는 OPENALWAYS 는 GetLastError () 값 을 ERROR 로 설정 합 니 다.ALWAYS_EXITS
매개 변수 목록 설명: 1. LPCTSTR lpFileName 파일 이름 2. DWORD dwDesiredAccess 설정 접근 방식 은 다음 과 같 습 니 다: GENERICWRITE 는 GENERIC 만 씁 니 다.READ 는 값 이 0 이면 장치 속성 만 얻 을 수 있 고 읽 기와 쓰기 가 불가능 함 을 나 타 냅 니 다.
3. DWORD dwShareMode, / / 공유 모드 0 은 파일 을 공유 하지 않 음 FILESHARE_READ 파일 열기 후 읽 기 권한 만 FILESHARE_WRITE 파일 열기 후 쓰기 권한 만 FILESHARE_DELETE 파일 열기 후 삭제 권한 만 있 음
4.LPSECURITY_ATTRIBUTES lpSecurity Attributes, / / 보안 속성 을 가리 키 는 지침
5. DWORD dwCreationDisposition, / / CREATE 를 만 드 는 방법새 파일 만 들 기;파일 이 존재 하면 오류 발생 CREATEALWAYS 에서 파일 을 만 들 고 이전 파일 을 바 꿉 니 다 OPENEXISTING 파일 이 이미 존재 해 야 합 니 다.장치 요구 OPENALWAYS 파일 이 존재 하지 않 으 면 생 성 TRUNCATEEXISTING 은 기 존 파일 을 0 길이 로 줄 였 습 니 다.
6. DWORD dwFlagsAndAttributes, / / 파일 속성 은 보통 기본 속성 FILE 을 사용 합 니 다.ATTRIBUTE_NORMAL FILE_ATTRIBUTE_ARCHIVE 태그 압축 파일 속성 FILEATTRIBUTE_COMPRESSED 는 파일 을 압축 된 것 으로 표시 하거나 디 렉 터 리 에 있 는 파일 의 기본 압축 방식 으로 표시 합 니 다 FILEATTRIBUTE_NORMAL 기본 속성 FILEATTRIBUTE_HIDDEN 파일 이나 디 렉 터 리 숨 기기 FILEATTRIBUTE_READOnlY 파일 은 FILE 만 읽 기ATTRIBUTE_SYSTEM 파일 은 시스템 파일 FILEFLAG_WRITE_THROUGH 운영 체 제 는 파일 에 대한 쓰기 동작 을 연기 할 수 없습니다 FILEFLAG_OVERLAPPED 파일 중첩 작업 허용 FILEFLAG_NO_BUFFERING 은 파일 버퍼 처 리 를 금지 합 니 다.파일 은 디스크 볼 륨 의 섹 터 블록 에 만 쓸 수 있 습 니 다 FILEFLAG_RANDOM_ACCESS 는 무 작위 접근 을 위 한 파일 버퍼 최적화 FILEFLAG_SEQUENTIAL_SCAN 연속 접근 에 대한 파일 버퍼 최적화 FILEFLAG_DELETE_ON_마지막 으로 열 린 핸들 을 닫 고 파일 을 삭제 합 니 다.임시 파일 에 특히 적합 합 니 다.
7. HANDLE hTemplateFile / / 파일 핸들 hTemplateFile 을 파일 이나 장치 핸들 로 복사 하 는 데 사 용 됩 니 다. 이 매개 변수 에 따라 제 시 된 핸들 을 템 플 릿 으로 파일 을 만 드 는 것 을 표시 합 니 다.이 파일 의 속성 을 새로 만 든 파일 로 확장 합 니 다. 이 인 자 는 새 파일 의 속성 을 기 존 파일 과 같이 설정 하 는 데 사용 할 수 있 으 며, dwAttrsAndFlags 를 무시 합 니 다.보통 이 매개 변 수 는 NULL 로 설정 되 어 있 으 며, 비어 있 으 면 템 플 릿 을 사용 하지 않 고 비어 있 음 을 표시 합 니 다.내 가 이해 하 는 것 은 파일 의 속성 을 복사 하 는 것 이다. hTemplateFile 의 핸들 파일 속성 으로 파일 을 여 는 속성 을 설정 하 는 것 이다.
Create File 에 대응 하 는 것 은 closehandle 입 니 다.
BOOL CloseHandle(HANDLE hObject);

반환 값: 0 값 이 아 닌 실행 을 성공 적 으로 되 돌려 주 는 데 실 패 했 습 니 다. 0 값 매개 변 수 는 handle 하나 뿐 입 니 다. CreateFile 은 핸들 을 되 돌려 줍 니 다. 그러면 CloseHandle 은 이 핸들 을 닫 습 니 다.
ReadFile 원형
BOOL ReadFile(
    HANDLE hFile,                                    //     
    LPVOID lpBuffer,                                //              
    DWORD nNumberOfBytesToRead,    //       
    LPDWORD lpNumberOfBytesRead,    //            
    LPOVERLAPPED lpOverlapped
    //         FILE_FLAG_OVERLAPPED,    ,              。
    //              。  ,        NULL
);

사용 설명: 반환 값, 호출 성공, 비 0 값 호출 실패, 0 반환
매개 변수 설명: 1. HANDLE hFile 은 CreateFile 을 받 아서 발생 하 는 핸들 을 조작 해 야 하 는 문제 입 니 다. 적어도 이 핸들 은 GENERIC 가 있 습 니 다.READ 접근 속성 권한 2. LPVOID ipBuffer, 데 이 터 를 받 는 버퍼 3. LPDWORD ipNumberOfBytes Read, 읽 기 성공 한 문자 수, 포인터 4. LPOVERLAPPED ipOverlapped 파일 이 FILE 이면FLAG_OVERLAPPED 방식 으로 열 면 이 포인 터 는 중첩 동작 을 가리 키 고 있 습 니 다.
WriteFile 원형
BOOL WriteFile(
HANDLE  hFile,//    
LPCVOID lpBuffer,//       
DWORD   nNumberOfBytesToWrite,//       
LPDWORD lpNumberOfBytesWritten,//                   
LPOVERLAPPED lpOverlapped//OVERLAPPED     
);


반환 값: 호출 에 성 공 했 습 니 다. 0 값 이 아 닌 호출 에 실 패 했 습 니 다. 0 값 매개 변 수 를 되 돌려 줍 니 다. 설명: 1. HANDLE hFile 은 Create File 을 받 아서 발생 하 는 핸들 을 조작 해 야 하 는 문제 입 니 다. 적어도 이 핸들 은 GENERIC 가 있 습 니 다.READ 접근 속성 권한 2. LPVOID ipBuffer, 데 이 터 를 기록 할 버퍼 3. LPDWORD ipNumberOfBytes Read, 성공 적 인 문자 수 를 기록 합 니 다. 포인터 4. LPOVERLAPPED ipOverlapped 파일 이 FILE 이면FLAG_OVERLAPPED 방식 으로 열 면 이 포인 터 는 중첩 동작 을 가리 키 고 있 습 니 다.
#include 
#include 

#define BUF_SIZE 256

int main(int argc,LPTSTR argv[])
{
	HANDLE hIn,hOut;
	DWORD size_in,size_out;
	CHAR buffer[BUF_SIZE];

	if(3 != argc)
	{
		printf("      :%s filename1 filename2",argv[0]);
		return 1;
	}

	hIn = CreateFile(argv[1],
		GENERIC_READ,
		FILE_SHARE_READ,
		NULL,
		OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL,
		NULL);
	if(hIn == INVALID_HANDLE_VALUE)
	{
		printf("      。    :%d
",GetLastError()); return 1; } hOut = CreateFile(argv[2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(hOut == INVALID_HANDLE_VALUE) { printf(" 。 :%d
",GetLastError()); return 2; } while(ReadFile(hIn,buffer,BUF_SIZE,&size_in,NULL) && size_in) { WriteFile(hOut,buffer,size_in,&size_out,NULL); if(size_in != size_out) { printf(" !
:%d
",GetLastError()); return 3; } } CloseHandle(hIn); CloseHandle(hOut); return 0; }

좋은 웹페이지 즐겨찾기