AllocateClientBuffer function

Allocates a buffer in the client's address space. Buffers allocated in the client's address space are used to hold information returned to the client from an authentication package.


NTSTATUS AllocateClientBuffer(
  _In_  PLSA_CLIENT_REQUEST ClientRequest,
  _In_  ULONG               LengthRequired,
  _Out_ PVOID               *ClientBaseAddress


ClientRequest [in]

Pointer to an opaque LSA_CLIENT_REQUEST data structure that contains information about the LSA client's authentication request. A custom authentication package should pass in the value received during the client's call to the function, such as LsaApCallPackage or LsaApLogonUser, that returns the output parameter.

LengthRequired [in]

Length of the buffer needed, in bytes.

ClientBaseAddress [out]

Pointer that receives the address of the buffer. This address is the virtual address of the buffer within the client process, not in the current process.

Return value

If the function succeeds, the return value is STATUS_SUCCESS.

If the function fails, the return value is an NTSTATUS code, which can be the following value or one of the LSA Policy Function Return Values.

Return codeDescription

The client process does not have an adequate memory quota to allocate the buffer.


The LsaNtStatusToWinError function converts an NTSTATUS code to a Windows error code.


The authentication package or the client process must later free the buffer. The authentication process can free the buffer by using the FreeClientBuffer dispatch routine. The client process can free the buffer by using the LsaFreeReturnBuffer function.


Minimum supported client

Windows XP [desktop apps only]

Minimum supported server

Windows Server 2003 [desktop apps only]



See also