IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESSについて – プログラミング – Home

通知
すべてクリア

[解決済] IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESSについて


omiomi
 omiomi
(@omiomi)
ゲスト
結合: 20年前
投稿: 22
Topic starter  

http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/power/base/ioctl_video_query_display_brightness.asp

IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESSを使用したいのですが、
うまくいきません。

具体的には以下のようなコードです。

DISPLAY_BRIGHTNESS bright;
DWORD tmp;

BOOL b=DeviceIoControl(
hMonitor,//モニタのデバイスハンドル。きちんと取れていることを他の関数で確認

IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS,
NULL, // lpInBuffer
0, // nInBufferSize
&bright,
sizeof(bright),
&tmp,
NULL
);

結果はbright.ucDisplayPolicy ,bright.ucACBrightness ,bright.ucACBrightness とも
に同じ意味不明の内容が入ります。(正確には今ちょっとわからないのですが)

そしてtmpが0になってしまいます。
ただし、bは1、つまり関数自体は成功しているとのこと。
GetLastError で調べても成功しているとのこと。
何が悪いのでしょうか?

環境はvc++.net,MFC,WindowsXP SP2 デスクトップ型LCDです。
よろしくお願いします。


引用未解決
トピックタグ
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

とりあえず、0初期化してから、やってみた結果を書いてください。
# 不定値のままなのかどうかを切り分けるため。


返信引用
omiomi
 omiomi
(@omiomi)
ゲスト
結合: 20年前
投稿: 22
Topic starter  

消されてしまいましたが、
初期化して実行すると、初期化値+文字列となりました。

HANDLE hMonitor=CreateFile
(\\\\.\\LCD,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|
FILE_SHARE_WRITE,
NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

でモニタのハンドルを取得してから実行しています。
ヘッダはNtddvdeo.hです。(DISPLAY_BRIGHTNESS のためにもう一つヘッダが必要だったかも
しれません)

まだ試してませんがもしかしてノート型だけしか使えないのでしょうか?


返信引用
omiomi
 omiomi
(@omiomi)
ゲスト
結合: 20年前
投稿: 22
Topic starter  

DISPLAY_BRIGHTNESS bright;
DWORD tmp;

BOOL b=DeviceIoControl(
hMonitor,//モニタのデバイスハンドル。きちんと取れていることを他の関数で確認

IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS,
NULL, // lpInBuffer
0, // nInBufferSize
&bright,
sizeof(bright),
&tmp,
NULL
);

でbright.ucDisplayPolicy ,bright.ucACBrightness をintでキャストしたところ、
数字が出てきましたが、0~100の範囲の定義のはずが204とでてきます。
また、tmpが0になります。

よろしくおねがいします。


返信引用
omiomi
 omiomi
(@omiomi)
ゲスト
結合: 20年前
投稿: 22
Topic starter  

新しいノートでしか使えない関数ということらしいです。
どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました