Wednesday, September 7, 2011

IStorage

I was doing some development for AD RMS, which is creating a dll for 3d party applications to be able to use AD RMS features, i was doing it based on AD RMS SDK. so i had a lot of problems with Windows cryptic C/C++, but i managed around. for me it was the first time I used VC++ for something very complicated like AD RMS development.

During my development I stumbled upon one function. and the function is


WINOLEAPI StgCreateStorageEx(
  __in   const WCHAR *pwcsName,
  __in   DWORD grfMode,
  __in   STGFMT stgfmt,
  __in   DWORD grfAttrs,
  __in   STGOPTIONS *pStgOptions,
  __in   PSECURITY_DESCRIPTOR *pSecurityDescriptor,
  __in   REFIID riid,
  __out  void **ppObjectOpen
);
and the funny thing about it  is the last parameter description. And quoting from Microsoft 
"ppObjectOpen [out] A pointer to an interface pointer variable that receives a pointer for an interface on the new storage object; contains NULL if operation failed."
I wonder why Microsoft stopped speaking English any more. and for the same reason I prefer to develop under Unix/Linux platforms where there is no terms like the mentioned above and every thing is understandable, and organized 




1 comment:

  1. What's so difficult to understand? It is a pointer to interface pointer. And this pointer interface points to the pointer that interfaces with interface. You take this pointer and interface, shove it into Windows API and you get what you usually get from Windows.

    ReplyDelete