파일 시스템 인식 정보 가져오기
파일 시스템 인식은 아직 정의되지 않은 유효한 파일 시스템/볼륨 레이아웃이 포함된 스토리지 미디어를 인식하는 기능이지만, 미디어는 Windows에서 내부적으로 정의된 인식 구조의 존재를 통해 자신을 식별할 수 있습니다.
기존 파일 시스템이 새 디스크 레이아웃을 인식하지 않기 때문에 “RAW” 파일 시스템은 볼륨을 탑재하고 직접적인 블록 수준 액세스를 제공합니다. NtosKrnl에 통합된 “RAW” 파일 시스템은 다음 예제와 같이 파일 시스템 인식 구조를 읽고 파일 시스템 제어 요청 FSCTL_QUERY_FILE_SYSTEM_RECOGNITION을 통해 이러한 구조에 대한 액세스 권한을 애플리케이션에 제공할 수 있습니다.
STDMETHODIMP CheckFileSystem(
PCWSTR pcwszDrive
)
{
HRESULT hr = S_OK;
HANDLE hDisk = INVALID_HANDLE_VALUE;
BOOL fResult = FALSE;
ULONG BytesReturned = 0;
FILE_SYSTEM_RECOGNITION_INFORMATION FsRi = {0};
//
// Open the target, for example "\\.\C:"
//
wprintf( L"CreateFile on %s...", pcwszDrive );
hDisk = CreateFile( pcwszDrive,
FILE_READ_ATTRIBUTES|SYNCHRONIZE|FILE_TRAVERSE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL );
if( hDisk == INVALID_HANDLE_VALUE )
{
hr = HRESULT_FROM_WIN32( GetLastError() );
wprintf( L"CreateFile failed on %s, GLE = 0x%x\n", pcwszDrive, GetLastError() );
goto exit;
}
wprintf( L"succeeded.\n\n" );
wprintf( L"\nPress Any Key to send down the FSCTL\n" );
_getwch();
//
// Send down the FSCTL
//
wprintf( L"Calling DeviceIoControl( FSCTL_QUERY_FILE_SYSTEM_RECOGNITION ) " );
fResult = DeviceIoControl( hDisk,
FSCTL_QUERY_FILE_SYSTEM_RECOGNITION,
NULL,
0,
&FsRi,
sizeof(FsRi),
&BytesReturned,
NULL );
if( !fResult )
{
hr = HRESULT_FROM_WIN32( GetLastError() );
wprintf( L"failed GLE = 0x%x\n", GetLastError() );
goto exit;
}
wprintf( L"succeeded.\n\n" );
wprintf( L"FSCTL_QUERY_FILE_SYSTEM_RECOGNITION returned success.\n" );
wprintf( L"FSCTL_QUERY_FILE_SYSTEM_RECOGNITION retrieved \"%S\".\n",
FsRi.FileSystem );
exit:
if( hDisk != INVALID_HANDLE_VALUE )
{
CloseHandle( hDisk );
hDisk = INVALID_HANDLE_VALUE;
}
return hr;
}
관련 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기