⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 w2k_call.c

📁 Undocumented Windows 2000 Secrets简体中文版.+源码光盘
💻 C
📖 第 1 页 / 共 5 页
字号:
                             4, BaseAddress);
    return pa;
    }

// -----------------------------------------------------------------

PVOID WINAPI
_MmGetSystemRoutineAddress (PWORD SystemRoutineName)
    {
    return w2kCallP (NULL, "MmGetSystemRoutineAddress", FALSE,
                     4, SystemRoutineName);
    }

// -----------------------------------------------------------------

PVOID WINAPI
_MmGetVirtualForPhysical (PHYSICAL_ADDRESS PhysicalAddress)
    {
    return w2kCallP (NULL, "MmGetVirtualForPhysical", FALSE,
                     8, PhysicalAddress);
    }

// -----------------------------------------------------------------

PVOID WINAPI
_MmHighestUserAddress (VOID)
    {
    return w2kCopyP (NULL, "MmHighestUserAddress");
    }

// -----------------------------------------------------------------

BOOLEAN WINAPI
_MmIsAddressValid (PVOID VirtualAddress)
    {
    return w2kCall08 (FALSE, "MmIsAddressValid", FALSE,
                      4, VirtualAddress);
    }

// -----------------------------------------------------------------

PVOID WINAPI
_MmSystemRangeStart (VOID)
    {
    return w2kCopyP (NULL, "MmSystemRangeStart");
    }

// -----------------------------------------------------------------

PVOID WINAPI
_MmUserProbeAddress (VOID)
    {
    return w2kCopyP (NULL, "MmUserProbeAddress");
    }

// =================================================================
// NATIONAL LANGUAGE SUPPORT
// =================================================================

WORD WINAPI
_NlsAnsiCodePage (VOID)
    {
    return w2kCopy16 (0, "NlsAnsiCodePage");
    }

// -----------------------------------------------------------------

BOOLEAN WINAPI
_NlsMbCodePageTag (VOID)
    {
    return w2kCopy08 (FALSE, "NlsMbCodePageTag");
    }

// -----------------------------------------------------------------

BOOLEAN WINAPI
_NlsMbOemCodePageTag (VOID)
    {
    return w2kCopy08 (FALSE, "NlsMbOemCodePageTag");
    }

// -----------------------------------------------------------------

WORD WINAPI
_NlsOemCodePage (VOID)
    {
    return w2kCopy16 (0, "NlsOemCodePage");
    }

// =================================================================
// NATIVE API
// =================================================================

WORD WINAPI
_NtBuildNumber (VOID)
    {
    return w2kCopy16 (0, "NtBuildNumber");
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
_NtClose (HANDLE Handle)
    {
    return w2kCallNT ("NtClose",
                      4, Handle);
    }

// -----------------------------------------------------------------

DWORD WINAPI
_NtGlobalFlag (VOID)
    {
    return w2kCopy32 (0, "NtGlobalFlag");
    }

// =================================================================
// OBJECT MANAGER
// =================================================================

VOID WINAPI
_ObDereferenceObject (POBJECT Object)
    {
    w2kCallV (NULL, "ObDereferenceObject", FALSE,
              4, Object);
    return;
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
_ObOpenObjectByPointer (POBJECT         Object,
                        DWORD           HandleAttributes,
         /* optional */ PACCESS_STATE   PassedAccessState,
                        ACCESS_MASK     DesiredAccess,
                        POBJECT_TYPE    ObjectType,
                        KPROCESSOR_MODE AccessMode,
                        PHANDLE         Handle)
    {
    return w2kCallNT ("ObOpenObjectByPointer",
                      28, Object, HandleAttributes,
                          PassedAccessState, DesiredAccess,
                          ObjectType, AccessMode, Handle);
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
_ObQueryNameString (POBJECT                  Object,
                    POBJECT_NAME_INFORMATION NameString,
        /* bytes */ DWORD                    NameStringLength,
                    PDWORD                   ReturnLength)
    {
    return w2kCallNT ("ObQueryNameString",
                      16, Object, NameString, NameStringLength,
                          ReturnLength);
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
__ObQueryTypeInfo (POBJECT_TYPE      ObjectType,
                   POBJECT_TYPE_INFO TypeInfo,
   /* bytes     */ DWORD             TypeInfoLength,
   /* init to 0 */ PDWORD            ReturnLength)
    {
    return w2kXCallNT ("ObQueryTypeInfo",
                       16, ObjectType, TypeInfo, TypeInfoLength,
                           ReturnLength);
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
__ObQueryTypeName (POBJECT                  Object,
                   POBJECT_NAME_INFORMATION NameString,
       /* bytes */ DWORD                    NameStringLength,
                   PDWORD                   ReturnLength)
    {
    return w2kXCallNT ("ObQueryTypeName",
                       16, Object, NameString, NameStringLength,
                           ReturnLength);
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
_ObReferenceObjectByHandle
                     (HANDLE                     Handle,
                      ACCESS_MASK                DesiredAccess,
       /* optional */ POBJECT_TYPE               ObjectType,
                      KPROCESSOR_MODE            AccessMode,
                      PPOBJECT                   Object,
       /* optional */ POBJECT_HANDLE_INFORMATION HandleInformation)
    {
    return w2kCallNT ("ObReferenceObjectByHandle",
                      24, Handle, DesiredAccess, ObjectType,
                          AccessMode, Object, HandleInformation);
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
_ObReferenceObjectByPointer (POBJECT         Object,
                             ACCESS_MASK     DesiredAccess,
                             POBJECT_TYPE    ObjectType,
                             KPROCESSOR_MODE AccessMode)
    {
    return w2kCallNT ("ObReferenceObjectByPointer",
                      16, Object, DesiredAccess, ObjectType,
                          AccessMode);
    }

// -----------------------------------------------------------------

VOID WINAPI
_ObfDereferenceObject (POBJECT Object)
    {
    w2kCallV (NULL, "ObfDereferenceObject", TRUE,
              4, Object);
    return;
    }

// -----------------------------------------------------------------

#define _ObReferenceObject(Object) _ObfReferenceObject(Object)

VOID WINAPI
_ObfReferenceObject (POBJECT Object)
    {
    w2kCallV (NULL, "ObfReferenceObject", TRUE,
              4, Object);
    return;
    }

// -----------------------------------------------------------------

PHANDLE_TABLE WINAPI
__ObpKernelHandleTable (VOID)
    {
    return w2kXCopyP (NULL, "ObpKernelHandleTable");
    }

// -----------------------------------------------------------------

PERESOURCE WINAPI
__ObpRootDirectoryMutex (VOID)
    {
    return w2kXCopyP (NULL, "ObpRootDirectoryMutex");
    }

// -----------------------------------------------------------------

POBJECT_DIRECTORY WINAPI
__ObpRootDirectoryObject (VOID)
    {
    return w2kXCopyP (NULL, "ObpRootDirectoryObject");
    }

// -----------------------------------------------------------------

POBJECT_DIRECTORY WINAPI
__ObpTypeDirectoryObject (VOID)
    {
    return w2kXCopyP (NULL, "ObpTypeDirectoryObject");
    }

// =================================================================
// MEMORY PROBING
// =================================================================

DWORD WINAPI
_ProbeForRead (PVOID Address,
               DWORD Length,
               DWORD Alignment)
    {
    w2kCallV (NULL, "ProbeForRead", FALSE,
              12, Address, Length, Alignment);

    return GetLastError ();
    };

// -----------------------------------------------------------------

DWORD WINAPI
_ProbeForWrite (PVOID Address,
                DWORD Length,
                DWORD Alignment)
    {
    w2kCallV (NULL, "ProbeForWrite", FALSE,
              12, Address, Length, Alignment);

    return GetLastError ();
    };

// =================================================================
// PROCESS STRUCTURE
// =================================================================

HANDLE WINAPI
_PsGetCurrentProcessId (VOID)
    {
    return w2kCallP (0, "PsGetCurrentProcessId", FALSE, 0);
    }

// -----------------------------------------------------------------

HANDLE WINAPI
_PsGetCurrentThreadId (VOID)
    {
    return w2kCallP (0, "PsGetCurrentThreadId", FALSE, 0);
    }

// -----------------------------------------------------------------

LARGE_INTEGER WINAPI
_PsGetProcessExitTime (VOID)
    {
    LARGE_INTEGER li;

    li.QuadPart = w2kCall64 (0, "PsGetProcessExitTime", FALSE, 0);
    return li;
    }

// -----------------------------------------------------------------

BOOLEAN WINAPI
_PsGetVersion (PDWORD          MajorVersion,
               PDWORD          MinorVersion,
               PDWORD          BuildNumber,
               PUNICODE_STRING CSDVersion)
    {
    return w2kCall08 (FALSE, "PsGetVersion", FALSE,
                      16, MajorVersion, MinorVersion,
                          BuildNumber,  CSDVersion);
    }

// -----------------------------------------------------------------

PEPROCESS WINAPI
_PsInitialSystemProcess (VOID)
    {
    return w2kCopyP (NULL, "PsInitialSystemProcess");
    }

// -----------------------------------------------------------------

BOOLEAN WINAPI
_PsIsThreadTerminating (PETHREAD Thread)
    {
    return w2kCall08 (FALSE, "PsIsThreadTerminating", FALSE,
                      4, Thread);
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
_PsLookupProcessByProcessId (HANDLE     UniqueProcessId,
                             PPEPROCESS Process)
    {
    return w2kCallNT ("PsLookupProcessByProcessId",
                      8, UniqueProcessId, Process);
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
_PsLookupProcessThreadByCid (PCLIENT_ID Cid,
              /* optional */ PPEPROCESS Process,
                             PPETHREAD  Thread)
    {
    return w2kCallNT ("PsLookupProcessThreadByCid",
                      12, Cid, Process, Thread);
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
_PsLookupThreadByThreadId (HANDLE    UniqueThreadId,
                           PPETHREAD Thread)
    {
    return w2kCallNT ("PsLookupThreadByThreadId",
                      8, UniqueThreadId, Thread);
    }

// =================================================================
// RUNTIME LIBRARY
// =================================================================

NTSTATUS WINAPI
_RtlAnsiStringToUnicodeString (PUNICODE_STRING Destination,
                               PANSI_STRING    Source,
                               BOOLEAN         AllocateDestination)
    {
    return w2kCallNT ("RtlAnsiStringToUnicodeString",
                      12, Destination, Source, AllocateDestination);
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
_RtlAppendUnicodeStringToString (PUNICODE_STRING Destination,
                                 PUNICODE_STRING Source)
    {
    return w2kCallNT ("RtlAppendUnicodeStringToString",
                      8, Destination, Source);
    }

// -----------------------------------------------------------------

NTSTATUS WINAPI
_RtlAppendUnicodeToString (PUNICODE_STRING Destination,
                           PWORD           Source)
    {
    return w2kCallNT ("RtlAppendUnicodeToString",
                      8, Destination, Source);
    }

// -----------------------------------------------------------------

SIZE_T WINAPI
_RtlCompareMemory (PVOID  Source1,
                   PVOID  Source2,
                   SIZE_T Length)
    {
    return w2kCall32 (0, "RtlCompareMemory", FALSE,
                      12, Source1, Source2, Length);
    }

// -----------------------------------------------------------------

SIZE_T WINAPI
_RtlCompareMemoryUlong (PVOID  Source1,
                        PVOID  Source2,
            /* Bytes */ SIZE_T Length)
    {
    return w2kCall32 (0, "RtlCompareMemoryUlong", FALSE,
                      12, Source1, Source2, Length);
    }

// -----------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -