Admin | Write | GuestBook
[공지] 해당 블로그에 용건이 있으신 분께서는 http://blog.fore.kr/ 의 방명록(Guestbook)으로 부탁드립니다.
SchoolMate2 한글판 실행기
Category : Programming/Release Patch | URL : | Written by 포레 ( 2010. 6. 27. 21:58 ) | 신고






오늘 하루 너무 심심해서 대충대충 작업해봤네요 ' ' ;

오류 있으면 제보 부탁드립니다 ~

[API] 모든 드라이브 경로 구하기
Category : Programming/Programming Talk | URL : | Written by 포레 ( 2010. 4. 11. 04:39 ) | 신고


문득, MSDN에서 놀다가 FindFirstVolume 함수가 보이길래 한번 써보도록 해보자~

일단, 모든 드라이브의 경로를 구하기 위해선 아래와 같은 함수가 필요하다.

FindFirstVolume, FindNextVolume, FindVolumeClose, GetVolumePathNamesForVolumeName

마지막에 무지하게 기네 . . .

일단, 하나하나 함수의 구조를 보자 'ㅅ'~




 HANDLE WINAPI FindFirstVolume(
   __out  LPTSTR lpszVolumeName,
   __in   DWORD cchBufferLength
 );


lpszVolumeName [out]
- GUID 볼륨 코드를 읽어온다.

cchBufferLength [in]
- 위 lpszVolumeName 의 문자열 메모리 크기를 집어넣으면 된다.

이 함수의 리턴값은 반드시 어떤곳에 저장해둬야 합니다.
실패하면, 리턴값은 INVALID_HANDLE_VALUE 으로 변하고,
GetLastError로 정확한 오류를 볼 수 있습니다.




 BOOL WINAPI FindNextVolume(
   __in   HANDLE hFindVolume,
   __out  LPTSTR lpszVolumeName,
   __in   DWORD cchBufferLength
 );


hFindVolume [in]
- FindFirstVolume 함수에서 구한 핸들값을 집어넣는다.

lpszVolumeName [out]
- GUID 볼륨 코드를 읽어온다.

cchBufferLength [in]
- 위 lpszVolumeName 의 문자열 메모리 크기를 집어넣으면 된다.


리턴값으로 다음 볼륨이 존재 유무를 확인할 수 있다.




 BOOL WINAPI FindVolumeClose(
   __in  HANDLE hFindVolume
 );


hFindVolume [in]
- FindFirstVolume 함수에서 구한 핸들값을 집어넣는다.




 BOOL WINAPI GetVolumePathNamesForVolumeName(
   __in   LPCTSTR lpszVolumeName,
   __out  LPTSTR lpszVolumePathNames,
   __in   DWORD cchBufferLength,
   __out  PDWORD lpcchReturnLength
 );


lpszVolumeName [in]
- GUID 볼륨 코드를 넣는다.

lpszVolumePathNames [out]
- 해당 GUID 볼륨 코드을 가진 볼륨의 메인 디렉토리 경로를 구한다.

cchBufferLength [in]
- lpszVolumePathNames의 문자열 메모리 크기를 집어넣으면 된다.

lpcchReturnLength [out]
- 해당 함수가 성공할 경우 디렉토리 경로의 문자열 갯수가 여기에 담긴다.




Ex ) 모든 드라이브의 경로를 구하는 소스


 // 2010. 04. 11 Volume Find
 // Coding by Fore ( http;//foreblog.tistory.com/ )

 #include <windows.h>

 #include <tchar.h>
 #include <stdio.h>


 // 유니코드 호환을 위해 printf 를 매크로 설정해둔다.
 #ifdef UNICODE
 #define lprintf wprintf
 #else
 #define lprintf printf
 #endif


 int main(void){

 HANDLE                    hVolume = NULL;                  // 볼륨 찾기 핸들
 DWORD                     RetnVal = 0;                         // 리턴값
 TCHAR                      VolumeName[MAX_PATH+1]; // 볼륨 저장 버퍼
 TCHAR                      Path[MAX_PATH+1];             // 디렉토리 버퍼

 // 버퍼 초기화
 ZeroMemory(VolumeName,(MAX_PATH+1)*sizeof(TCHAR));
 ZeroMemory(Path,(MAX_PATH+1)*sizeof(TCHAR));

 // 볼륨 이름 찾기 시작
 hVolume = FindFirstVolume(VolumeName,MAX_PATH);
 if ( hVolume == INVALID_HANDLE_VALUE )
      return 0;
 // 볼륨 이름을 통해 디렉토리 경로를 구해온다.

 GetVolumePathNamesForVolumeName(VolumeName,Path,MAX_PATH,&RetnVal);
 // 출력

 lprintf(_T("%s %s\n"),Path,VolumeName);

 // 버퍼 초기화
 ZeroMemory(VolumeName,(MAX_PATH+1)*sizeof(TCHAR));
 ZeroMemory(Path,(MAX_PATH+1)*sizeof(TCHAR));

 // 반복
 while(FindNextVolume(hVolume,VolumeName,MAX_PATH)){
    GetVolumePathNamesForVolumeName(VolumeName,Path,MAX_PATH,&RetnVal);
    lprintf(_T("%s %s\n"),Path,VolumeName);
    ZeroMemory(VolumeName,(MAX_PATH+1)*sizeof(TCHAR));
    ZeroMemory(Path,(MAX_PATH+1)*sizeof(TCHAR));
 }
 // 볼륨 찾기 종료

 FindVolumeClose(hVolume);

 // 핸들 초기화
 hVolume = NULL;
 RetnVal = 0;

 return 0;
 }


추가로, 해당 드라이브 경로가 하드디스크(HDD)인지 CD/DVD-ROM(ODD) 인지 확인하고자 하면

GetDriveType 을 쓰면 된다.
( 이거로 그냥 A드라이브부터 Z드라이브까지 경로 돌려도 위와 같은 결과를 얻을 수 있다. )




 UINT WINAPI GetDriveType(
   __in_opt  LPCTSTR lpRootPathName
 );


lpRootPathName [in, optional]
- 드라이브 경로를 적으면 된다.
만약, 이 값에 NULL 이 들어갈 경우, 현재 위치의 드라이브의 타입을 구하게 된다.

드라이브 타입을 확인은 리턴값으로 확인한다.

리턴값은 http://msdn.microsoft.com/en-us/library/aa364939(VS.85).aspx 에서 확인 가능하다.


Written by Fore  
http://foreblog.tistory.com

'Programming > Programming Talk' 카테고리의 다른 글

모처럼이니까 !  (0) 2011.08.07
심심해서 적어보는 ReverseMe ! 풀이 [2]  (6) 2010.08.24
[업데이트] Image Downloader Beta 1.1v  (4) 2010.02.10
Image Downloader Beta 1.0  (8) 2010.01.18
WAV 구조 (?)  (2) 2009.08.26
晒され妻~ダメなのに恥辱に喘ぐ友人の母~ Location Patch
Category : Programming/Release Patch | URL : | Written by 포레 ( 2010. 3. 22. 17:36 ) | 신고


위와 같이 나오시는 분들만 사용하시면 됩니다.


게임이 설치된 폴더에 넣고 실행시키시면 됩니다.

위와 관련된 프로그램 : Route2Loader ( http://foreblog.tistory.com/513 )

세계 연애 기구 LLS tpm 오류 파일
Category : Programming/Release Patch | URL : | Written by 포레 ( 2010. 2. 17. 01:07 ) | 신고



이런 오류가 뜨는 사람만 보면 됨 [ . . . ]

이 오류는 ANSI가 문제다.

따라서, 아래 파일을 압축풀어 인스톨된 폴더에 넣고, jonk 로 실행하면 되며,

실행시 반드시 인스톨 경로는 전부 영어/숫자로 바꿔주면 된다.
( 순수 히라가나,카타카나도 허용됨 )


세이브 폴더는 인스톨 경로\savedata 에 . . .

참고로, 이 오류는 어플로케일을 설치해서 해도 될거같은데,

어플로케일 문제가 많아서 설치 안했음 [ ; ; ; ]



[업데이트] Image Downloader Beta 1.1v
Category : Programming/Programming Talk | URL : | Written by 포레 ( 2010. 2. 10. 15:04 ) | 신고



 
Programming by Fore
http://foreblog.tistory.com


1.1v 에서 추가된 기능은 ?

> 이어 받기 기능 추가
> 제작자 정보 메뉴처리
> 인터넷 연결시 어이없이 다운완료 됐던 버그 수정
> 인터넷 속도식 조금 수정 ( 별반 차이 없을듯 ; )

[ 업데이트 예정 ]
1.2v 에서 추가될 기능은 ?

> 프로세서 우선 순위 변경 ( 고사양 게임에서 렉이 조금 줄어들거임 이거 쓰면 )
> 알림창 사용자 지정 수정
> 깨진 이미지 파일 검사 기능
> 잔버그 보이면 수정
> 의견 받아서 더 추가할 예정

지인 한정으로 필요한 사람은 네이트온 들어오셈

프로그램 자동 업데이트 기능은 넣을 생각 없습니다 [ . . . ]



 

'Programming > Programming Talk' 카테고리의 다른 글

심심해서 적어보는 ReverseMe ! 풀이 [2]  (6) 2010.08.24
[API] 모든 드라이브 경로 구하기  (8) 2010.04.11
Image Downloader Beta 1.0  (8) 2010.01.18
WAV 구조 (?)  (2) 2009.08.26
중단  (124) 2009.07.13
Category
분류 전체보기 (605)
Notice (6)
Programming (79)
DISKER (1)
FSCH (7)
Caption (0)
Rest Time ! (443)
Hobby (64)
Tour (5)
Blind Post (0)
Recent Post
Recent Comment
Link
Calender
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Total :
Today :
Yesterday :