Tôi muốn truy xuất chuỗi lỗi cho DirectX 9, nhưng tôi có thể tìm thấy trên web đang sử dụng FormatMessage() và _com_error.ErrorMessage(), cả hai đều không thành công.Làm cách nào tôi có thể truy xuất chuỗi lỗi cho DirectX 9
hr = g_pd3dDevice->GetRenderTargetData(...
... // the debugger tells me hr = 0x8876086c
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, hr, 0, (LPTSTR)&lpBuf, 0, NULL))
// it returns 0 with lpBuf unallocated
FormatMessage() thất bại và tôi sử dụng nó một lần nữa với GetLastError() để xem lý do tại sao FormatMessage() thất bại: "Hệ thống không thể tìm thấy nội dung tin nhắn cho số lượng tin nhắn 0x% 1 trong file nhắn cho% 2 . "
_com_error.ErrorMessage() nói với tôi "Lỗi không xác định 0x8876086c"
BTW: có một cách phổ biến để có được chuỗi lỗi cho tất cả HRESULT? – LeOpArD
Không thực sự, mã lỗi và tin nhắn được phân loại. Ví dụ, hệ thống con mạng có mã và tin nhắn riêng của nó, DX có riêng của nó, vv Vì vậy, bạn phải biết một loại hoạt động bạn đã thực hiện để có được một tin nhắn tương ứng với lỗi bạn đang nhận được. –
Xem tệp tiêu đề d3d9.h để biết mã lỗi. Bạn sẽ tìm thấy một kết quả phù hợp với D3DERR_INVALIDCALL, chuỗi sẽ không cho bạn biết lý do bạn truyền các đối số không hợp lệ. Cũng không phải đoạn trích của bạn. –