| Код | //-------------------------------------------------------------------------- int filter(unsigned int code, struct _EXCEPTION_POINTERS *ep) { ::MessageBox(0, _T("in filter."), _T("filter"), MB_OK);
if (code == EXCEPTION_ACCESS_VIOLATION) { ::MessageBox(0, _T("caught AV as expected."), _T("filter"), MB_OK);
return EXCEPTION_EXECUTE_HANDLER;
} else { ::MessageBox(0, _T("didn't catch AV, unexpected."), _T("filter"), MB_OK); return EXCEPTION_CONTINUE_SEARCH; } } //-------------------------------------------------------------------------- BOOL bIsReady(const tstring &csDrivePath) { BOOL bRes = FALSE;
WORD usOldErrorMode = ::SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOALIGNMENTFAULTEXCEPT | SEM_NOOPENFILEERRORBOX);
__try { HANDLE hFile = ::CreateFile(_T("\\\\.\\A:"), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (INVALID_HANDLE_VALUE != hFile) { ::CloseHandle(hFile);
bRes = TRUE; } else { bRes = FALSE; } } __except (filter(GetExceptionCode(), GetExceptionInformation())) { bRes = FALSE; }
::SetErrorMode(usOldErrorMode);
return TRUE; } //--------------------------------------------------------------------------
|
http://msdn.microsoft.com/en-us/library/s58ftw19(v=VS.71).aspx Таже хрень. Или не так надо? |