msxfs.dll函数加载代码

msxfs.dll函数加载代码

#include "stdafx.h"
#include "WSXFSLoader.h"

NS_AWP_DEVICE_WOSA_BEGIN

WSXFSLoader::WSXFSLoader()
{
    hDllLib = LoadLibrary(_T("msxfs.dll"));
    if (hDllLib == nullptr)
        return;

    WCHAR lpDllPath[MAX_PATH];
    GetModuleFileName(hDllLib, lpDllPath, sizeof(lpDllPath));

    // 获取进程文件路径
    HINSTANCE hModule = GetModuleHandle(NULL);
    WCHAR lpszPath[MAX_PATH];
    DWORD dwPathLength = GetModuleFileName(hModule, lpszPath, sizeof(lpszPath));
    //截取目录
    *(wcsrchr(lpszPath, '\\') + 1) = 0;
    wcscat_s(lpszPath, _T("Temp\\"));

    //WFM
    m_fpWFMAllocateBuffer = (WFMAllocateBufferProc)GetProcAddress(hDllLib, "WFMAllocateBuffer");
    m_fpWFMAllocateMore = (WFMAllocateMoreProc)GetProcAddress(hDllLib, "WFMAllocateMore");
    m_fpWFMFreeBuffer = (WFMFreeBufferProc)GetProcAddress(hDllLib, "WFMFreeBuffer");
    m_fpWFMGetTraceLevel = (WFMGetTraceLevelProc)GetProcAddress(hDllLib, "WFMGetTraceLevel");
    m_fpWFMKillTimer = (WFMKillTimerProc)GetProcAddress(hDllLib, "WFMKillTimer");
    m_fpWFMOutputTraceData = (WFMOutputTraceDataProc)GetProcAddress(hDllLib, "WFMOutputTraceData");
    m_fpWFMReleaseDLL = (WFMReleaseDLLProc)GetProcAddress(hDllLib, "WFMReleaseDLL");
    m_fpWFMSetTimer = (WFMSetTimerProc)GetProcAddress(hDllLib, "WFMSetTimer");
    m_fpWFMSetTraceLevel = (WFMSetTraceLevelProc)GetProcAddress(hDllLib, "WFMSetTraceLevel");
    //WFS
    m_fpWFSAsyncClose = (WFSAsyncCloseProc)GetProcAddress(hDllLib, "WFSAsyncClose");
    m_fpWFSAsyncDeregister = (WFSAsyncDeregisterProc)GetProcAddress(hDllLib, "WFSAsyncDeregister");
    m_fpWFSAsyncExecute = (WFSAsyncExecuteProc)GetProcAddress(hDllLib, "WFSAsyncExecute");
    m_fpWFSAsyncGetInfo = (WFSAsyncGetInfoProc)GetProcAddress(hDllLib, "WFSAsyncGetInfo");
    m_fpWFSAsyncLock = (WFSAsyncLockProc)GetProcAddress(hDllLib, "WFSAsyncLock");
    m_fpWFSAsyncOpen = (WFSAsyncOpenProc)GetProcAddress(hDllLib, "WFSAsyncOpen");
    m_fpWFSAsyncRegister = (WFSAsyncRegisterProc)GetProcAddress(hDllLib, "WFSAsyncRegister");
    m_fpWFSAsyncUnlock = (WFSAsyncUnlockProc)GetProcAddress(hDllLib, "WFSAsyncUnlock");
    m_fpWFSCancelAsyncRequest = (WFSCancelAsyncRequestProc)GetProcAddress(hDllLib, "WFSCancelAsyncRequest");
    m_fpWFSCancelBlockingCall = (WFSCancelBlockingCallProc)GetProcAddress(hDllLib, "WFSCancelBlockingCall");
    m_fpWFSCleanUp = (WFSCleanUpProc)GetProcAddress(hDllLib, "WFSCleanUp");
    m_fpWFSClose = (WFSCloseProc)GetProcAddress(hDllLib, "WFSClose");
    m_fpWFSDeregister = (WFSDeregisterProc)GetProcAddress(hDllLib, "WFSDeregister");
    m_fpWFSDestroyAppHandle = (WFSDestroyAppHandleProc)GetProcAddress(hDllLib, "WFSDestroyAppHandle");
    m_fpWFSFreeResult = (WFSFreeResultProc)GetProcAddress(hDllLib, "WFSFreeResult");
    m_fpWFSGetInfo = (WFSGetInfoProc)GetProcAddress(hDllLib, "WFSGetInfo");
    m_fpWFSIsBlocking = (WFSIsBlockingProc)GetProcAddress(hDllLib, "WFSIsBlocking");
    m_fpWFSLock = (WFSLockProc)GetProcAddress(hDllLib, "WFSLock");
    m_fpWFSOpen = (WFSOpenProc)GetProcAddress(hDllLib, "WFSOpen");
    m_fpWFSRegister = (WFSRegisterProc)GetProcAddress(hDllLib, "WFSRegister");
    m_fpWFSSetBlockingHook = (WFSSetBlockingHookProc)GetProcAddress(hDllLib, "WFSSetBlockingHook");
    m_fpWFSStartUp = (WFSStartUpProc)GetProcAddress(hDllLib, "WFSStartUp");
    m_fpWFSUnhookBlockingHook = (WFSUnhookBlockingHookProc)GetProcAddress(hDllLib, "WFSUnhookBlockingHook");
    m_fpWFSUnlock = (WFSUnlockProc)GetProcAddress(hDllLib, "WFSUnlock");

    //DWORD dwVersion = (*fpWFSStartUp)();
    //DWORD dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
    //DWORD dwWindowsMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
    //const int nBufSize = 512;
    //TCHAR chBuf[nBufSize];
    //ZeroMemory(chBuf, nBufSize);
    //OutputDebugString(chBuf);
    //FreeLibrary(hDllLib);
    LPWFSVERSION lpVersion = nullptr;
    auto result = WFMAllocateBuffer(sizeof(WFSVERSION), ulMemFlags, (void**)&lpVersion);
    DWORD dwVersion = 0x00031403;
    auto startupResult = this->WFSStartUp(dwVersion, lpVersion);
}

WSXFSLoader::~WSXFSLoader()
{
    if (hDllLib != nullptr)
    {
        FreeLibrary(hDllLib);
    }
}

HRESULT WSXFSLoader::WFMAllocateBuffer(ULONG ulSize, ULONG ulFlags, LPVOID * lppvData)
{
    return (*m_fpWFMAllocateBuffer)(ulSize, ulFlags, lppvData);
}

HRESULT WSXFSLoader::WFMAllocateMore(ULONG ulSize, LPVOID lpvOriginal, LPVOID * lppvData)
{
    return (*m_fpWFMAllocateMore)(ulSize, lpvOriginal, lppvData);
}

HRESULT WSXFSLoader::WFMFreeBuffer(LPVOID lpvData)
{
    return (*m_fpWFMFreeBuffer)(lpvData);
}

HRESULT WSXFSLoader::WFMGetTraceLevel(HSERVICE hService, LPDWORD lpdwTraceLevel)
{
    return (*m_fpWFMGetTraceLevel)(hService, lpdwTraceLevel);
}

HRESULT WSXFSLoader::WFMKillTimer(WORD wTimerID)
{
    return (*m_fpWFMKillTimer)(wTimerID);
}

HRESULT WSXFSLoader::WFMOutputTraceData(LPSTR lpszData)
{
    return (*m_fpWFMOutputTraceData)(lpszData);
}

HRESULT WSXFSLoader::WFMReleaseDLL(HPROVIDER hProvider)
{
    return (*m_fpWFMReleaseDLL)(hProvider);
}

HRESULT WSXFSLoader::WFMSetTimer(HWND hWnd, LPVOID lpContext, DWORD dwTimeVal, LPWORD lpwTimerID)
{
    return (*m_fpWFMSetTimer)(hWnd, lpContext, dwTimeVal, lpwTimerID);
}

HRESULT WSXFSLoader::WFMSetTraceLevel(HSERVICE hService, DWORD dwTraceLevel)
{
    return (*m_fpWFMSetTraceLevel)(hService, dwTraceLevel);
}

HRESULT WSXFSLoader::WFSAsyncClose(HSERVICE hService, HWND hWnd, LPREQUESTID lpRequestID)
{
    return (*m_fpWFSAsyncClose)(hService, hWnd, lpRequestID);
}

HRESULT WSXFSLoader::WFSAsyncDeregister(HSERVICE hService, DWORD dwEventClass, HWND hWndReg, HWND hWnd, LPREQUESTID lpRequestID)
{
    return (*m_fpWFSAsyncDeregister)(hService, dwEventClass, hWndReg, hWnd, lpRequestID);
}

HRESULT WSXFSLoader::WFSAsyncExecute(HSERVICE hService, DWORD dwCommand, LPVOID lpCmdData, DWORD dwTimeOut, HWND hWnd, LPREQUESTID lpRequestID)
{
    return (*m_fpWFSAsyncExecute)(hService, dwCommand, lpCmdData, dwTimeOut, hWnd, lpRequestID);
}

HRESULT WSXFSLoader::WFSAsyncGetInfo(HSERVICE hService, DWORD dwCategory, LPVOID lpQueryDetails, DWORD dwTimeOut, HWND hWnd, LPREQUESTID lpRequestID)
{
    return (*m_fpWFSAsyncGetInfo)(hService, dwCategory, lpQueryDetails, dwTimeOut, hWnd, lpRequestID);
}

HRESULT WSXFSLoader::WFSAsyncLock(HSERVICE hService, DWORD dwTimeOut, HWND hWnd, LPREQUESTID lpRequestID)
{
    return (*m_fpWFSAsyncLock)(hService, dwTimeOut, hWnd, lpRequestID);
}

HRESULT WSXFSLoader::WFSAsyncOpen(LPSTR lpszLogicalName, HAPP hApp, LPSTR lpszAppID, DWORD dwTraceLevel, DWORD dwTimeOut, LPHSERVICE lphService, HWND hWnd, DWORD dwSrvcVersionsRequired, LPWFSVERSION lpSrvcVersion, LPWFSVERSION lpSPIVersion, LPREQUESTID lpRequestID)
{
    return (*m_fpWFSAsyncOpen)(lpszLogicalName, hApp, lpszAppID, dwTraceLevel, dwTimeOut, lphService, hWnd, dwSrvcVersionsRequired, lpSrvcVersion, lpSPIVersion, lpRequestID);
}

HRESULT WSXFSLoader::WFSAsyncRegister(HSERVICE hService, DWORD dwEventClass, HWND hWndReg, HWND hWnd, LPREQUESTID lpRequestID)
{
    return (*m_fpWFSAsyncRegister)(hService, dwEventClass, hWndReg, hWnd, lpRequestID);
}

HRESULT WSXFSLoader::WFSAsyncUnlock(HSERVICE hService, HWND hWnd, LPREQUESTID lpRequestID)
{
    return (*m_fpWFSAsyncUnlock)(hService, hWnd, lpRequestID);
}

HRESULT WSXFSLoader::WFSCancelAsyncRequest(HSERVICE hService, REQUESTID lpRequestID)
{
    return (*m_fpWFSCancelAsyncRequest)(hService, lpRequestID);
}

HRESULT WSXFSLoader::WFSCancelBlockingCall(DWORD dwThreadID)
{
    return (*m_fpWFSCancelBlockingCall)(dwThreadID);
}

HRESULT WSXFSLoader::WFSCleanUp()
{
    return (*m_fpWFSCleanUp)();
}

HRESULT WSXFSLoader::WFSClose(HSERVICE hService)
{
    return (*m_fpWFSClose)(hService);
}

HRESULT WSXFSLoader::WFSDeregister(HSERVICE hService, DWORD dwEventClass, HWND hWndReg)
{
    return (*m_fpWFSDeregister)(hService, dwEventClass, hWndReg);
}

HRESULT WSXFSLoader::WFSDestroyAppHandle(HAPP hApp)
{
    return (*m_fpWFSDestroyAppHandle)(hApp);
}

HRESULT WSXFSLoader::WFSExecute(HSERVICE hService, DWORD dwCommand, LPVOID lpCmdData, DWORD dwTimeOut, LPWFSRESULT * lppResult)
{
    return (*m_fpWFSExecute)(hService, dwCommand, lpCmdData, dwTimeOut, lppResult);
}

HRESULT WSXFSLoader::WFSFreeResult(LPWFSRESULT lpResult)
{
    return (*m_fpWFSFreeResult)(lpResult);
}

HRESULT WSXFSLoader::WFSGetInfo(HSERVICE hService, DWORD dwCategory, LPVOID lpQueryDetails, DWORD dwTimeOut, LPWFSRESULT * lppResult)
{
    return (*m_fpWFSGetInfo)(hService, dwCategory, lpQueryDetails, dwTimeOut, lppResult);
}

HRESULT WSXFSLoader::WFSIsBlocking()
{
    return (*m_fpWFSIsBlocking)();
}

HRESULT WSXFSLoader::WFSLock(HSERVICE hService, DWORD dwTimeOut, LPWFSRESULT * lppResult)
{
    return (*m_fpWFSLock)(hService, dwTimeOut, lppResult);
}

HRESULT WSXFSLoader::WFSOpen(LPSTR lpszLogicalName, HAPP hApp, LPSTR lpszAppID, DWORD dwTraceLevel, DWORD dwTimeOut, DWORD dwSrvcVersionsRequired, LPWFSVERSION lpSrvcVersion, LPWFSVERSION lpSPIVersion, LPHSERVICE lphService)
{
    return (*m_fpWFSOpen)(lpszLogicalName, hApp, lpszAppID, dwTraceLevel, dwTimeOut, dwSrvcVersionsRequired, lpSrvcVersion, lpSPIVersion, lphService);
}

HRESULT WSXFSLoader::WFSRegister(HSERVICE hService, DWORD dwEventClass, HWND hWndReg)
{
    return (*m_fpWFSRegister)(hService, dwEventClass, hWndReg);
}

HRESULT WSXFSLoader::WFSSetBlockingHook(XFSBLOCKINGHOOK lpBlockFunc, LPXFSBLOCKINGHOOK lppPrevFunc)
{
    return (*m_fpWFSSetBlockingHook)(lpBlockFunc, lppPrevFunc);
}

HRESULT WSXFSLoader::WFSStartUp(DWORD dwVersionsRequired, LPWFSVERSION lpWFSVersion)
{
    return (*m_fpWFSStartUp)(dwVersionsRequired, lpWFSVersion);
}

HRESULT WSXFSLoader::WFSUnhookBlockingHook()
{
    return (*m_fpWFSUnhookBlockingHook)();
}

HRESULT WSXFSLoader::WFSUnlock(HSERVICE hService)
{
    return (*m_fpWFSUnlock)(hService);
}

NS_AWP_DEVICE_WOSA_END

头文件定义

#pragma once

NS_AWP_DEVICE_WOSA_BEGIN

//WFM
typedef HRESULT(CALLBACK * WFMAllocateBufferProc)(ULONG, ULONG, LPVOID);
typedef HRESULT(CALLBACK * WFMAllocateMoreProc)(ULONG ulSize, LPVOID lpvOriginal, LPVOID * lppvData);
typedef HRESULT(CALLBACK * WFMFreeBufferProc)(LPVOID lpvData);
typedef HRESULT(CALLBACK * WFMGetTraceLevelProc)(HSERVICE hService, LPDWORD lpdwTraceLevel);
typedef HRESULT(CALLBACK * WFMKillTimerProc)(WORD wTimerID);
typedef HRESULT(CALLBACK * WFMOutputTraceDataProc)(LPSTR lpszData);
typedef HRESULT(CALLBACK * WFMReleaseDLLProc)(HPROVIDER hProvider);
typedef HRESULT(CALLBACK * WFMSetTimerProc)(HWND hWnd, LPVOID lpContext, DWORD dwTimeVal, LPWORD lpwTimerID);
typedef HRESULT(CALLBACK * WFMSetTraceLevelProc)(HSERVICE hService, DWORD dwTraceLevel);
//WFS
typedef HRESULT(CALLBACK * WFSAsyncCloseProc)(HSERVICE hService, HWND hWnd, LPREQUESTID lpRequestID);
typedef HRESULT(CALLBACK * WFSAsyncDeregisterProc)(HSERVICE hService, DWORD dwEventClass, HWND hWndReg, HWND hWnd, LPREQUESTID lpRequestID);
typedef HRESULT(CALLBACK * WFSAsyncExecuteProc)(HSERVICE hService, DWORD dwCommand, LPVOID lpCmdData, DWORD dwTimeOut, HWND hWnd, LPREQUESTID lpRequestID);
typedef HRESULT(CALLBACK * WFSAsyncGetInfoProc)(HSERVICE hService, DWORD dwCategory, LPVOID lpQueryDetails, DWORD dwTimeOut, HWND hWnd, LPREQUESTID lpRequestID);
typedef HRESULT(CALLBACK * WFSAsyncLockProc)(HSERVICE hService, DWORD dwTimeOut, HWND hWnd, LPREQUESTID lpRequestID);
typedef HRESULT(CALLBACK * WFSAsyncOpenProc)(LPSTR lpszLogicalName, HAPP hApp, LPSTR lpszAppID, DWORD dwTraceLevel, DWORD dwTimeOut, LPHSERVICE lphService, HWND hWnd, DWORD dwSrvcVersionsRequired, LPWFSVERSION lpSrvcVersion, LPWFSVERSION lpSPIVersion, LPREQUESTID lpRequestID);
typedef HRESULT(CALLBACK * WFSAsyncRegisterProc)(HSERVICE hService, DWORD dwEventClass, HWND hWndReg, HWND hWnd, LPREQUESTID lpRequestID);
typedef HRESULT(CALLBACK * WFSAsyncUnlockProc)(HSERVICE hService, HWND hWnd, LPREQUESTID lpRequestID);
typedef HRESULT(CALLBACK * WFSCancelAsyncRequestProc)(HSERVICE hService, REQUESTID RequestID);
typedef HRESULT(CALLBACK * WFSCancelBlockingCallProc)(DWORD dwThreadID);
typedef HRESULT(CALLBACK * WFSCleanUpProc)();
typedef HRESULT(CALLBACK * WFSCloseProc)(HSERVICE hService);
typedef HRESULT(CALLBACK * WFSDeregisterProc)(HSERVICE hService, DWORD dwEventClass, HWND hWndReg);
typedef HRESULT(CALLBACK * WFSDestroyAppHandleProc)(HAPP hApp);
typedef HRESULT(CALLBACK * WFSExecuteProc)(HSERVICE hService, DWORD dwCommand, LPVOID lpCmdData, DWORD dwTimeOut, LPWFSRESULT * lppResult);
typedef HRESULT(CALLBACK * WFSFreeResultProc)(LPWFSRESULT lpResult);
typedef HRESULT(CALLBACK * WFSGetInfoProc)(HSERVICE hService, DWORD dwCategory, LPVOID lpQueryDetails, DWORD dwTimeOut, LPWFSRESULT * lppResult);
typedef BOOL(CALLBACK * WFSIsBlockingProc)();
typedef HRESULT(CALLBACK * WFSLockProc)(HSERVICE hService, DWORD dwTimeOut, LPWFSRESULT * lppResult);
typedef HRESULT(CALLBACK * WFSOpenProc)(LPSTR lpszLogicalName, HAPP hApp, LPSTR lpszAppID, DWORD dwTraceLevel, DWORD dwTimeOut, DWORD dwSrvcVersionsRequired, LPWFSVERSION lpSrvcVersion, LPWFSVERSION lpSPIVersion, LPHSERVICE lphService);
typedef HRESULT(CALLBACK * WFSRegisterProc)(HSERVICE hService, DWORD dwEventClass, HWND hWndReg);
typedef HRESULT(CALLBACK * WFSSetBlockingHookProc)(XFSBLOCKINGHOOK lpBlockFunc, LPXFSBLOCKINGHOOK lppPrevFunc);
typedef HRESULT(CALLBACK * WFSStartUpProc)(DWORD dwVersionsRequired, LPWFSVERSION lpWFSVersion);
typedef HRESULT(CALLBACK * WFSUnhookBlockingHookProc)();
typedef HRESULT(CALLBACK * WFSUnlockProc)(HSERVICE hService);

public ref class WSXFSLoader
{
private:
    ULONG ulMemFlags = WFS_MEM_ZEROINIT | WFS_MEM_SHARE;
    HMODULE hDllLib;

    //WFM
    WFMAllocateBufferProc m_fpWFMAllocateBuffer;
    WFMAllocateMoreProc m_fpWFMAllocateMore;
    WFMFreeBufferProc m_fpWFMFreeBuffer;
    WFMGetTraceLevelProc m_fpWFMGetTraceLevel;
    WFMKillTimerProc m_fpWFMKillTimer;
    WFMOutputTraceDataProc m_fpWFMOutputTraceData;
    WFMReleaseDLLProc m_fpWFMReleaseDLL;
    WFMSetTimerProc m_fpWFMSetTimer;
    WFMSetTraceLevelProc m_fpWFMSetTraceLevel;
    //WFS
    WFSAsyncCloseProc m_fpWFSAsyncClose;
    WFSAsyncDeregisterProc m_fpWFSAsyncDeregister;
    WFSAsyncExecuteProc m_fpWFSAsyncExecute;
    WFSAsyncGetInfoProc m_fpWFSAsyncGetInfo;
    WFSAsyncLockProc m_fpWFSAsyncLock;
    WFSAsyncOpenProc m_fpWFSAsyncOpen;
    WFSAsyncRegisterProc m_fpWFSAsyncRegister;
    WFSAsyncUnlockProc m_fpWFSAsyncUnlock;
    WFSCancelAsyncRequestProc m_fpWFSCancelAsyncRequest;
    WFSCancelBlockingCallProc m_fpWFSCancelBlockingCall;
    WFSCleanUpProc m_fpWFSCleanUp;
    WFSCloseProc m_fpWFSClose;
    WFSDeregisterProc m_fpWFSDeregister;
    WFSDestroyAppHandleProc m_fpWFSDestroyAppHandle;
    WFSExecuteProc m_fpWFSExecute;
    WFSFreeResultProc m_fpWFSFreeResult;
    WFSGetInfoProc m_fpWFSGetInfo;
    WFSIsBlockingProc m_fpWFSIsBlocking;
    WFSLockProc m_fpWFSLock;
    WFSOpenProc m_fpWFSOpen;
    WFSRegisterProc m_fpWFSRegister;
    WFSSetBlockingHookProc m_fpWFSSetBlockingHook;
    WFSStartUpProc m_fpWFSStartUp;
    WFSUnhookBlockingHookProc  m_fpWFSUnhookBlockingHook;
    WFSUnlockProc m_fpWFSUnlock;

public:
    WSXFSLoader();
    ~WSXFSLoader();
    HRESULT WFMAllocateBuffer(ULONG ulSize, ULONG ulFlags, LPVOID * lppvData);
    HRESULT WFMAllocateMore(ULONG ulSize, LPVOID lpvOriginal, LPVOID * lppvData);
    HRESULT WFMFreeBuffer(LPVOID lpvData);
    HRESULT WFMGetTraceLevel(HSERVICE hService, LPDWORD lpdwTraceLevel);
    HRESULT WFMKillTimer(WORD wTimerID);
    HRESULT WFMOutputTraceData(LPSTR lpszData);
    HRESULT WFMReleaseDLL(HPROVIDER hProvider);
    HRESULT WFMSetTimer(HWND hWnd, LPVOID lpContext, DWORD dwTimeVal, LPWORD lpwTimerID);
    HRESULT WFMSetTraceLevel(HSERVICE hService, DWORD dwTraceLevel);
    HRESULT WFSAsyncClose(HSERVICE hService, HWND hWnd, LPREQUESTID lpRequestID);
    HRESULT WFSAsyncDeregister(HSERVICE hService, DWORD dwEventClass, HWND hWndReg, HWND hWnd, LPREQUESTID lpRequestID);
    HRESULT WFSAsyncExecute(HSERVICE hService, DWORD dwCommand, LPVOID lpCmdData, DWORD dwTimeOut, HWND hWnd, LPREQUESTID lpRequestID);
    HRESULT WFSAsyncGetInfo(HSERVICE hService, DWORD dwCategory, LPVOID lpQueryDetails, DWORD dwTimeOut, HWND hWnd, LPREQUESTID lpRequestID);
    HRESULT WFSAsyncLock(HSERVICE hService, DWORD dwTimeOut, HWND hWnd, LPREQUESTID lpRequestID);
    HRESULT WFSAsyncOpen(LPSTR lpszLogicalName, HAPP hApp, LPSTR lpszAppID, DWORD dwTraceLevel, DWORD dwTimeOut, LPHSERVICE lphService, HWND hWnd, DWORD dwSrvcVersionsRequired, LPWFSVERSION lpSrvcVersion, LPWFSVERSION lpSPIVersion, LPREQUESTID lpRequestID);
    HRESULT WFSAsyncRegister(HSERVICE hService, DWORD dwEventClass, HWND hWndReg, HWND hWnd, LPREQUESTID lpRequestID);
    HRESULT WFSAsyncUnlock(HSERVICE hService, HWND hWnd, LPREQUESTID lpRequestID);
    HRESULT WFSCancelAsyncRequest(HSERVICE hService, REQUESTID RequestID);
    HRESULT WFSCancelBlockingCall(DWORD dwThreadID);
    HRESULT WFSCleanUp();
    HRESULT WFSClose(HSERVICE hService);
    HRESULT WFSDeregister(HSERVICE hService, DWORD dwEventClass, HWND hWndReg);
    HRESULT WFSDestroyAppHandle(HAPP hApp);
    HRESULT WFSExecute(HSERVICE hService, DWORD dwCommand, LPVOID lpCmdData, DWORD dwTimeOut, LPWFSRESULT * lppResult);
    HRESULT WFSFreeResult(LPWFSRESULT lpResult);
    HRESULT WFSGetInfo(HSERVICE hService, DWORD dwCategory, LPVOID lpQueryDetails, DWORD dwTimeOut, LPWFSRESULT * lppResult);
    HRESULT WFSIsBlocking();
    HRESULT WFSLock(HSERVICE hService, DWORD dwTimeOut, LPWFSRESULT * lppResult);
    HRESULT WFSOpen(LPSTR lpszLogicalName, HAPP hApp, LPSTR lpszAppID, DWORD dwTraceLevel, DWORD dwTimeOut, DWORD dwSrvcVersionsRequired, LPWFSVERSION lpSrvcVersion, LPWFSVERSION lpSPIVersion, LPHSERVICE lphService);
    HRESULT WFSRegister(HSERVICE hService, DWORD dwEventClass, HWND hWndReg);
    HRESULT WFSSetBlockingHook(XFSBLOCKINGHOOK lpBlockFunc, LPXFSBLOCKINGHOOK lppPrevFunc);
    HRESULT WFSStartUp(DWORD dwVersionsRequired, LPWFSVERSION lpWFSVersion);
    HRESULT WFSUnhookBlockingHook();
    HRESULT WFSUnlock(HSERVICE hService);
};

NS_AWP_DEVICE_WOSA_END

 

posted @ 2018-06-19 10:43  广林  阅读(786)  评论(0编辑  收藏  举报