Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
rozpoznawanie systemu plików to zdolność rozpoznawania nośników danych zawierających prawidłowy układ systemu plików/woluminu, który nie został jeszcze zdefiniowany, ale nośnik jest w stanie zidentyfikować się za pomocą struktury rozpoznawania zdefiniowanej wewnętrznie przez system Windows.
Ponieważ żaden istniejący system plików nie rozpozna nowego układu dysku, system plików "RAW" zainstaluje wolumin i zapewni bezpośredni dostęp na poziomie bloku. System plików "RAW", włączony w NtosKrnl, będzie miał możliwość odczytywania struktury rozpoznawania systemu plików i zapewniania aplikacjom dostępu do takich struktur za pośrednictwem żądania kontroli systemu plików FSCTL_QUERY_FILE_SYSTEM_RECOGNITION, jak pokazano w poniższym przykładzie.
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;
}
Tematy pokrewne