Win32API ファイルの種類を取得する GetFileType

ファイルの種類を取得するには、GetFileType関数を用いる。


  • GetFileTypeのプロトタイプ

DWORD GetFileType(
  HANDLE hFile   // ファイルのハンドル
);

戻り値は以下の4種類がある

意味
FILE_TYPE_UNKNOWN不明
FILE_TYPE_DISKディスクファイル
FILE_TYPE_CHARLPT デバイスやコンソールのような文字ファイル
FILE_TYPE_PIPE名前付きまたは名前なしパイプ


  • 使用例

#include <windows.h>

void PrintFileType(HANDLE hFile)
{
        switch (GetFileType(hFile)) {
		case FILE_TYPE_UNKNOWN:
			puts("不明");
			break;

		case FILE_TYPE_DISK:
			puts("ディスクファイル");
			break;

		case FILE_TYPE_CHAR:
			puts("LPT デバイスやコンソールのような文字ファイル");
			break;

		case FILE_TYPE_PIPE:
			puts("名前付きまたは名前なしパイプ");
			break;

		default:
			puts("???");
			break;	
	}
}

int main()
{
	HANDLE hPipe = CreateNamedPipe("\\\\.\\pipe\\mypipe", 
					PIPE_ACCESS_DUPLEX, 
					PIPE_TYPE_BYTE, 
					1, 
					1024, 
					1024, 
					1000, 
					NULL);

	HANDLE hFile = CreateFile("C:\\test.txt", 
				GENERIC_READ, 
				0, 
				NULL, 
				CREATE_NEW, 
				FILE_ATTRIBUTE_NORMAL, 
				NULL);

	HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);


	PrintFileType(hPipe);
	PrintFileType(hFile);
	PrintFileType(hStdout);

	CloseHandle(hPipe);
	CloseHandle(hFile);

	return 0;
}