Bonjour
Je voulais savoir si quelqu'un avait les compétences et le temps pour m'aider à traduire ce bout de code en delphi.
J'avoue que mes connaissances sont limitées de ce coté.
Merci d'avance à celui ou celle ou ceux qui prendront le temps de m'aider.
A+
JP
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 HANDLE MPUSBOpen(DWORD instance, // Input PCHAR pVID_PID, // Input PCHAR pEP, // Input DWORD dwDir, // Input DWORD dwReserved) // Input <Future Use> { char path[MAX_PATH]; DWORD dwReqLen; HANDLE handle; handle = INVALID_HANDLE_VALUE; // Check arguments first if((pVID_PID != NULL) && ((dwDir == MP_WRITE) || (dwDir == MP_READ))) { char path_io[MAX_PATH]; strcpy(path_io,path); if(pEP != NULL) strcat(path_io,pEP); if(dwDir == MP_READ) { handle = CreateFile(path_io, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL); } else { handle = CreateFile(path_io, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL); }//end if }//end if return handle; }//end MPUSBOpen(...)
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 DWORD MPUSBRead(HANDLE handle, // Input PVOID pData, // Output DWORD dwLen, // Input PDWORD pLength, // Output DWORD dwMilliseconds) // Input { BOOL bResult; DWORD nBytesRead; OVERLAPPED gOverlapped; DWORD dwResult; dwResult = MPUSB_FAIL; // set up overlapped structure fields gOverlapped.Internal = 0; gOverlapped.InternalHigh = 0; gOverlapped.Offset = 0; gOverlapped.OffsetHigh = 0; gOverlapped.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); if(pLength != NULL)*pLength = 0; // attempt an asynchronous read operation bResult = ReadFile(handle,pData,dwLen,&nBytesRead,&gOverlapped); if(!bResult) { // deal with the error code switch (GetLastError()) { case ERROR_HANDLE_EOF: { // we have reached the end of the file // during the call to ReadFile break; } case ERROR_IO_PENDING: { // asynchronous i/o is still in progress switch(WaitForSingleObject(gOverlapped.hEvent, dwMilliseconds)) { case WAIT_OBJECT_0: // check on the results of the asynchronous read // and update the nBytesRead... bResult = GetOverlappedResult(handle, &gOverlapped, &nBytesRead, FALSE); if(!bResult) { printf("Error: %d", GetLastError()); } else { if(pLength != NULL) *pLength = nBytesRead; dwResult = MPUSB_SUCCESS; }//end if else break; case WAIT_TIMEOUT: CancelIo(handle); break; default: CancelIo(handle); break; }//end switch }//end case default: CancelIo(handle); break; }//end switch } else { if(pLength != NULL) *pLength = nBytesRead; dwResult = MPUSB_SUCCESS; }//end if else ResetEvent(gOverlapped.hEvent); CloseHandle(gOverlapped.hEvent); return dwResult; }//end MPUSBRead
Partager