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. Vue.js库的第一天的学习

    一,vue.js简介 Vue.js可以作为一个js库来使用,也可以用它全套的工具来构建系统界面,这些可以根据项目的需要灵活选择 所以说, vue.js是一套构建用户界面的渐进式框架 Vue.js的核心 ...

  2. 在线激活win10、win8/8.1和office2019、2016、2013等的kms激活工具

    在线激活win10.win8/8.1和office2019.2016.2013等的kms激活工具 MicroKMS神龙版能激活win10.win8/8.1.win7以及server2008/2012/ ...

  3. struts 学习03

    jdk下载: 使用注解: @ParenPackage(value="struts-default") @Namespace(value="/) @Action(value ...

  4. js 对象,数组,字符串,相互转换

    1:对象转换数组 let obj = {'val1':1, 'val2':2, 'val3':3, 'val4':4}; var arr = [] for (let i in obj) { //取键 ...

  5. 软件工程---作业(one)

    (1) 回顾你过去将近3年的学习经历 1.1 有序列表项一当初你报考的时候,是真正喜欢计算机这个专业吗? 自己填写来着,对这个专业也不是特别了解:导致后续学习很差 1.2 有序列表项二你现在后悔选择了 ...

  6. linux文件删除原理

    文件删除的原理 linux的文件名是存在父目录的block里面的,并指向这个文件的inode节点,这个文件的inode节点在标记指向存放这个文件的block的数据块.我们删除文件,实际上不是清除ino ...

  7. JDBC url连接字符串错误1

    String url="jdbc:mysql://127.0.0.1:3306/northwind?useUnicode=true&characterEncoding=utf-8&a ...

  8. CentOS 7 配置静态IP后不生效 & Job for network.service failed

    参考:http://tieba.baidu.com/p/3233996339#57290767555l 在CentOS中配置静态IP后不生效. 解决办法:将/etc/sysconfig/network ...

  9. [转] Ramda 函数库参考教程

    学习函数式编程的过程中,我接触到了 Ramda.js. 我发现,这是一个很重要的库,提供了许多有用的方法,每个 JavaScript 程序员都应该掌握这个工具. 你可能会问,Underscore 和  ...

  10. typora画图

    https://steemit.com/utopian-io/@jubi/typora-typora-tutorial-exquisite-graph https://support.typora.i ...