亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? powrprof.c

?? 這是一個開放源代碼的與WINNT/WIN2K/WIN2003兼容的操作系統
?? C
字號:
/*
 * Copyright (C) 2005 Benjamin Cutler
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */


#include <stdarg.h>

#include "ntstatus.h"
#define WIN32_NO_STATUS
#include "windef.h"
#include "winbase.h"
#include "winnt.h"
#include "winreg.h"
#include "winternl.h"
#include "powrprof.h"
#include "wine/debug.h"
#include "wine/unicode.h"

WINE_DEFAULT_DEBUG_CHANNEL(powrprof);

/* Notes to implementors:
 * #1: The native implementation of these functions attempted to read in
 * registry entries that I was unable to locate on any of the Windows
 * machines I checked, but I only had desktops available, so maybe
 * laptop users will have better luck. They return FNF errors because
 * that's what the native DLL was returning during my tests.
 * #2: These functions call NtPowerInformation but I don't know what they
 * do with the results, and NtPowerInformation doesn't do much in WINE yet
 * anyway.
 * #3: Since I can't get several other functions working (see note #1),
 * implementing these functions is going to have to wait until somebody can
 * cobble together some sane test input. */

static const WCHAR szPowerCfgSubKey[] = { 'S', 'o', 'f', 't', 'w', 'a', 'r', 'e',
	'\\', 'M', 'i', 'c', 'r', 'o', 's', 'o', 'f', 't', '\\', 'W', 'i',
	'n', 'd', 'o', 'w', 's', '\\', 'C', 'u', 'r', 'r', 'e', 'n', 't',
	'V', 'e', 'r', 's', 'i', 'o', 'n', '\\', 'C', 'o', 'n', 't', 'r',
	'o', 'l', 's', ' ', 'F', 'o', 'l', 'd', 'e', 'r', '\\', 'P', 'o',
	'w', 'e', 'r', 'C', 'f', 'g', 0 };
static const WCHAR szSemaphoreName[] = { 'P', 'o', 'w', 'e', 'r', 'P', 'r', 'o',
	'f', 'i', 'l', 'e', 'R', 'e', 'g', 'i', 's', 't', 'r', 'y', 'S',
	'e', 'm', 'a', 'p', 'h', 'o', 'r', 'e', 0 };
static const WCHAR szDiskMax[] = { 'D', 'i', 's', 'k', 'S', 'p', 'i', 'n', 'd',
	'o', 'w', 'n', 'M', 'a', 'x', 0 };
static const WCHAR szDiskMin[] = { 'D', 'i', 's', 'k', 'S', 'p', 'i', 'n', 'd',
	'o', 'w', 'n', 'M', 'i', 'n', 0 };
static const WCHAR szLastID[] = { 'L', 'a', 's', 't', 'I', 'D', 0 };
static HANDLE PPRegSemaphore = NULL;

NTSTATUS WINAPI CallNtPowerInformation(
	POWER_INFORMATION_LEVEL InformationLevel,
	PVOID lpInputBuffer, ULONG nInputBufferSize,
	PVOID lpOutputBuffer, ULONG nOutputBufferSize)
{
   return NtPowerInformation(InformationLevel, lpInputBuffer,
      nInputBufferSize, lpOutputBuffer, nOutputBufferSize);
}

BOOLEAN WINAPI CanUserWritePwrScheme(VOID)
{
   HKEY hKey = NULL;
   LONG r;
   BOOLEAN bSuccess = TRUE;

   TRACE("()\n");

   r = RegOpenKeyExW(HKEY_LOCAL_MACHINE, szPowerCfgSubKey, 0, KEY_READ | KEY_WRITE, &hKey);

   if (r != ERROR_SUCCESS) {
      TRACE("RegOpenKeyEx failed: %d\n", r);
      bSuccess = FALSE;
   }

   SetLastError(r);
   RegCloseKey(hKey);
   return bSuccess;
}

BOOLEAN WINAPI DeletePwrScheme(UINT uiIndex)
{
   /* FIXME: See note #1 */
   FIXME("(%d) stub!\n", uiIndex);
   SetLastError(ERROR_FILE_NOT_FOUND);
   return FALSE;
}

BOOLEAN WINAPI EnumPwrSchemes(PWRSCHEMESENUMPROC lpfnPwrSchemesEnumProc,
			LPARAM lParam)
{
   /* FIXME: See note #1 */
   FIXME("(%p, %ld) stub!\n", lpfnPwrSchemesEnumProc, lParam);
   SetLastError(ERROR_FILE_NOT_FOUND);
   return FALSE;
}

BOOLEAN WINAPI GetActivePwrScheme(PUINT puiID)
{
   /* FIXME: See note #1 */
   FIXME("(%p) stub!\n", puiID);
   SetLastError(ERROR_FILE_NOT_FOUND);
   return FALSE;
}

BOOLEAN WINAPI GetCurrentPowerPolicies(
	PGLOBAL_POWER_POLICY pGlobalPowerPolicy,
	PPOWER_POLICY pPowerPolicy)
{
   /* FIXME: See note #2 */
   SYSTEM_POWER_POLICY ACPower, DCPower;

   FIXME("(%p, %p) stub!\n", pGlobalPowerPolicy, pPowerPolicy);

   NtPowerInformation(SystemPowerPolicyAc, 0, 0, &ACPower, sizeof(SYSTEM_POWER_POLICY));
   NtPowerInformation(SystemPowerPolicyDc, 0, 0, &DCPower, sizeof(SYSTEM_POWER_POLICY));

   return FALSE;
}

BOOLEAN WINAPI GetPwrCapabilities(
	PSYSTEM_POWER_CAPABILITIES lpSystemPowerCapabilities)
{
   NTSTATUS r;

   TRACE("(%p)\n", lpSystemPowerCapabilities);

   r = NtPowerInformation(SystemPowerCapabilities, 0, 0, lpSystemPowerCapabilities, sizeof(SYSTEM_POWER_CAPABILITIES));

   SetLastError(RtlNtStatusToDosError(r));

   return r == STATUS_SUCCESS;
}

BOOLEAN WINAPI GetPwrDiskSpindownRange(PUINT RangeMax, PUINT RangeMin)
{
   HKEY hKey;
   BYTE lpValue[40];
   LONG r;
   DWORD cbValue = sizeof(lpValue);

   TRACE("(%p, %p)\n", RangeMax, RangeMin);

   if (RangeMax == NULL || RangeMin == NULL) {
      SetLastError(ERROR_INVALID_PARAMETER);
      return FALSE;
   }

   SetLastError(ERROR_SUCCESS);

   WaitForSingleObject(PPRegSemaphore, INFINITE);

   r = RegOpenKeyExW(HKEY_LOCAL_MACHINE, szPowerCfgSubKey, 0, KEY_READ, &hKey);
   if (r != ERROR_SUCCESS) {
      TRACE("RegOpenKeyEx failed: %d\n", r);
      TRACE("Using defaults: 3600, 3\n");
      *RangeMax = 3600;
      *RangeMin = 3;
      ReleaseSemaphore(PPRegSemaphore, 1, NULL);
      return TRUE;
   }

   r = RegQueryValueExW(hKey, szDiskMax, 0, 0, lpValue, &cbValue);
   if (r != ERROR_SUCCESS) {
      TRACE("Couldn't open DiskSpinDownMax: %d\n", r);
      TRACE("Using default: 3600\n");
      *RangeMax = 3600;
   } else {
      *RangeMax = atoiW((LPCWSTR)lpValue);
   }

   cbValue = sizeof(lpValue);

   r = RegQueryValueExW(hKey, szDiskMin, 0, 0, lpValue, &cbValue);
   if (r != ERROR_SUCCESS) {
      TRACE("Couldn't open DiskSpinDownMin: %d\n", r);
      TRACE("Using default: 3\n");
      *RangeMin = 3;
   } else {
      *RangeMin = atoiW((LPCWSTR)lpValue);
   }

   RegCloseKey(hKey);

   ReleaseSemaphore(PPRegSemaphore, 1, NULL);

   return TRUE;
}

BOOLEAN WINAPI IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY p)
{
   FIXME("( %p) stub!\n", p);
   return FALSE;
}

BOOLEAN WINAPI IsPwrHibernateAllowed(VOID)
{
   /* FIXME: See note #2 */
   SYSTEM_POWER_CAPABILITIES PowerCaps;
   FIXME("() stub!\n");
   NtPowerInformation(SystemPowerCapabilities, NULL, 0, &PowerCaps, sizeof(PowerCaps));
   return FALSE;
}

BOOLEAN WINAPI IsPwrShutdownAllowed(VOID)
{
   /* FIXME: See note #2 */
   SYSTEM_POWER_CAPABILITIES PowerCaps;
   FIXME("() stub!\n");
   NtPowerInformation(SystemPowerCapabilities, NULL, 0, &PowerCaps, sizeof(PowerCaps));
   return FALSE;
}

BOOLEAN WINAPI IsPwrSuspendAllowed(VOID)
{
   /* FIXME: See note #2 */
   SYSTEM_POWER_CAPABILITIES PowerCaps;
   FIXME("() stub!\n");
   NtPowerInformation(SystemPowerCapabilities, NULL, 0, &PowerCaps, sizeof(PowerCaps));
   return FALSE;
}

BOOLEAN WINAPI ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY pGlobalPowerPolicy)
{
   /* FIXME: See note #1 */
   FIXME("(%p) stub!\n", pGlobalPowerPolicy);
   SetLastError(ERROR_FILE_NOT_FOUND);
   return FALSE;
}

BOOLEAN WINAPI ReadProcessorPwrScheme(UINT uiID,
			PMACHINE_PROCESSOR_POWER_POLICY pMachineProcessorPowerPolicy)
{
   /* FIXME: See note #1 */
   FIXME("(%d, %p) stub!\n", uiID, pMachineProcessorPowerPolicy);
   SetLastError(ERROR_FILE_NOT_FOUND);
   return FALSE;
}

BOOLEAN WINAPI ReadPwrScheme(UINT uiID,
	PPOWER_POLICY pPowerPolicy)
{
   /* FIXME: See note #1 */
   FIXME("(%d, %p) stub!\n", uiID, pPowerPolicy);
   SetLastError(ERROR_FILE_NOT_FOUND);
   return FALSE;
}

BOOLEAN WINAPI SetActivePwrScheme(UINT uiID,
	PGLOBAL_POWER_POLICY lpGlobalPowerPolicy,
	PPOWER_POLICY lpPowerPolicy)
{
   /* FIXME: See note #1 */
   FIXME("(%d, %p, %p) stub!\n", uiID, lpGlobalPowerPolicy, lpPowerPolicy);
   SetLastError(ERROR_FILE_NOT_FOUND);
   return FALSE;
}

BOOLEAN WINAPI SetSuspendState(BOOLEAN Hibernate, BOOLEAN ForceCritical,
	BOOLEAN DisableWakeEvent)
{
   /* FIXME: I have NO idea how you're supposed to call NtInitiatePowerAction
    * here, because it's not a documented function that I can find */
   FIXME("(%d, %d, %d) stub!\n", Hibernate, ForceCritical, DisableWakeEvent);
   return TRUE;
}

BOOLEAN WINAPI WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY pGlobalPowerPolicy)
{
   /* FIXME: See note #3 */
   FIXME("(%p) stub!\n", pGlobalPowerPolicy);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
}

BOOLEAN WINAPI WriteProcessorPwrScheme(UINT ID,
	PMACHINE_PROCESSOR_POWER_POLICY pMachineProcessorPowerPolicy)
{
   /* FIXME: See note #3 */
   FIXME("(%d, %p) stub!\n", ID, pMachineProcessorPowerPolicy);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
}

BOOLEAN WINAPI WritePwrScheme(PUINT puiID, LPWSTR lpszName, LPWSTR lpszDescription,
	PPOWER_POLICY pPowerPolicy)
{
   /* FIXME: See note #3 */
   FIXME("(%p, %s, %s, %p) stub!\n", puiID, debugstr_w(lpszName), debugstr_w(lpszDescription), pPowerPolicy);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
}

BOOLEAN WINAPI ValidatePowerPolicies(PGLOBAL_POWER_POLICY pGPP, PPOWER_POLICY pPP)
{
   /* FIXME: See note #3 */
   FIXME("(%p, %p) stub!\n", pGPP, pPP);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return TRUE;

}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
   FIXME("(%p, %d, %p) not fully implemented\n", hinstDLL, fdwReason, lpvReserved);

   switch(fdwReason) {
      case DLL_PROCESS_ATTACH: {

         HKEY hKey;
         LONG r;

         DisableThreadLibraryCalls(hinstDLL);

         r = RegOpenKeyExW(HKEY_LOCAL_MACHINE, szPowerCfgSubKey, 0, KEY_READ | KEY_WRITE, &hKey);

         if (r != ERROR_SUCCESS) {
            TRACE("Couldn't open registry key HKLM\\%s, using some sane(?) defaults\n", debugstr_w(szPowerCfgSubKey));
         } else {
            BYTE lpValue[40];
            DWORD cbValue = sizeof(lpValue);
            r = RegQueryValueExW(hKey, szLastID, 0, 0, lpValue, &cbValue);
            if (r != ERROR_SUCCESS) {
               TRACE("Couldn't open registry entry HKLM\\%s\\LastID, using some sane(?) defaults\n", debugstr_w(szPowerCfgSubKey));
            }
            RegCloseKey(hKey);
         }

         PPRegSemaphore = CreateSemaphoreW(NULL, 1, 1, szSemaphoreName);
         if (PPRegSemaphore == NULL) {
            ERR("Couldn't create Semaphore: %d\n", GetLastError());
            return FALSE;
         }
         break;
      }
      case DLL_PROCESS_DETACH:
         CloseHandle(PPRegSemaphore);
         break;
    }
    return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服.丝袜.亚洲.另类.中文| 成人综合婷婷国产精品久久| 欧美高清在线一区| 欧美一级国产精品| 日日噜噜夜夜狠狠视频欧美人| 亚洲国产高清不卡| 国产午夜精品福利| 国产免费成人在线视频| 国产精品视频看| 日韩理论片中文av| 亚洲一二三四久久| 丝袜亚洲另类丝袜在线| 蜜臀av一区二区三区| 美国一区二区三区在线播放| 国产精品一区二区免费不卡| 成人手机电影网| 91久久精品网| 日韩免费福利电影在线观看| 欧美本精品男人aⅴ天堂| 久久精品无码一区二区三区| 中文字幕av不卡| 一区二区三区免费看视频| 日本一道高清亚洲日美韩| 国内精品伊人久久久久av影院| 国产精品99久久久久久久vr| 成人一级视频在线观看| 成人动漫中文字幕| 在线观看av不卡| 精品国产乱码久久久久久图片| 国产精品欧美久久久久无广告| 国产精品久久久一区麻豆最新章节| 亚洲综合久久av| 日韩1区2区日韩1区2区| 亚洲美女视频在线| 免费成人深夜小野草| 成人做爰69片免费看网站| 日韩欧美在线观看一区二区三区| 日韩精品一区二区三区在线观看| 亚洲欧洲日韩在线| 日本成人中文字幕在线视频| 成人av在线电影| 日韩一区二区视频| 亚洲免费伊人电影| 精品制服美女丁香| 欧美中文字幕一区| 中文字幕欧美日韩一区| 视频一区免费在线观看| 成人91在线观看| 日韩欧美久久一区| 亚洲一二三区在线观看| 99精品在线免费| 久久这里只有精品首页| 青青草原综合久久大伊人精品优势| 日韩福利视频网| 欧美在线观看一区二区| 日韩欧美的一区| 亚洲伊人伊色伊影伊综合网| 国产精品资源网| 日韩免费看网站| 亚洲 欧美综合在线网络| 91在线精品一区二区| 337p日本欧洲亚洲大胆色噜噜| 日韩精品一二三| 欧美亚洲一区二区在线| 亚洲精品中文在线影院| 成人avav在线| 中文字幕亚洲精品在线观看| 福利一区在线观看| 久久麻豆一区二区| 成人精品国产福利| 国产精品视频你懂的| 国产高清不卡一区二区| 久久久亚洲精品一区二区三区 | 精品视频一区 二区 三区| 成人欧美一区二区三区小说| 粉嫩绯色av一区二区在线观看| 日韩精品综合一本久道在线视频| 蜜臀久久久99精品久久久久久| 欧美日韩免费电影| 婷婷开心激情综合| 欧美一区二区三区白人| 日韩电影网1区2区| 精品国产在天天线2019| 国产精品538一区二区在线| 久久久99免费| 福利视频网站一区二区三区| 亚洲欧洲成人自拍| 欧美色涩在线第一页| 日本欧洲一区二区| 2021国产精品久久精品| 粉嫩aⅴ一区二区三区四区五区| 国产精品美日韩| 在线观看视频一区二区欧美日韩| 亚洲成人av电影在线| 欧美变态凌虐bdsm| 成人精品免费看| 亚洲国产精品一区二区久久| 欧美一级黄色片| 福利91精品一区二区三区| 亚洲视频狠狠干| 国产精品国产三级国产aⅴ中文 | 91久久免费观看| 亚洲一区二区三区四区不卡| 这里是久久伊人| 国产精品1024| 一区二区三区精品视频在线| 日韩一区二区三区在线视频| 国产一区二区三区电影在线观看| 国产精品久久久久影院老司 | 精品久久久久一区| 北条麻妃一区二区三区| 丝袜亚洲另类丝袜在线| 亚洲国产精品二十页| 欧美三级蜜桃2在线观看| 国产一区二区福利| 无吗不卡中文字幕| 自拍偷在线精品自拍偷无码专区| 欧美性大战xxxxx久久久| 激情亚洲综合在线| 亚洲图片欧美视频| 国产精品乱人伦| 日韩欧美三级在线| 欧美三级电影一区| www.av精品| 国产精品一二三四五| 亚洲bt欧美bt精品777| 国产精品丝袜一区| 26uuu亚洲综合色| 91麻豆精品久久久久蜜臀| 色综合咪咪久久| 国产suv精品一区二区883| 日本强好片久久久久久aaa| 亚洲黄一区二区三区| 欧美高清在线视频| 欧美精品一区二区三区蜜臀| 欧美绝品在线观看成人午夜影视 | 国产精品入口麻豆九色| 日韩欧美色综合| 日韩一区二区在线看| 欧美日韩免费一区二区三区| 一本大道久久a久久综合婷婷| 国产成人av一区二区三区在线 | 亚洲激情第一区| 中文字幕五月欧美| 国产日韩欧美一区二区三区综合| 日韩亚洲欧美一区| 日韩三级免费观看| 日韩一区国产二区欧美三区| 91精品视频网| 日韩免费看的电影| 日韩精品一区二区在线观看| 欧美一区二区三区人| 欧美日韩国产成人在线91| 欧美色图天堂网| 欧美日韩不卡视频| 欧美老人xxxx18| 日韩一区二区三区三四区视频在线观看 | 久久久国产午夜精品| 精品sm捆绑视频| 久久精品一区二区三区不卡牛牛| 亚洲精品在线观| 久久九九全国免费| 国产精品久久久一本精品| 亚洲精品欧美激情| 亚洲成在人线在线播放| 蜜臀a∨国产成人精品| 国产中文一区二区三区| 欧美色图片你懂的| 日韩不卡一区二区三区| 亚洲午夜三级在线| 亚洲成a人片综合在线| 日韩在线观看一区二区| 久久国产婷婷国产香蕉| 国产精品资源在线观看| av毛片久久久久**hd| 欧美美女网站色| 久久蜜桃av一区二区天堂| 综合自拍亚洲综合图不卡区| 午夜精品一区在线观看| 精品一区免费av| 91小视频免费看| 在线播放视频一区| 日本一区二区三区国色天香| 悠悠色在线精品| 久久国产视频网| 91久久线看在观草草青青| 欧美一级精品在线| 亚洲视频在线观看一区| 日韩不卡一区二区| 99精品欧美一区二区三区小说 | 视频在线观看一区二区三区| 国产自产v一区二区三区c| 一本一道综合狠狠老| 日韩精品一区二区三区四区| 国产精品久久久久四虎| 天使萌一区二区三区免费观看| 成人av资源在线| 精品毛片乱码1区2区3区| 亚洲另类春色校园小说| 国产久卡久卡久卡久卡视频精品|