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

📄 shell.h

📁 用于查询PC机上的USB端口是否有设备挂接上
💻 H
📖 第 1 页 / 共 2 页
字号:
#define SGVMI_XMS_Lock    0x00010000            // XMS Hands Locked
#define SGVMI_EMS_Lock    0x00008000            // EMS Hands Locked
#define SGVMI_V86_Lock    0x00040000            // V86 Memory Locked
#define SGVMI_ClsExit     0x40000000            // Close on Exit Enab

/*
 *  Bits of returned ECX flags for SHELL_GetVMInfo service
 *  Currently no bits defined.
 */

#endif /* Not_VxD */
//  EndDoc

#ifndef WIN31COMPAT

#ifndef Not_VxD

/* Local Memory Flags */
#define LMEM_FIXED          0x0000
#define LMEM_ZEROINIT       0x0040

#define LPTR                (LMEM_FIXED | LMEM_ZEROINIT)

#define LMEM_STRING     0x00010000
#define LMEM_OEM2ANSI   0x00020000

/* Flags returned by SHELL_QueryAppyTimeAvailable */
#define QAAFL_APPYAVAIL	0x00000001	/* 'Appy-time server exists */
#define QAAFL_APPYNOW	0x00000002	/* It is now 'Appy-time */

/* Flags for SHELL_CallAtAppyTime */
#define CAAFL_RING0     0x00000001 /* Does not require GUI services */
#define CAAFL_TIMEOUT   0x00000002 /* Time out the event */

#endif /* Not_VxD */

/******************************************************************************
 *
 * Structure used for SHELL_ShellExecute, q.v.
 *
 *****************************************************************************/

/* H2INCSWITCHES -t */

typedef struct _SHEXPACKET {    /* shex */

    DWORD   dwTotalSize;/* Size of packet, including all baggage */
    DWORD   dwSize;     /* Size of SHEXPACKET */
    DWORD   ibOp;       /* Operation to perform */
    DWORD   ibFile;     /* File to open */
    DWORD   ibParams;   /* Optional parameters */
    DWORD   ibDir;      /* Directory in which to launch */
    DWORD   dwReserved;	/* Must be zero */
    DWORD   nCmdShow;   /* How to show the window */

/*  char    rgchBaggage[]; */	/* Arbitrary baggage appended here */

} SHEXPACKET, *PSHEXPACKET;

/* H2INCSWITCHES -t- */




/* EQUATES FOR _SHELL_GetDOSAppInfo */
// Function IDs
#define SGDAIF_COMPARENAME  0
#define SGDAIF_TESTAPPBIT   1
#define SGDAIF_LASTVALID    1	    // Used internally


// Return values
#define SGDAIR_SUCCESS	    0
#define SGDAIR_NOMATCH	    1
#define SGDAIR_BADFUNCTION  2



#endif /* WIN31COMPAT */

/*XLATOFF*/

#ifndef Not_VxD

typedef DWORD   APPY_HANDLE;
typedef VOID    (__cdecl *APPY_CALLBACK)(DWORD dwRefData);

#define BSM_ERROR_SOMEONE_FAILED    0
#define BSM_ERROR_SUCCESS       1
#define BSM_ERROR_OUT_OF_MEMORY     0xFFFFFFFF

typedef DWORD   SYSBHOOK_HANDLE;
typedef BOOL    (__cdecl *SYSBHOOK_CALLBACK)(DWORD wMessage, DWORD wParam, DWORD lParam, DWORD dwRefData);

#pragma warning (disable:4035)      // turn off no return code warning

DWORD VXDINLINE
SHELL_SYSMODAL_Message(HVM hvm, DWORD dwMBFlags, PCHAR pszMessage, PCHAR pszCaption)
{
    _asm    mov ebx, [hvm]
    _asm    mov eax, [dwMBFlags]
    _asm    or  eax, MB_SYSTEMMODAL
    _asm    mov ecx, [pszMessage]
    _asm    mov edi, [pszCaption]
    VxDCall(SHELL_SYSMODAL_Message);
}

DWORD VXDINLINE
SHELL_ShellExecute(PSHEXPACKET pShex)
{
    _asm    push    pShex
    Touch_Register(eax)
    VxDCall(_SHELL_ShellExecute);
    _asm    add esp, 4*1   
}


typedef VOID                (_cdecl *SHELL_MESSAGE_COMPLETION_HANDLER)();

DWORD VXDINLINE
SHELL_Message(HVM hvm, DWORD dwMBFlags, PCHAR pszMessage, PCHAR pszCaption, SHELL_MESSAGE_COMPLETION_HANDLER CallBack, DWORD dwRefData)
{
    _asm    mov ebx, [hvm]
    _asm    mov eax, [dwMBFlags]    
    _asm    mov ecx, [pszMessage]
    _asm    mov edi, [pszCaption]
    _asm    mov esi, [CallBack]
    _asm    mov edx, [dwRefData]
    VxDCall(SHELL_Message);
}

#ifndef WANTVXDWRAPS

#ifndef WIN31COMPAT

APPY_HANDLE VXDINLINE
SHELL_CallAtAppyTime(APPY_CALLBACK pfnAppyCallBack, DWORD dwRefData, DWORD flAppy, ...)
{
    _asm    push    flAppy[4]
    _asm    push    flAppy
    _asm    push    dwRefData
    _asm    push    pfnAppyCallBack
    Touch_Register(eax)
    Touch_Register(ecx)
    Touch_Register(edx)
    VxDCall(_SHELL_CallAtAppyTime);
    _asm    add esp, 4*4
}

VOID VXDINLINE
SHELL_CancelAppyTimeEvent(APPY_HANDLE hAppy)
{
    _asm    push    hAppy
    Touch_Register(eax)
    Touch_Register(ecx)
    Touch_Register(edx)
    VxDCall(_SHELL_CancelAppyTimeEvent);
    _asm    add esp, 4
}

BOOL VXDINLINE
SHELL_QueryAppyTimeAvailable(VOID)
{
    Touch_Register(ecx)
    Touch_Register(edx)
    VxDCall(_SHELL_QueryAppyTimeAvailable)
}

DWORD VXDINLINE
SHELL_LocalAllocEx(DWORD fl, DWORD cb, PVOID lpvBuf)
{
    _asm    push    lpvBuf
    _asm    push    cb
    _asm    push    fl
    Touch_Register(eax)
    Touch_Register(ecx)
    Touch_Register(edx)
    VxDCall(_SHELL_LocalAllocEx);
    _asm    add esp, 3*4
}

DWORD VXDINLINE
SHELL_LocalFree(DWORD hdata)
{
    _asm    push    hdata
    Touch_Register(eax)
    Touch_Register(ecx)
    Touch_Register(edx)
    VxDCall(_SHELL_LocalFree);
    _asm    add esp, 1*4
}

DWORD VXDINLINE
SHELL_CallDll(PCHAR lpszDll, PCHAR lpszProcName, DWORD cbArgs, PVOID lpvArgs)
{
    _asm    push    lpvArgs
    _asm    push    cbArgs
    _asm    push    lpszProcName
    _asm    push    lpszDll
    Touch_Register(eax)
    Touch_Register(ecx)
    Touch_Register(edx)
    VxDCall(_SHELL_CallDll);
    _asm    add esp, 4*4
}

DWORD VXDINLINE
SHELL_BroadcastSystemMessage(DWORD dwFlags, PDWORD lpdwRecipients, DWORD uMsg, DWORD wparam, DWORD lparam)
{
    _asm    push    lparam
    _asm    push    wparam
    _asm    push    uMsg
    _asm    push    lpdwRecipients
    _asm    push    dwFlags
    Touch_Register(eax)
    Touch_Register(ecx)
    Touch_Register(edx)
    VxDCall(_SHELL_BroadcastSystemMessage);
    _asm    add esp, 5*4
}

SYSBHOOK_HANDLE VXDINLINE
SHELL_HookSystemBroadcast(SYSBHOOK_CALLBACK pfnSysBHookCallBack, DWORD dwRefData, DWORD dwCallOrder)
{
        _asm    push    dwCallOrder
        _asm    push    dwRefData
        _asm    push    pfnSysBHookCallBack
        Touch_Register(eax)
    Touch_Register(ecx)
    Touch_Register(edx)
        VxDCall(_SHELL_HookSystemBroadcast);
        _asm    add     esp, 3*4
}

VOID VXDINLINE
SHELL_UnhookSystemBroadcast(SYSBHOOK_HANDLE SysBHookHandle)
{
        _asm    push    SysBHookHandle
        Touch_Register(eax)
    Touch_Register(ecx)
    Touch_Register(edx)
        VxDCall(_SHELL_UnhookSystemBroadcast);
        _asm    add     esp, 1*4
}

#endif // WIN31COMPAT

#endif // WANTVXDWRAPS

#pragma warning (default:4035)      // turn on no return code warning

#endif // Not_VxD

/*XLATON*/

#endif // _SHELL_H

⌨️ 快捷键说明

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