| Precautions When Passing Security AttributesLast reviewed: November 2, 1995Article ID: Q94839 | 
| The information in this article applies to: 
 
 SUMMARYAll Win32 APIs that allow security to be specified take a parameter of type LPSECURITY_ATTRIBUTES as the means to attach the security descriptor. However, it is a common error to pass a PSECURITY_DESCRIPTOR type to such functions instead. Because PSECURITY_DESCRIPTOR is of type LPVOID (for opaque data-type reasons), by C Language definition, it is implicitly converted to the correct type. Therefore, the compiler does not generate any warnings; however, unexpected run-time errors will result. 
 MORE INFORMATIONBelow is a correct example of creating a named pipe with a security descriptor attached. 
 Sample Code
    saSecurityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
   saSecurityAttributes.lpSecurityDescriptor = psdAbsoluteSD;
   saSecurityAttributes.bInheritHandle = FALSE;
   hPipe = CreateNamedPipe(TEST_PIPE_NAME,
                           PIPE_ACCESS_DUPLEX,
   (PIPE_TYPE_BYTE|PIPE_READMODE_BYTE|PIPE_WAIT),
                           100,  // maximum instances
                           0,    // output buffer, sized as needed
                           0,    // input buffer, sized as needed
                           100,  // timeout in milliseconds
   (LPSECURITY_ATTRIBUTES)&saSecurityAttributes);
   if( INVALID_HANDLE_VALUE == hPipe )
   { // handle error
   }
 | 
| Additional reference words: 3.10 3.50 
 © 1998 Microsoft Corporation. All rights reserved. Terms of Use. |