寻找从 dll 导入vssapi.dll
,
查看GetSnapshotDeviceName
函数,DLL 导出查看器给了我:
protected: long __cdecl CVssWriter::GetSnapshotDeviceName(unsigned short const * __ptr64,unsigned short const * __ptr64 * __ptr64)const __ptr64
protected: long __cdecl CVssJetWriter::GetSnapshotDeviceName(unsigned short const * __ptr64,unsigned short const * __ptr64 * __ptr64)const __ptr64
假设我想要第一个,我如何声明 dll 导入,例如:
[DllImport("vssapi.dll", EntryPoint = "CVssWriter::GetSnapshotDeviceName", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
private static extern uint GetSnapshotDeviceName(string wszOriginalVolume, out string ppwszSnapshotDevice);
[有或没有 ExactSpelling] 总是给我
无法在 DLL“vssapi.dll”中找到名为“CVssWriter::GetSnapshotDeviceName”的入口点
错误。冒号的变化(删除等)和颠倒名称(作为装饰的版本)也没有给我带来快乐。
我知道它可以使用修饰名称或序数来工作,但我希望代码具有合理的可移植性(decls 依赖于编译器,而且我从未见过任何东西说序数在更新中也将保持不变)。
是的,我已经知道有了这个 dll,它不会移植到 Vista 之前的版本……我可以忍受。
也听说AlphaVSS
过 - 但我需要的是使用航空母舰在湖上钓鱼(他们真的需要让它如此笨拙地使用吗?)