Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.3 KiB

  1. import "unknwn.idl";
  2. cpp_quote("DEFINE_GUID(CLSID_FileHandleCache, 0xa93b88df, 0xef9d, 0x420c, 0xb4, 0x69, 0xce, 0x07, 0x4e, 0xbe, 0x94, 0xbc);")
  3. cpp_quote("DEFINE_GUID(IID_IFileHandleCache, 0x3017e0e1, 0x94d6, 0x4896, 0xbc, 0x57, 0xb2, 0xdf, 0x75, 0x92, 0xd1, 0x75);")
  4. typedef struct
  5. {
  6. // New lock description data
  7. //
  8. DWORD m_dwAccess;
  9. DWORD m_dwLockType;
  10. DWORD m_dwLockScope;
  11. DWORD m_dwSecondsTimeout;
  12. [unique, string] LPWSTR m_pwszResourceString;
  13. [unique, string] LPWSTR m_pwszOwnerComment;
  14. } SNewLockData;
  15. typedef struct
  16. {
  17. // Lock handle description
  18. //
  19. DWORD_PTR h;
  20. DWORD dwProcessID;
  21. } SLockHandleData;
  22. [
  23. object,
  24. uuid(3017e0e1-94d6-4896-bc57-b2df7592d175),
  25. pointer_default(unique)
  26. ]
  27. interface IFileHandleCache : IUnknown {
  28. HRESULT HrRegisterWorkerProcess([in] DWORD dwProcessId);
  29. HRESULT HrGetGUIDString( [in] UINT cchBufferLen,
  30. [out, size_is(cchBufferLen)] WCHAR * pwszGUIDString,
  31. [out] UINT * pcchGUIDString);
  32. HRESULT HrGetNewLockData([in] DWORD_PTR hFile,
  33. [in] DWORD dwProcessId,
  34. [in] DWORD dwSid,
  35. [in, size_is(dwSid)] BYTE * pbSid,
  36. [in] SNewLockData * pnld,
  37. [in] UINT cchBufferLen,
  38. [out, size_is(cchBufferLen)] WCHAR * pwszLockToken,
  39. [out] UINT * pcchLockToken);
  40. HRESULT HrGetLockData([in] LARGE_INTEGER liLockID,
  41. [in] DWORD dwSid,
  42. [in, size_is(dwSid)] BYTE * pbSid,
  43. [unique, in, string] LPCWSTR pwszPath,
  44. [in] DWORD dwTimeout,
  45. [out] SNewLockData * pnld,
  46. [out] SLockHandleData * plhd,
  47. [in] UINT cchBufferLen,
  48. [out, size_is(cchBufferLen)] WCHAR * pwszLockToken,
  49. [out] UINT * pcchLockToken);
  50. HRESULT HrCheckLockID([in] LARGE_INTEGER liLockID,
  51. [in] DWORD dwSid,
  52. [in, size_is(dwSid)] BYTE * pbSid,
  53. [unique, in, string] LPCWSTR pwszPath);
  54. HRESULT HrDeleteLock([in] LARGE_INTEGER liLockID);
  55. HRESULT HrGetAllLockDataForName([unique, in, string] LPCWSTR pwszPath,
  56. [in] DWORD dwLockType,
  57. [out] DWORD * pdwLocksFound,
  58. [out, size_is( , *pdwLocksFound)] SNewLockData ** ppNewLockDatas,
  59. [out, size_is( , *pdwLocksFound)] LPWSTR ** ppwszLockTokens);
  60. };