APPLICATION STREAMING APIS

A stream’s IO is performed by a combination of functions, as shown in Table 32-5. You can use the API functions in an application performing IO on the stream. The calls require the stream’s handle, as returned from CreateFile, a data buffer pointer, and some indication of how much data is moved. The device manager takes those parameters and passes them to the corresponding driver function along with the open context for the stream pointed to by the handle. The driver functions are not what are called by the user application. The driver functions are an interface to the Driver Manager, not an application.

TABLE 32-5: Stream IO API

API Driver Example API call
CreateFile XXX_Open
HANDLE hStr =  
CreateFile(_T("MDY1:"), GENERIC_READ
 | GENERIC_WRITE,0, NULL,OPEN_EXISTING, NULL,0);
ReadFile XXX_Read
BOOL rs = 
ReadFile(hStr,bufferIn , 12, &dw, NULL);
WriteFile XXX_Write
BOOL rs = 
WriteFile(hStr, bufferOut , 12 &dw,NULL);
DeviceIOControl XXX_IOControl
BOOL rs = 
DeviceIoControl(hStr,IOCTL_NO,NULL,0,
NULL, 0,&dw,NULL);
CloseHandle XXX_Close
BOOL res = CloseHandle(hStr);

In the preceding examples the buffers are pointers to storage in the application. The 12 parameter is the number of bytes to pass from or to the buffer. The actual number of bytes, especially for the read, may be different as indicated by the returned value of dw. With the DeviceIOControl call, IOCTL_NO is the number of the IOCTL to be actioned by the driver. All API functions ...

Get Professional Windows® Embedded Compact 7 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.