|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 2, 2004 16:04:45 Привет всем! Вот решил я перевести в спячку видяху, чтобы можно было поберечь монитор, а все остальное бы работало, когда ухожу по делам. ScreenSaver меня не устраивает! Но вот перевести в спячку я смог, а вывести нет. :-( Может кто знает? Помогите, плз!!!
BOOLEAN PowerManagementTheDisplayAdapter()//IRQL=PASSIVE_LEVEL
{
NTSTATUS ntStatus;
PWSTR pSymbolicLinkList;
UNICODE_STRING DevName;
PDEVICE_OBJECT DevObject;
PFILE_OBJECT FileObject;
POWER_STATE State;
LARGE_INTEGER time;
//Получаю символ. имена уст-в
ntStatus = IoGetDeviceInterfaces(&GUID_DEVINTERFACE_DISPLAY_ADAPTER, NULL, DEVICE_INTERFACE_INCLUDE_NONACTIVE, &pSymbolicLinkList);
if ((NT_SUCCESS(ntStatus) != FALSE) && (*pSymbolicLinkList != (WCHAR)0x0000))
{
RtlInitUnicodeString(&DevName, (WCHAR*)pSymbolicLinkList);//беру 1 SymbolicLink из pSymbolicLinkList
//Получаю указатель на уст-во (вверху стека уст-в)
ntStatus = IoGetDeviceObjectPointer(&DevName, FILE_READ_DATA, &FileObject, &DevObject);
ExFreePool(pSymbolicLinkList);
pSymbolicLinkList = NULL;
if (NT_SUCCESS(ntStatus) )
{
State.DeviceState = PowerDeviceD1;//PowerDeviceD3
PoRequestPowerIrp(DevObject, IRP_MN_SET_POWER, State, 0, 0, 0);//Перевожу в спячку
time.QuadPart = -10000*10000;//10 сек.
KeDelayExecutionThread(KernelMode, FALSE, &time);
State.DeviceState = PowerDeviceD0;
PoRequestPowerIrp(DevObject, IRP_MN_SET_POWER, State, 0, 0, 0);//Включаю
return TRUE;
}
}
return FALSE;
}
|
|
|
Дата: Июл 6, 2004 06:41:35 а теперь погляди внимательно в биос, не включён ли там DPMS на максимум ? Лучше убери енту опцию в дисаблед. Просто эта хрень, по имени ацэпеи, имеет обыкновение жить своей жизнью независимо от оси. |
|
|
Дата: Июл 6, 2004 06:43:42 если найду код, то вывалю, как енто через порты в\в делается проще. |
|
|
Дата: Июл 6, 2004 07:05:44 ;ето ево гасит, монитор seg000:0157 mov dx, 3D4h seg000:015A mov al, 17h seg000:015C out dx, al ; Video: CRT cntrlr addr seg000:015C ; mode control.Data bits: seg000:015C ; 0:0=CGA compatible seg000:015C ; 1:select row scan counter seg000:015C ; 2:hor retrace:1=double vert res seg000:015C ; 3:1=use char clock/2 for word refresh seg000:015C ; 4:1=high impedance on output seg000:015C ; 5:addr wrapping mode seg000:015C ; 6:1=byte,0=word mode seg000:015C ; 7:0=hardware reset seg000:015D inc dx seg000:015E in al, dx ; Video: CRT controller internal registers seg000:015F and al, 7Fh seg000:0161 out dx, al ; Video: CRT controller internal registers ;ето ево обратна зажигает seg000:0157 mov dx, 3D4h seg000:015A mov al, 17h seg000:015C out dx, al ; Video: CRT cntrlr addr seg000:015C ; mode control.Data bits: seg000:015C ; 0:0=CGA compatible seg000:015C ; 1:select row scan counter seg000:015C ; 2:hor retrace:1=double vert res seg000:015C ; 3:1=use char clock/2 for word refresh seg000:015C ; 4:1=high impedance on output seg000:015C ; 5:addr wrapping mode seg000:015C ; 6:1=byte,0=word mode seg000:015C ; 7:0=hardware reset seg000:015D inc dx seg000:015E in al, dx ; Video: CRT controller internal registers seg000:015F and al, NOT 7Fh seg000:0161 out dx, al ; Video: CRT controller internal registers |
|
|
Дата: Июл 9, 2004 05:00:50 · Поправил: rsrc CARDINAL, THANx!!!! Не зря у тебя такой ник!!! СПАСИБО!!! |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043 |