/*****************************************************************/ /** Microsoft LAN Manager **/ /** Copyright(c) Microsoft Corp., 1988-1991 **/ /*****************************************************************/ #include #include #include #include #include #include #include #include struct { ULONG Flags; PUCHAR String; } EsFlags[] = { ES_CONTINUOUS, "Continuous", ES_SYSTEM_REQUIRED, "System", ES_DISPLAY_REQUIRED, "Display", 0, NULL } ; PUCHAR EsState ( IN EXECUTION_STATE State ) { static UCHAR text[200]; ULONG i; PUCHAR p; UCHAR c; p = text; c = '('; for (i=0; EsFlags[i].Flags; i++) { if (State & EsFlags[i].Flags) { p += sprintf (p, "%c%s", c, EsFlags[i].String); c = '|'; } } p += sprintf (p, ")"); return text; } VOID __cdecl main (argc, argv) int argc; char *argv[]; { UCHAR s[200]; EXECUTION_STATE State, PriorState; NTSTATUS Status; for (; ;) { printf ("con sys disp: "); gets (s); State = 0; if (strstr(s, "con")) State |= ES_CONTINUOUS; if (strstr(s, "disp")) State |= ES_DISPLAY_REQUIRED; if (strstr(s, "sys")) State |= ES_SYSTEM_REQUIRED; Status = NtSetThreadExecutionState ( State, &PriorState ); if (NT_SUCCESS(Status)) { printf ("PriorState:%x, Set:%x\n", PriorState, State); //printf ("PriorState%s, ", EsState(PriorState)); //printf ("Set%s\n", EsState(State)); } else { printf ("Failed: %x\n", Status); } } }