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.

85 lines
1.5 KiB

  1. /*++
  2. Copyright (c) 1999-2000 Microsoft Corporation
  3. Module Name:
  4. drfile
  5. Abstract:
  6. This module provides generic device/file handle operation
  7. Author:
  8. Joy Chik 11/1/99
  9. Revision History:
  10. --*/
  11. #include <precom.h>
  12. #define TRC_FILE "DrFile"
  13. #include "drfile.h"
  14. #include "drdev.h"
  15. #ifdef OS_WINCE
  16. #include "filemgr.h"
  17. #endif
  18. ///////////////////////////////////////////////////////////////
  19. //
  20. // DrFile Members
  21. //
  22. DrFile::DrFile(DrDevice *Device, ULONG FileId, DRFILEHANDLE FileHandle) {
  23. DC_BEGIN_FN("DrFile::DrFile");
  24. ASSERT(Device != NULL);
  25. _FileId = FileId;
  26. _FileHandle = FileHandle;
  27. _Device = Device;
  28. DC_END_FN();
  29. }
  30. DrFile::~DrFile() {
  31. DC_BEGIN_FN("DrFile::~DrFile")
  32. ASSERT(_FileHandle == INVALID_HANDLE_VALUE);
  33. DC_END_FN();
  34. }
  35. ULONG DrFile::GetDeviceType() {
  36. return _Device->GetDeviceType();
  37. }
  38. BOOL DrFile::Close() {
  39. DC_BEGIN_FN("DrFile::Close");
  40. if (_FileHandle != INVALID_HANDLE_VALUE) {
  41. #ifndef OS_WINCE
  42. if (CloseHandle(_FileHandle)) {
  43. #else
  44. if (CECloseHandle(_FileHandle)) {
  45. #endif
  46. _FileHandle = INVALID_HANDLE_VALUE;
  47. return TRUE;
  48. } else {
  49. TRC_ERR((TB, _T("Close returned %ld."), GetLastError()));
  50. _FileHandle = INVALID_HANDLE_VALUE;
  51. return FALSE;
  52. }
  53. } else {
  54. //
  55. // No need to close the handle
  56. //
  57. return TRUE;
  58. }
  59. DC_END_FN();
  60. }