Sau khi bạn có một thiết bị hợp lệ trả về từ hàm EnumDevices, bạn cần phải kiểm tra các chức năng cơ bản của nó. Ví dụ bạn cần phải tìm dạng force feedback mà Device này có thể hỗ trợ. Liệt kê các khả năng của một Device cũng tương tự như liệt kê các Device. Để lấy những đặc điểm cụ thể của mỗi Device, bạn phải gọi hàm EnumObjects. Giống như gọi hàm
EnumDevices, hàm này làm việc với phương thức callback
HRESULT EnumObjects( LPDIENUMDEVICEOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD dwFlags ); hàm EnumObjects cần 3 tham số:
lpCallback – đây là tên của hàm callback
pvRef – đây là dữ liệu mở rộng sẽđược gửi đến hàm callback khi nó được gọi.
dwFlags – là những cờ hiệu có giá trị kiểu DWORD, chúng chỉ rõ các dạng của đối tượng trên Input
Device mà bạn quan tâm trong bảng liệt kê. Bảng 9.3 mô tả các tham sốdwFlags cụ thể hơn
Tên Flag mô tả
DIDFT sử dụng một trục tuyệt đối
DIDFT_ALIAS tìm kiếm điều khiển đã xác nhận bởi HID bằng cách sử dụng biệt danh
DIDFT_ALL tìm kiếm tất cả các dạng Object trong thiết bị DIDFT_AXIS tìm kiếm một trục: tương đối hoặc tuyệt đối DIDFT_BUTTON kiểm tra nút nhấn hoặc nút bật tắt DIDFT_COLLECTION danh sách các tập trung liên kết HID DIDFT_ENUMCOLLECTION liên hệ tới kết nối tập trung
DIDFT_FFACTUATOR chứa đựng một phát động force feedback DIDFT_FFEFFECTTRRIGGER chứa đựng nút bấm force feedback
DIDFT_NOCOLLECTION tìm kiếm những đối tượng không liên quan đến một liên kết tập trung
DIDFT_NODATA không khởi tạo dữ liệu
DIDFT_PDV tìm kiếm một điều khiển POV DIDFT_PSHBUTTON tìm kiếm một nút nhấn DIDFT_RELAXIS sử dụng một trục tương đối DIDFT_TGLBUTTON tìm kiếm một nút bật tắt
DIDFT_VENDORDEFINED trả về một đối tượng của một kiểu đã xác định trước
Mục đích của hàm callback EnumObjects là thu thập thông tin về thành phần của Input Device. Thông tin này tập hợp lại cho mỗi thiết bị được truyền tới callback như một cấu trúc
DIDEVICEOBJECTINSTANCE
BOOL CALLBACK DIEnumDeviceObjectsCallback( LPDIDEVICEOBJECTINSTANCE lpddoi,
LPVOID pvRef );
hàm DIEnumDeviceObjectsCallback lấy 2 tham số. Tham số thứ nhất là cấu trúc kiểu
DIDEVICEOBJECTINSTANCE mà giữ thông tin trả về liên quan đến thiết bị. Tham số thứ hai
là bất kỳ giá trị nào được truyền cho tham sốpvRef của hàm EnumObjects .
Cấu trúc DIDEVICEOBJECTINSTANCE chứa đựng sự giàu có thông tin có giá trị về thiết bị. Nó hữu ích cho việc thiết lập giới hạn của force feedback, cũng như giúp xác định các dạng riêng biệt và chỉ số của điều khiển trên thiết bị.
Bạn có thể tìm thấy giải thích đầy đủ về cấu trúc DIDEVICEOBJECTINSTANCE trong tư liệu của DirectInput