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, '\\') + ) = ;
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

msxfs.dll函数加载代码的更多相关文章

  1. dll的加载方式主要分为两大类,显式和隐式链接

    之前简单写过如何创建lib和dll文件及简单的使用(http://blog.csdn.net/betabin/article/details/7239200).现在先再深入点写写dll的加载方式. d ...

  2. DLL内存加载

    动态加载dll 功能:      把一个处于内存里的dll直接加载并且使用. 用途:      免杀(静态文件查杀),外挂(防止游戏自己hook了loadlibrary等函数),以及其他. 原理:  ...

  3. [整理]DLL延时加载 && 设置进程私有环境变量

    DLL延时加载鉴于静态和动态加载之间,即无需在代码中显示加载但它内队依然是动态加载的方式只是系统帮处理了.这样做好处是: 1. 可以加快启动时间(因为它是动态加载在需要的时间加载), 2. 减小编写L ...

  4. 固定dll的加载基址的方法

    调试dll的时候会有一件事情比较烦人,就是dll加载的地址不会很固定(默认设置下编译的dll基址总是0x10000000,多个同基址的dll加载时,后面的肯定会被重定位),这给前后多次调试时对比分析结 ...

  5. C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件

    原文:C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件 这两天忙着把框架改为支持加载C++和Delphi的插件,来不及更新blog了.      原来的写的框架只支持c#插件,这个好做 ...

  6. PHP: php_ldap.dll不能加载解决方案

    PHP: php_ldap.dll不能加载解决方案 php.ini中开启 ldap的扩展后,重启服务:phpinfo();中没有ldap apache_error.log 提示:PHP Warning ...

  7. DLL延时加载技术与资源释放

    DLL延时加载技术与资源释放 0x00 前言 诸如调用非Windows的第三方库,我们或许会使用到dll文件,而这个时候原本程序运行需要相应的dll文件才能加载启动.通过DLL延时加载技术,使用延时加 ...

  8. Windows7 安装vs2015 之后 调试Web项目IIS启动不了 aspnetcore.dll未能加载

    安装windows企业版,整整折腾了两天了,一个本身家里网络环境不好,时不时掉线,终于披荆斩棘,克服了所有困难,结果VS2015 EnterPrise 版本在调试Web环境的时候,始终在任务栏里找不到 ...

  9. IE报错:模块"scrrun.dll"已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005

    在我的win10系统上打开某内部网页登录的时候弹出'模块"scrrun.dll"已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005'报错信息, ...

随机推荐

  1. app每次更新版本时调用js代码提示用户下载更新

    var url = '网络地址'; //APP升级 var wait; function update(){ //判断操作系统 var system = 'android'; if(mui.os.io ...

  2. css-reset 代码

    最常用 * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } *:bef ...

  3. 分布式系列十一: Redis进阶

    分布式锁 数据库 数据库是使用唯一索引不允许重复的特性(或自定义实现如乐观锁). 但持有锁的进程如果释放锁时异常则容易导致死锁. zookeeper 使用临时节点, watcher可以获得节点被删除的 ...

  4. linux常用命令【原创】

    查看文件内容-while: cat 1.txt|while read line;do echo $line;done while read line; do echo $line; done < ...

  5. Vue + Element UI项目初始化

    1.安装相关组件 1.1安装Node 检查本地是否安装node node -v 如果没有安装,从Node官网下载 1.2安装npm npm -v 如果没有安装:使用该指令安装: npm install ...

  6. ubuntu系统检测端口占用情况

    参考链接: https://blog.csdn.net/qwfys200/article/details/80837036 命令: $ sudo netstat -tupln

  7. Google Python命名规范

    Google Python命名规范 module_name,  模块 package_name,  包 ClassName,  类 method_name,  方法 ExceptionName,    ...

  8. js逗号表达式

    在js中的某些场景,","是一种运算符号,只不过他的优先级要低于普通的原酸符,在变量声明或者return中,经常看到逗号表达式. 声明变量: var a=1,b=2,c=3; co ...

  9. 使用npm命令,而不用cnpm命令,也可以得到同样的体验

    以前大家都知道使用cnpm命令来替代npm,可以大大提升下载各种包的速度.例如: npm install -g cnpm --registry=https://registry.npm.taobao. ...

  10. 在django中使用redis

    方式一 utils文件夹下,简历redis_pool.py import redis POOL = redis.ConnectionPool(host='127.0.0.1', port=6379,p ...