wince如何通知设备已经mount

wince如何通知设备已经mount
应用程序怎样知道何时设备可以使用,即可以成功的在设备上进行文件操作,这就涉及到mount和mount通知的问题。这部分包括两个方面的内容:
1、mount的实现和通知。
2、获取mount的通知。
mount的实现和通知都是在FSD中实现的。FSD中Export出去的函数中,有一个是XXX_MountDisk函数,如MyFSD_MountDisk函数,该函数中通过向设备驱动发送命令实现mount,然后
调用函数FSDMGR_AdvertiseInterface通知mount。
获取mount的通知是在应用程序或者专门的监听程序中实现的,具体实现方法是:
1、创建一个message queue。
2、通过函数RequestDeviceNotifications将设备的GUID和message queue进行注册。
3、等待message queue中的消息,并进行处理。
示例代码如下:
// Define and set a queue options
MSGQUEUEOPTIONS sQueOpts;
sQueOpts.dwSize = sizeof( MSGQUEUEOPTIONS );
sQueOpts.dwFlags = MSGQUEUE_NOPRECOMMIT;
sQueOpts.dwMaxMessages = 0;
sQueOpts.cbMaxMessage = sizeof( DEVDETAIL );
sQueOpts.bReadAccess = TRUE;
// Create message queue
HANDLE hQueue = ::CreateMsgQueue( NULL, &sQueOpts );
// Requests notifications for the appearance and disappearance of device interfaces.
HANDLE hHandle = ::RequestDeviceNotifications( &UDFS_MOUNT_GUID, hQueue, TRUE );
if ( INVALID_HANDLE_VALUE == hHandle ) {
// Error process
return;
}
// Wait for event
DWORD dwRet = ::WaitForSingleObject( hQueue, INFINITE );
if ( WAIT_OBJECT_0 != dwRet ) {
// Error process
return;
}
// Normal process

你可能感兴趣的:(mount)