@@ -28,9 +28,52 @@ internal class ApiService : IApiService
2828 #endregion
2929
3030 #region Implementation
31- public SafeFileHandle CreateWriteConnection ( string deviceId ) => CreateConnection ( deviceId , FileAccessRights . GenericRead | FileAccessRights . GenericWrite , APICalls . FileShareRead | APICalls . FileShareWrite , APICalls . OpenExisting ) ;
31+ public SafeFileHandle CreateFile ( string lpFileName , FileAccessRights dwDesiredAccess , uint dwShareMode , IntPtr lpSecurityAttributes , uint dwCreationDisposition , uint dwFlagsAndAttributes , IntPtr hTemplateFile )
32+ {
33+ const string LOG_FORMAT =
34+ "Calling {call} Area: {area} for DeviceId: {lpFileName}. " +
35+ "Desired Access: {dwDesiredAccess}. " +
36+ "Share mode: {dwShareMode}. " +
37+ "Creation Disposition: {dwCreationDisposition}. " +
38+ "File Flag: {dwFlagsAndAttributes}" ;
39+ Logger . LogInformation (
40+ LOG_FORMAT ,
41+ nameof ( APICalls . CreateFile ) ,
42+ nameof ( ApiService ) ,
43+ lpFileName ,
44+ dwDesiredAccess ,
45+ dwShareMode ,
46+ dwCreationDisposition ,
47+ dwFlagsAndAttributes ) ;
48+ return APICalls . CreateFile (
49+ lpFileName ,
50+ dwDesiredAccess ,
51+ dwShareMode ,
52+ lpSecurityAttributes ,
53+ dwCreationDisposition ,
54+ dwFlagsAndAttributes ,
55+ hTemplateFile ) ;
56+ }
3257
33- public SafeFileHandle CreateReadConnection ( string deviceId , FileAccessRights desiredAccess ) => CreateConnection ( deviceId , desiredAccess , APICalls . FileShareRead | APICalls . FileShareWrite , APICalls . OpenExisting ) ;
58+ public SafeFileHandle CreateWriteConnection ( string deviceId ) =>
59+ CreateFile (
60+ deviceId ,
61+ FileAccessRights . GenericRead | FileAccessRights . GenericWrite ,
62+ APICalls . FileShareRead | APICalls . FileShareWrite ,
63+ IntPtr . Zero ,
64+ APICalls . OpenExisting ,
65+ FILE_FLAG_OVERLAPPED ,
66+ IntPtr . Zero ) ;
67+
68+ public SafeFileHandle CreateReadConnection ( string deviceId , FileAccessRights desiredAccess ) =>
69+ CreateFile (
70+ deviceId ,
71+ desiredAccess ,
72+ APICalls . FileShareRead | APICalls . FileShareWrite ,
73+ IntPtr . Zero ,
74+ APICalls . OpenExisting ,
75+ FILE_FLAG_OVERLAPPED ,
76+ IntPtr . Zero ) ;
3477
3578 public bool AGetCommState ( SafeFileHandle hFile , ref Dcb lpDCB ) => GetCommState ( hFile , ref lpDCB ) ;
3679 public bool APurgeComm ( SafeFileHandle hFile , int dwFlags ) => PurgeComm ( hFile , dwFlags ) ;
@@ -40,14 +83,6 @@ internal class ApiService : IApiService
4083 public bool ASetCommState ( SafeFileHandle hFile , [ In ] ref Dcb lpDCB ) => SetCommState ( hFile , ref lpDCB ) ;
4184 #endregion
4285
43- #region Private Methods
44- private SafeFileHandle CreateConnection ( string deviceId , FileAccessRights desiredAccess , uint shareMode , uint creationDisposition )
45- {
46- Logger . LogInformation ( "Calling {call} Area: {area} for DeviceId: {deviceId}. Desired Access: {desiredAccess}. Share mode: {shareMode}. Creation Disposition: {creationDisposition}" , nameof ( APICalls . CreateFile ) , nameof ( ApiService ) , deviceId , desiredAccess , shareMode , creationDisposition ) ;
47- return APICalls . CreateFile ( deviceId , desiredAccess , shareMode , IntPtr . Zero , creationDisposition , FILE_FLAG_OVERLAPPED , IntPtr . Zero ) ;
48- }
49- #endregion
50-
5186 #region DLL Imports
5287 [ DllImport ( "kernel32.dll" , SetLastError = true ) ]
5388 private static extern bool PurgeComm ( SafeFileHandle hFile , int dwFlags ) ;
0 commit comments