/** A function called by the local media subsystem to deal with a request; this is implemented by the generic layer of the LFFS media driver. The implementation delegates the handling of reading, writing and erasing to the specific layer's DoRead(), DoWrite() and DoErase() functions respectively. @param aRequest An object that encapsulates information about the request. @return A value indicating the result: KErrNone, if the request has been sucessfully initiated; KErrNotSupported, if the request cannot be handled by the device; KMediaDriverDeferRequest, if the request cannot be handled immediately because of an outstanding request (this request will be deferred until the outstanding request has completed); otherwise one of the other system-wide error codes. @see DMediaDriverFlash::DoRead() @see DMediaDriverFlash::DoWrite() @see DMediaDriverFlash::DoErase() */ TInt DMediaDriverFlash::Request(TLocDrvRequest& m) { TInt r=KErrNotSupported; TInt id=m.Id(); __KTRACE_OPT(KLOCDRV,Kern::Printf(">DMediaDriverFlash::Request %d",id)); if (id==DLocalDrive::ECaps) { TLocalDriveCapsV4& c=*(TLocalDriveCapsV4*)m.RemoteDes(); r=Caps(c); c.iSize=m.Drive()->iPartitionLen; c.iPartitionType=m.Drive()->iPartitionType; SetTotalSizeInBytes(c); return r; } switch (id) { case DLocalDrive::ERead: if (iReadReq) return KMediaDriverDeferRequest; // read already in progress so defer this one iReadReq=&m; r=DoRead(); if (r!=KErrNone) iReadReq=NULL; break; case DLocalDrive::EWrite: if (iWriteReq) return KMediaDriverDeferRequest; // write already in progress so defer this one iWriteReq=&m; r=DoWrite(); if (r!=KErrNone) iWriteReq=NULL; break; case DLocalDrive::EFormat: if (iEraseReq) return KMediaDriverDeferRequest; // erase already in progress so defer this one iEraseReq=&m; r=DoErase(); if (r!=KErrNone) iEraseReq=NULL; break; case DLocalDrive::EEnlarge: case DLocalDrive::EReduce: default: r=KErrNotSupported; break; } __KTRACE_OPT(KLOCDRV,Kern::Printf("<DMediaDriverFlash::Request %d",r)); if (r<0) DMediaDriver::Complete(m,r); return r; }
static HRESULT WINAPI RecycleBinMenu_InvokeCommand(IContextMenu2 *iface, LPCMINVOKECOMMANDINFO pici) { RecycleBinMenu *This = impl_from_IContextMenu2(iface); LPCSTR verb = pici->lpVerb; if(IS_INTRESOURCE(verb)) { switch(LOWORD(verb)) { case IDM_RECYCLEBIN_ERASE: DoErase(This); break; case IDM_RECYCLEBIN_RESTORE: DoRestore(This); break; default: return E_NOTIMPL; } } return S_OK; }