Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pengenalan sistem file adalah kemampuan untuk mengenali media penyimpanan yang berisi sistem file/tata letak volume yang valid yang belum ditentukan, tetapi media dapat mengidentifikasi dirinya sendiri melalui keberadaan struktur pengenalan yang ditentukan secara internal oleh Windows.
Karena tidak ada sistem file yang ada yang akan mengenali tata letak disk baru, sistem file "RAW" akan memasang volume dan menyediakan akses tingkat blok langsung. Sistem file "RAW", yang dimasukkan dalam NtosKrnl, akan memiliki kemampuan untuk membaca struktur pengenalan sistem file dan menyediakan akses aplikasi ke struktur tersebut melalui permintaan kontrol sistem file FSCTL_QUERY_FILE_SYSTEM_RECOGNITION, yang ditunjukkan dalam contoh berikut.
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;
}
Topik terkait