Important: |
---|
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |
This function is called by the network address translation (NAT) driver for each packet received during a session controlled by a NAT editor.
Syntax
NTSTATUS DataHandler( PVOID InterfaceHandle, PVOID SessionHandle, PVOID DataHandle, PVOID EditorContext, PVOID EditorSessionContext, PIPRCVBUF RecvBuffer, ULONG DataOffset ) |
Parameters
- InterfaceHandle
-
[in] Handle to an interface.
- SessionHandle
-
[in] Handle to the session. Use this handle when calling the QueryInfoSessionfunction.
- DataHandle
-
[in] Handle to the per-packet data context. Use this handle when calling the EditSessionfunction.
- EditorContext
-
[in] Pointer to a context that the NAT editor supplied when the editor called the RegisterEditorfunction.
- EditorSessionContext
-
[in] Pointer to the context of the session mapping that the editor supplied when the editor called the CreateHandlerfunction.
- RecvBuffer
-
[in] Pointer to an IPRcvBufstructure that specifies the received packet data.
- DataOffset
-
[in] Unsigned long integer that specifies the offset of the protocol data contained in RecvBuffer.
Return Value
STATUS_SUCCESS indicates success. A non-zero value indicates failure.
Remarks
This function is optional. Not all protocol editors need to implement this function.
The following code example shows an example of a DataHandlerfunction.
Copy Code | |
---|---|
NTSTATUS EditorForwardDataHandler( IN PVOID InterfaceHandle, IN PVOID SessionHandle, IN PVOID DataHandle, IN PVOID EditorContext, IN PVOID EditorSessionContext, IN PIPRCVBUF RecvBuffer, IN ULONG DataOffset ) { #define BUFFER_LEN 64 PIPRCVBUF pRcvBuf = RecvBuffer; TCHAR szTextBuffer[BUFFER_LEN]; while (pRcvBuf) { _sntprintf(szTextBuffer, BUFFER_LEN, TEXT(" ipr_buf: 0x%X, size: %u\r\n"), pRcvBuf, pRcvBuf->ipr_size); szTextBuffer[BUFFER_LEN-1] = TEXT('\0'); // Guarantee null-termination OutputDebugString(szTextBuffer); pRcvBuf = pRcvBuf->ipr_next; } return STATUS_SUCCESS; } |
Requirements
Header | natedit.h |
Library | coredll.dll |
Windows Embedded CE | Windows CE 3.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |