#include #include #include #include BOOLEAN DoesFileExist( PWSTR PathName, PWSTR FileName) { OBJECT_ATTRIBUTES ObjectAttributes; IO_STATUS_BLOCK IoStatusBlock; UNICODE_STRING Name; WCHAR FullName[MAX_PATH]; HANDLE FileHandle; NTSTATUS Status; wcscpy(FullName, PathName); if (FileName != NULL) { if (FileName[0] != L'\\') wcscat(FullName, L"\\"); wcscat(FullName, FileName); } RtlInitUnicodeString(&Name, FullName); // __asm { // int 3 // } InitializeObjectAttributes(&ObjectAttributes, &Name, OBJ_CASE_INSENSITIVE, NULL, NULL); Status = NtOpenFile(&FileHandle, GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, 0, FILE_SYNCHRONOUS_IO_NONALERT); if (!NT_SUCCESS(Status)) { return FALSE; } NtClose(FileHandle); return TRUE; } int main() { if (DoesFileExist(L"\\Device\\Floppy0", L"\\") == FALSE) { printf("No floppy\n"); } return 0; }