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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? libsupp.c

?? ReactOS是一些高手根據(jù)Windows XP的內(nèi)核編寫(xiě)出的類(lèi)XP。內(nèi)核實(shí)現(xiàn)機(jī)理和API函數(shù)調(diào)用幾乎相同。甚至可以兼容XP的程序。喜歡研究系統(tǒng)內(nèi)核的人可以看一看。
?? C
字號(hào):
/*
 * COPYRIGHT:       See COPYING in the top level directory
 * PROJECT:         ReactOS NT User-Mode DLL
 * FILE:            lib/ntdll/rtl/libsup.c
 * PURPOSE:         RTL Support Routines
 * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
 *                  Gunnar Dalsnes
 */

/* INCLUDES *****************************************************************/

#include <ntdll.h>
#define NDEBUG
#include <debug.h>

/* FUNCTIONS ***************************************************************/

BOOLEAN
NTAPI
RtlpCheckForActiveDebugger(BOOLEAN Type)
{
    return (NtCurrentPeb()->BeingDebugged);
}

BOOLEAN
NTAPI
RtlpSetInDbgPrint(IN BOOLEAN NewValue)
{
    /* If we're setting it to false, do it and return */
    if (NewValue == FALSE)
    {
        NtCurrentTeb()->InDbgPrint = FALSE;
        return FALSE;
    }

    /* Setting to true; check if it's not already */
    if (NtCurrentTeb()->InDbgPrint) return TRUE;

    /* Set it and return */
    NtCurrentTeb()->InDbgPrint = TRUE;
    return FALSE;
}

KPROCESSOR_MODE
NTAPI
RtlpGetMode()
{
   return UserMode;
}

PPEB
NTAPI
RtlpCurrentPeb(VOID)
{
    return NtCurrentPeb();
}

/*
 * @implemented
 */
VOID NTAPI
RtlAcquirePebLock(VOID)
{
   PPEB Peb = NtCurrentPeb ();
   Peb->FastPebLockRoutine (Peb->FastPebLock);
}

/*
 * @implemented
 */
VOID NTAPI
RtlReleasePebLock(VOID)
{
   PPEB Peb = NtCurrentPeb ();
   Peb->FastPebUnlockRoutine (Peb->FastPebLock);
}

/*
* @implemented
*/
ULONG
NTAPI
RtlGetNtGlobalFlags(VOID)
{
    PPEB pPeb = NtCurrentPeb();
    return pPeb->NtGlobalFlag;
}

NTSTATUS
NTAPI
RtlDeleteHeapLock(
    PRTL_CRITICAL_SECTION CriticalSection)
{
    return RtlDeleteCriticalSection(CriticalSection);
}

NTSTATUS
NTAPI
RtlEnterHeapLock(
    PRTL_CRITICAL_SECTION CriticalSection)
{
    return RtlEnterCriticalSection(CriticalSection);
}

NTSTATUS
NTAPI
RtlInitializeHeapLock(
    PRTL_CRITICAL_SECTION CriticalSection)
{
     return RtlInitializeCriticalSection(CriticalSection);
}

NTSTATUS
NTAPI
RtlLeaveHeapLock(
    PRTL_CRITICAL_SECTION CriticalSection)
{
    return RtlLeaveCriticalSection(CriticalSection );
}

PVOID
NTAPI
RtlpAllocateMemory(UINT Bytes,
                   ULONG Tag)
{
    UNREFERENCED_PARAMETER(Tag);
    
    return RtlAllocateHeap(RtlGetProcessHeap(),
                           0,
                           Bytes);
}


VOID
NTAPI
RtlpFreeMemory(PVOID Mem,
               ULONG Tag)
{
    UNREFERENCED_PARAMETER(Tag);
    
    RtlFreeHeap(RtlGetProcessHeap(),
                0,
                Mem);
}


#ifdef DBG
VOID FASTCALL
CHECK_PAGED_CODE_RTL(char *file, int line)
{
  /* meaningless in user mode */
}
#endif

BOOLEAN
NTAPI
RtlpHandleDpcStackException(IN PEXCEPTION_REGISTRATION_RECORD RegistrationFrame,
                            IN ULONG_PTR RegistrationFrameEnd,
                            IN OUT PULONG_PTR StackLow,
                            IN OUT PULONG_PTR StackHigh)
{
    /* There's no such thing as a DPC stack in user-mode */
    return FALSE;
}

VOID
NTAPI
RtlpCheckLogException(IN PEXCEPTION_RECORD ExceptionRecord,
                      IN PCONTEXT ContextRecord,
                      IN PVOID ContextData,
                      IN ULONG Size)
{
    /* Exception logging is not done in user-mode */
}

BOOLEAN
NTAPI
RtlpCaptureStackLimits(IN ULONG_PTR Ebp,
                       IN ULONG_PTR *StackBegin,
                       IN ULONG_PTR *StackEnd)
{
    /* FIXME: Verify */
    *StackBegin = (ULONG_PTR)NtCurrentTeb()->Tib.StackLimit;
    *StackEnd = (ULONG_PTR)NtCurrentTeb()->Tib.StackBase;
    return TRUE;
}

/* RTL Atom Tables ************************************************************/

typedef struct _RTL_ATOM_HANDLE
{
   RTL_HANDLE_TABLE_ENTRY Handle;
   PRTL_ATOM_TABLE_ENTRY AtomEntry;
} RTL_ATOM_HANDLE, *PRTL_ATOM_HANDLE;

NTSTATUS
RtlpInitAtomTableLock(PRTL_ATOM_TABLE AtomTable)
{
   RtlInitializeCriticalSection(&AtomTable->CriticalSection);
   return STATUS_SUCCESS;
}


VOID
RtlpDestroyAtomTableLock(PRTL_ATOM_TABLE AtomTable)
{
   RtlDeleteCriticalSection(&AtomTable->CriticalSection);
}


BOOLEAN
RtlpLockAtomTable(PRTL_ATOM_TABLE AtomTable)
{
   RtlEnterCriticalSection(&AtomTable->CriticalSection);
   return TRUE;
}


VOID
RtlpUnlockAtomTable(PRTL_ATOM_TABLE AtomTable)
{
   RtlLeaveCriticalSection(&AtomTable->CriticalSection);
}


/* handle functions */

BOOLEAN
RtlpCreateAtomHandleTable(PRTL_ATOM_TABLE AtomTable)
{
   RtlInitializeHandleTable(0xCFFF,
			    sizeof(RTL_ATOM_HANDLE),
			    &AtomTable->RtlHandleTable);

   return TRUE;
}

VOID
RtlpDestroyAtomHandleTable(PRTL_ATOM_TABLE AtomTable)
{
   RtlDestroyHandleTable(&AtomTable->RtlHandleTable);
}

PRTL_ATOM_TABLE
RtlpAllocAtomTable(ULONG Size)
{
   return (PRTL_ATOM_TABLE)RtlAllocateHeap(RtlGetProcessHeap(),
                                           HEAP_ZERO_MEMORY,
                                           Size);
}

VOID
RtlpFreeAtomTable(PRTL_ATOM_TABLE AtomTable)
{
   RtlFreeHeap(RtlGetProcessHeap(),
               0,
               AtomTable);
}

PRTL_ATOM_TABLE_ENTRY
RtlpAllocAtomTableEntry(ULONG Size)
{
   return (PRTL_ATOM_TABLE_ENTRY)RtlAllocateHeap(RtlGetProcessHeap(),
                                                 HEAP_ZERO_MEMORY,
                                                 Size);
}

VOID
RtlpFreeAtomTableEntry(PRTL_ATOM_TABLE_ENTRY Entry)
{
   RtlFreeHeap(RtlGetProcessHeap(),
               0,
               Entry);
}

VOID
RtlpFreeAtomHandle(PRTL_ATOM_TABLE AtomTable, PRTL_ATOM_TABLE_ENTRY Entry)
{
   PRTL_HANDLE_TABLE_ENTRY RtlHandleEntry;
   
   if (RtlIsValidIndexHandle(&AtomTable->RtlHandleTable,
                             (ULONG)Entry->HandleIndex,
                             &RtlHandleEntry))
   {
      RtlFreeHandle(&AtomTable->RtlHandleTable,
                    RtlHandleEntry);
   }
}

BOOLEAN
RtlpCreateAtomHandle(PRTL_ATOM_TABLE AtomTable, PRTL_ATOM_TABLE_ENTRY Entry)
{
   ULONG HandleIndex;
   PRTL_HANDLE_TABLE_ENTRY RtlHandle;
   
   RtlHandle = RtlAllocateHandle(&AtomTable->RtlHandleTable,
                                 &HandleIndex);
   if (RtlHandle != NULL)
   {
      PRTL_ATOM_HANDLE AtomHandle = (PRTL_ATOM_HANDLE)RtlHandle;

      /* FIXME - Handle Indexes >= 0xC000 ?! */
      if (HandleIndex < 0xC000)
      {
         Entry->HandleIndex = (USHORT)HandleIndex;
         Entry->Atom = 0xC000 + (USHORT)HandleIndex;

         AtomHandle->AtomEntry = Entry;
         AtomHandle->Handle.Flags = RTL_HANDLE_VALID;

         return TRUE;
      }
      else
      {
         /* set the valid flag, otherwise RtlFreeHandle will fail! */
         AtomHandle->Handle.Flags = RTL_HANDLE_VALID;
         
         RtlFreeHandle(&AtomTable->RtlHandleTable,
                       RtlHandle);
      }
   }

   return FALSE;
}

PRTL_ATOM_TABLE_ENTRY
RtlpGetAtomEntry(PRTL_ATOM_TABLE AtomTable, ULONG Index)
{
   PRTL_HANDLE_TABLE_ENTRY RtlHandle;
   
   if (RtlIsValidIndexHandle(&AtomTable->RtlHandleTable,
                             Index,
                             &RtlHandle))
   {
      PRTL_ATOM_HANDLE AtomHandle = (PRTL_ATOM_HANDLE)RtlHandle;

      return AtomHandle->AtomEntry;
   }
   
   return NULL;
}


/*
 * Ldr Resource support code
 */

IMAGE_RESOURCE_DIRECTORY *find_entry_by_name( IMAGE_RESOURCE_DIRECTORY *dir,
                                              LPCWSTR name, void *root,
                                              int want_dir );
IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( IMAGE_RESOURCE_DIRECTORY *dir,
                                            WORD id, void *root, int want_dir );
IMAGE_RESOURCE_DIRECTORY *find_first_entry( IMAGE_RESOURCE_DIRECTORY *dir,
                                            void *root, int want_dir );
int push_language( USHORT *list, ULONG pos, WORD lang );

/**********************************************************************
 *  find_entry
 *
 * Find a resource entry
 */
NTSTATUS find_entry( PVOID BaseAddress, LDR_RESOURCE_INFO *info,
                     ULONG level, void **ret, int want_dir )
{
    ULONG size;
    void *root;
    IMAGE_RESOURCE_DIRECTORY *resdirptr;
    USHORT list[9];  /* list of languages to try */
    int i, pos = 0;
    LCID user_lcid, system_lcid;

    root = RtlImageDirectoryEntryToData( BaseAddress, TRUE, IMAGE_DIRECTORY_ENTRY_RESOURCE, &size );
    if (!root) return STATUS_RESOURCE_DATA_NOT_FOUND;
    resdirptr = root;

    if (!level--) goto done;
    if (!(*ret = find_entry_by_name( resdirptr, (LPCWSTR)info->Type, root, want_dir || level )))
        return STATUS_RESOURCE_TYPE_NOT_FOUND;
    if (!level--) return STATUS_SUCCESS;

    resdirptr = *ret;
    if (!(*ret = find_entry_by_name( resdirptr, (LPCWSTR)info->Name, root, want_dir || level )))
        return STATUS_RESOURCE_NAME_NOT_FOUND;
    if (!level--) return STATUS_SUCCESS;
    if (level) return STATUS_INVALID_PARAMETER;  /* level > 3 */

    /* 1. specified language */
    pos = push_language( list, pos, info->Language );

    /* 2. specified language with neutral sublanguage */
    pos = push_language( list, pos, MAKELANGID( PRIMARYLANGID(info->Language), SUBLANG_NEUTRAL ) );

    /* 3. neutral language with neutral sublanguage */
    pos = push_language( list, pos, MAKELANGID( LANG_NEUTRAL, SUBLANG_NEUTRAL ) );

    /* if no explicitly specified language, try some defaults */
    if (PRIMARYLANGID(info->Language) == LANG_NEUTRAL)
    {
        /* user defaults, unless SYS_DEFAULT sublanguage specified  */
        if (SUBLANGID(info->Language) != SUBLANG_SYS_DEFAULT)
        {
            /* 4. current thread locale language */
            pos = push_language( list, pos, LANGIDFROMLCID(NtCurrentTeb()->CurrentLocale) );

            if (NT_SUCCESS(NtQueryDefaultLocale(TRUE, &user_lcid)))
            {
                /* 5. user locale language */
                pos = push_language( list, pos, LANGIDFROMLCID(user_lcid) );

                /* 6. user locale language with neutral sublanguage  */
                pos = push_language( list, pos, MAKELANGID( PRIMARYLANGID(user_lcid), SUBLANG_NEUTRAL ) );
            }
        }

        /* now system defaults */

        if (NT_SUCCESS(NtQueryDefaultLocale(FALSE, &system_lcid)))
        {
            /* 7. system locale language */
            pos = push_language( list, pos, LANGIDFROMLCID( system_lcid ) );

            /* 8. system locale language with neutral sublanguage */
            pos = push_language( list, pos, MAKELANGID( PRIMARYLANGID(system_lcid), SUBLANG_NEUTRAL ) );
        }

        /* 9. English */
        pos = push_language( list, pos, MAKELANGID( LANG_ENGLISH, SUBLANG_DEFAULT ) );
    }

    resdirptr = *ret;
    for (i = 0; i < pos; i++)
        if ((*ret = find_entry_by_id( resdirptr, list[i], root, want_dir ))) return STATUS_SUCCESS;

    /* if no explicitly specified language, return the first entry */
    if (PRIMARYLANGID(info->Language) == LANG_NEUTRAL)
    {
        if ((*ret = find_first_entry( resdirptr, root, want_dir ))) return STATUS_SUCCESS;
    }
    return STATUS_RESOURCE_LANG_NOT_FOUND;

done:
    *ret = resdirptr;
    return STATUS_SUCCESS;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频中文字幕| 欧美日韩在线一区二区| 久久免费偷拍视频| 久久精品国产精品亚洲精品| 欧美精品自拍偷拍| 视频一区免费在线观看| 欧美久久久影院| 亚洲第一在线综合网站| 欧美日韩国产一级| 视频一区二区三区中文字幕| 欧美日韩综合色| 日韩精彩视频在线观看| 91精品福利在线一区二区三区| 视频一区二区三区中文字幕| 欧美精品高清视频| 蜜桃精品视频在线| 欧美精品一区二区久久久| 国产综合久久久久影院| 日韩成人午夜精品| 91麻豆精品久久久久蜜臀| 免费在线看一区| 久久老女人爱爱| 成人国产精品视频| 亚洲乱码国产乱码精品精98午夜| 在线观看精品一区| 天堂av在线一区| 日韩欧美一级精品久久| 国产乱码精品一区二区三区五月婷| 国产午夜亚洲精品理论片色戒| 成人一级视频在线观看| 亚洲视频每日更新| 欧美老肥妇做.爰bbww| 毛片av一区二区| 国产午夜精品理论片a级大结局 | 中文字幕欧美激情| 成人一区二区视频| 一区二区成人在线| 日韩三级在线观看| 国产精品亚洲成人| 一区二区三区日韩欧美| 678五月天丁香亚洲综合网| 激情图片小说一区| 中文字幕中文乱码欧美一区二区| 在线视频国内自拍亚洲视频| 天堂va蜜桃一区二区三区| 久久综合九色综合97婷婷女人| 99久久久久免费精品国产| 亚洲大型综合色站| 久久久国产午夜精品| 一本到一区二区三区| 日韩国产精品久久| 国产精品视频第一区| 欧美色图12p| 国产精品白丝av| 一二三区精品视频| 精品国精品国产尤物美女| 91农村精品一区二区在线| 日本最新不卡在线| 中文字幕亚洲区| 91精品国产色综合久久ai换脸 | 色综合激情久久| 蜜桃视频一区二区三区在线观看| 国产精品伦理在线| 欧美精品 日韩| 高潮精品一区videoshd| 亚洲va中文字幕| 国产免费久久精品| 7777精品伊人久久久大香线蕉超级流畅 | 久久精品一区八戒影视| 日本丰满少妇一区二区三区| 韩国三级在线一区| 亚洲一区二区三区视频在线| 久久青草欧美一区二区三区| 在线观看日韩一区| 高清av一区二区| 另类的小说在线视频另类成人小视频在线 | 国产成人精品亚洲日本在线桃色| 一区二区视频在线看| 欧美精品一区视频| 欧美日韩中字一区| 成人免费看黄yyy456| 免费成人深夜小野草| 亚洲久草在线视频| 国产欧美日韩精品一区| 欧美一区二区三区爱爱| 91久久香蕉国产日韩欧美9色| 国产麻豆一精品一av一免费| 香港成人在线视频| 《视频一区视频二区| 欧美精品一区二区三区在线| 欧美日免费三级在线| 北岛玲一区二区三区四区| 加勒比av一区二区| 日韩专区一卡二卡| 一二三四区精品视频| 中文字幕中文字幕一区| 久久久国产午夜精品| 日韩精品中文字幕在线不卡尤物| 欧美日韩一二三| 一本色道综合亚洲| 不卡一区二区三区四区| 国产精品一区二区在线观看网站| 人人爽香蕉精品| 亚洲国产美国国产综合一区二区| 国产精品电影一区二区三区| 久久精品视频免费观看| 精品88久久久久88久久久 | 色哦色哦哦色天天综合| 成人毛片在线观看| 国产成人a级片| 韩国理伦片一区二区三区在线播放| 日韩成人av影视| 亚洲一级二级在线| 亚洲另类在线一区| 中文字幕一区二区三区蜜月| 国产精品系列在线| 久久精品综合网| 久久久精品免费免费| 精品日韩在线观看| 精品美女在线播放| 精品日韩一区二区三区| 欧美成人猛片aaaaaaa| 日韩一区二区三区电影| 欧美一区二区三区的| 欧美精品三级在线观看| 欧美色网一区二区| 欧美日韩精品福利| 欧美日韩日本视频| 在线成人av网站| 91精品国产色综合久久不卡蜜臀| 欧美一区二区视频在线观看| 制服丝袜成人动漫| 日韩一区二区精品葵司在线| 欧美成人乱码一区二区三区| 日韩欧美综合一区| 日韩精品资源二区在线| 久久欧美一区二区| 欧美激情综合在线| 自拍偷拍国产精品| 一区二区视频在线| 天堂资源在线中文精品| 日日夜夜精品视频免费| 麻豆精品新av中文字幕| 国产综合久久久久久久久久久久| 国内精品嫩模私拍在线| 国产精品一二二区| 不卡的av网站| 色婷婷av一区二区三区gif| 欧美日韩中文精品| 日韩欧美视频一区| 久久久久久亚洲综合| 国产精品久久久久久久蜜臀| 亚洲黄色小视频| 五月婷婷综合激情| 捆绑变态av一区二区三区| 国产一区二区三区免费播放| 国产成人精品亚洲日本在线桃色| zzijzzij亚洲日本少妇熟睡| 日本久久一区二区三区| 欧美精品日韩综合在线| 精品黑人一区二区三区久久| 欧美高清一级片在线观看| 亚洲美女电影在线| 日韩精品成人一区二区三区 | 午夜激情久久久| 精品在线播放午夜| 丁香六月久久综合狠狠色| 99re视频精品| 7777精品伊人久久久大香线蕉超级流畅| 精品国产乱码久久久久久老虎| 中文乱码免费一区二区| 亚洲国产精品精华液网站| 国内久久精品视频| 91麻豆国产精品久久| 欧美精品久久99| 中文字幕av一区 二区| 亚洲一级二级三级在线免费观看| 激情偷乱视频一区二区三区| 99视频一区二区| 91精品欧美福利在线观看| 国产视频一区在线观看| 亚洲自拍与偷拍| 久久国产精品一区二区| 久久精品亚洲精品国产欧美kt∨| 亚洲人成影院在线观看| 老司机午夜精品99久久| 91在线视频播放| 日韩视频免费直播| 中文字幕在线观看一区| 日产国产欧美视频一区精品| 99久久精品情趣| 日韩欧美在线123| 亚洲裸体xxx| 国产精华液一区二区三区| 欧美色涩在线第一页| 国产精品色哟哟| 免费成人在线观看视频| 91网站视频在线观看| 精品成人一区二区| 亚洲成人av一区二区|