@@ -28,9 +28,52 @@ internal class ApiService : IApiService
28
28
#endregion
29
29
30
30
#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
+ }
32
57
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 ) ;
34
77
35
78
public bool AGetCommState ( SafeFileHandle hFile , ref Dcb lpDCB ) => GetCommState ( hFile , ref lpDCB ) ;
36
79
public bool APurgeComm ( SafeFileHandle hFile , int dwFlags ) => PurgeComm ( hFile , dwFlags ) ;
@@ -40,14 +83,6 @@ internal class ApiService : IApiService
40
83
public bool ASetCommState ( SafeFileHandle hFile , [ In ] ref Dcb lpDCB ) => SetCommState ( hFile , ref lpDCB ) ;
41
84
#endregion
42
85
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
-
51
86
#region DLL Imports
52
87
[ DllImport ( "kernel32.dll" , SetLastError = true ) ]
53
88
private static extern bool PurgeComm ( SafeFileHandle hFile , int dwFlags ) ;
0 commit comments